Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Was mach ich bei den Arrays falsch? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Was mach ich bei den Arrays falsch?


 
ThePro
07-05-2006, 22:22 
 
Hi!
Ich habe ein kleines Problemchen mit assoziativen arrays.
Manchmal werden sie einfach nicht erkannt und ich muss mit dem Index auf die arrays zugreifen, aber hier erstmal etwas code:

...
$sql = "SELECT id, ClanID, LigatypID, Zugelassen FROM $dbLigaanmeldungen ORDER BY id ASC";
$result = mysql_query($sql);

while ($data = mysql_fetch_array($result, MYSQL_NUM))
{
$ClanInfo = GetClanInfo($data['ClanID']); // <- hier ist das Problem
...
}

$data ist ja das array, das durch mysql_fetch_array erzeugt wurde. Normalerweise wird dann ein assoziatives array erstellt, dass die selben namen wir die Tabellenspalten hat, die man im SELECT definiert hat. Versuche ich jetzt auf $data['ClanID'] zuzugreifen, erhalte ich einen leeren String.

Ich muss dann anstatt $data['ClanID'] $data[1] angeben, da ClanID das zweite Element in der SELECT abfrage ist. Es funktioniert zwar, aber ich finde es unübersichtlicher, wenn ich in zwei monaten nochmal über den Code schauen sollte. Was mache ich falsch?

 
Koala
07-05-2006, 22:25 
 
aus dem Handbuch:

"Verwenden Sie MYSQL_NUM erhalten Sie nur numerische Indizes"

 
ThePro
07-05-2006, 22:28 
 
Achso, ich dachte man braucht den Parameter wenn man mehr als ein Ergebnis einer SQL abfrage erwartet, tja man lernt nie aus, danke!

PS: Kann mir jemand sagen, wozu das gut sein soll?

 
vierteln
07-05-2006, 22:59 
 
Wenn ich das $result als TABLE schreiben will, UND mit mysql_field_name und mysql_num_fields die Feldnamen als TH ausgeben. Tabellenkopf und Inhalt passen dann, weil gleicher Index.

Man kann die Feldnamen auch aus $row holen, sofern die Anzahl $rows>=1 und muss die erste $row separat behandeln. Also nicht immer und komplizierter.

 
onemorenerd
07-05-2006, 23:06 
 
@vierteln: Nach dreimaligem Lesen glaube ich zu wissen, was du meinst, habe aber so meine Zweifel, ob ThePro damit was anfangen kann. :dontknow:

 
vierteln
07-05-2006, 23:21 
 
echo <table>
echo <tr>
for (i=0; i<mysql_num_fields($rs); i++) echo <th> mysql_field_name($rs,i)</th>

while($row=mysql_fetch($rs,MYSQL_NUM))
..echo <tr>;
..for (i=0; i<mysql_num_fields($rs); i++) echo <td> $row(i)</td>

echo </table>

So habe ich es mir als Skizze gedacht. Es steht nicht in php-tags, weil die Syntax nicht stimmt. PS $rs = $result_set.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:50 Uhr.