auslesen
ca
- php
Hallo,
ich hätte mal eine frage.
Schaut Ihr euch das mal bitte an ich weiß nicht weiter.
// in der Classe
PHP-Code:
function Status1()
{
$myDB =& new DB;
$aReturn = array();
$sql = "SELECT s_id, s_name FROM im_status ORDER By s_id";
$myDB->query($sql);
while($myDB->next_record())
{
//$aReturn[] = $myDB->f('s_name');
$aReturn[] = $myDB->f('s_id');
}
return $aReturn;
}
PHP-Code:
<table border="0">
<?php
//Status
$oStatus = new Status();
$aStatus = $oStatus->Status1()
//Status
for($j=0; $j<count($aStatus); $j++)
{
?>
<tr>
<td>
// hier bei Value soll die ID hin. Und ich möchte den Namen sehen und nicht die ID.
<input type="checkbox" name="Status[$j]" value="<?php echo $aStatus[$j];?>"><?php echo $aStatus[$j]; ?>
</td>
</tr>
<?php
}
?>
</table>
Seht ihr wo ich einen Fehler gemacht habe?
Ich schaffe es nicht die ID und den Namen aus der Funktion zu holen und einzutragen.
<input type="checkbox" name="Status[$j]->getID()" value="<?php echo $aStatus[$j];?>"><?php echo $aStatus[$j]->getName(); ?>
Beitrag bearbeiten/löschen
Hallo!
while($myDB->next_record())
{
//$aReturn[] = $myDB->f('s_name');
$aReturn[] = $myDB->f('s_id');
}
Ich schaffe es nicht die ID und den Namen aus der Funktion zu holen und einzutragen.
Ja wie denn auch, wenn du den Namen gar nicht ins zurückgegebene Array stopfst?
while($myDB->next_record())
{
$aReturn[] = $myDB->f('s_name');
$aReturn[] = $myDB->f('s_id');
}Ich schaffe es nicht die ID und den Namen aus der Funktion zu holen und einzutragen.
Ja wie denn auch, wenn du den Namen gar nicht ins zurückgegebene Array stopfst?
Wenn ich es so mache geht es doch nicht weil die ID und der Name nicht zusammen gehören aber sie gehören doch zusammen
Hallo!
Wenn ich es so mache geht es doch nicht weil die ID und der Name nicht zusammen gehören aber sie gehören doch zusammen
Dann mach doch einfach ein zweidimensionales Array! Ist ja nicht so schwer.
<?php
class DeineKlasse
{
...
function deineFunc()
{
...
while($myDB->next_record())
{
$aReturn[][] = $myDB->f('s_name');
$aReturn[][] = $myDB->f('s_id');
}
return $aReturn;
}
...
}
$foo = new DeineKlasse();
$bar = $foo->deineFunc();
for($i = 0; $i < sizeof($bar); $i++)
{
echo $bar[$i][0]; // hier ist der inhalt von s_name
echo $bar[$i][1]; // hier ist der inhalt von s_id
}
?>
Das sind eigentlich Grundkenntnisse. Wie hast dus geschafft die Klasse zu schreiben wenn du das nicht lösen kannst?
Hallo!
Wenn ich es so mache geht es doch nicht weil die ID und der Name nicht zusammen gehören aber sie gehören doch zusammen
Dann mach doch einfach ein zweidimensionales Array! Ist ja nicht so schwer.
Bzw ein eindimensionales wo du z.B. 4 Datenelemente pro User hast und deine Schleife demnach so aussieht:
<?php
for($i = 0; $i < sizeof($dein_array); $i += 4)
{
echo $dein_array[$i]; // erstes datenelement
echo $dein_array[$i+1]; // zweites datenelement
echo $dein_array[$i+2]; // drittes datenelement
echo $dein_array[$i+3]; // viertes datenelement
}
?>
kann ich dir sagen es ist schon lange her wo ich so was mal gemacht habe und Arrays konnte ich noch nie leiden.
Man vergisst bestimmt Sachen nicht aber mit den Arrays war das immer so eine Sache ich weiß wan ich sie verwenden muss. Aber die Anwendung fällt mir immer noch schwer. Leider
<?php
$foo = new DeineKlasse();
$bar = $foo->deineFunc();for($i = 0; $i < sizeof($bar); $i++)
{
echo $bar[$i][0]; // hier ist der inhalt von s_name
echo $bar[$i][1]; // hier ist der inhalt von s_id
}
?>
Die Sache verstehe ich nicht, sind nicht in beiden das gleiche drinne.
Das mit [0] und [1] so habe ich das noch nie gesehen.
Arrays sind ganz schon umständlich. Ich möchte dir auch gerne verstehen. :-(
Moin!
$aReturn[][] = $myDB->f('s_name');
$aReturn[][] = $myDB->f('s_id');
Das ist natürlich Unsinn. Weil's sowohl den ersten als auch den zweiten Index beidesmal inkrementiert.
Der implizite Push-Operator [] ist zwar nett, er sollte allerdings vernünftig eingesetzt werden.
Insbesondere wenn am Ende das hier rauskommen soll:
echo $bar[$i][0]; // hier ist der inhalt von s_name
echo $bar[$i][1]; // hier ist der inhalt von s_id
Es ist sehr ungünstig, die Spalteninformation, die innerhalb der Klasse noch erhalten war (nämlich die Bezeichner "Name" und "ID") hier zu ersetzen durch anonyme Zahlenwerte, die in dieser Form keinerlei Bedeutung mehr haben. Es passiert viel zu leicht, dass durch ein Umbau anderswo sich plötzlich die Reihenfolge oder der Feldinhalt ändert, und es dadurch zu zunächst unbemerkten Problemen kommt.
Eine vernünftige Datenbankabfrage würde:
1. Explizit alle gewünschten Datenbankspalten auflisten (SELECT * ist verboten!).
2. Sofern notwendig, dann alle ermittelten Datenbankzeilen in einem Array zur Verfügung stellen, und dabei unbedingt die Spaltennamen erhalten.
3. Alternativ (schließlich sind hier ja Klassen am Werk) ein passendes Objekt zur Verfügung stellen, mit dem man anstelle des Arrays die Daten für eine Ausgabe abfragen kann.
Insbesondere Punkt 3 läßt sich ohne Kenntnis der bisherigen Klassenstruktur aber nur schwerlich weiter darstellen.
- Sven Rautenberg
Hallo!
$aReturn[][] = $myDB->f('s_name');
$aReturn[][] = $myDB->f('s_id');Das ist natürlich Unsinn. Weil's sowohl den ersten als auch den zweiten Index beidesmal inkrementiert.
Gut, da hast du mich erwischt aber da ich zu dem Zeipunkt gerade in einer Vorlesung war sehe ich das für mich persönlich als entschuldigt :)
echo $bar[$i][0]; // hier ist der inhalt von s_name
echo $bar[$i][1]; // hier ist der inhalt von s_idEs ist sehr ungünstig, die Spalteninformation, die innerhalb der Klasse noch erhalten war (nämlich die Bezeichner "Name" und "ID") hier zu ersetzen durch anonyme Zahlenwerte, die in dieser Form keinerlei Bedeutung mehr haben. Es passiert viel zu leicht, dass durch ein Umbau anderswo sich plötzlich die Reihenfolge oder der Feldinhalt ändert, und es dadurch zu zunächst unbemerkten Problemen kommt.
Der Code war ja auch nur als Denkanstoss gedacht. Ich habe absichtlich nicht den geposteten Beispielcode vom Topic Autor verändert.
Hallo,
kan man das nicht so machen so habe ich doch Name und ID Zusammen
<?php function Status1()
{
...while($myDB->next_record())
{
$aReturn[] = $myDB->f('s_id','s_name');
}...
}?>
<table border="0">
<?php
//Status
$oStatus = new Status();
$aStatus = $oStatus->Status1()
//Status
for($j=0; $j<count($aStatus); $j++)
{
?>
<tr>
<td>
<input type="checkbox" name="Status[$j]" value="<?php echo $aStatus[$j];?>"><?php echo $aStatus[$j]; ?>
</td>
</tr>
<?php
}
?>
</table>
Ich weis nur nicht wie ich ID und Name raushole und sage Value ist Id und der Anzeigename für die Checkbox ist Name
<input type="checkbox" name="Status[ID]" value="<?php echo $aStatus[$j];?>"><?php echo $aStatus[NAME]; ?>