Entwickler-Ecke
Programmiersprachen (Server) - Variable als Parameter
Dude566 - Di 12.04.11 20:51
Titel: Variable als Parameter
Hallo Leute,
ich arbeite an einem für meine Verhältnisse etwas größeren Projekt und habe ein Problem das ich nicht lösen kann.
Ich möchte in einer Tabelle alle Nutzer meiner Seite auflisten und dann natürlich auch einen Link zu ihrer Seite in der Tabelle anzeigen.
Gespeichert sind die Nutzerdaten in $user, was ein zweidimensionales Array ist, also z.B. den Namen des 5. Benutzers mit:
$user[4]['name']
Jetzt habe ich aber Probleme bei dem Link in meiner Tabelle, der Name des Links wird richtig angezeigt, jedoch der Teil wo die Variable (Benutzername) als Parameter für "action" greifen sollte bleibt leer. :gruebel:
Hier mal ein Schnipsel:
Quelltext
1: 2: 3:
| for($i = 0; $i <= count($user) - 1; $i++) { echo('<tr><td>'.$user[$i]['id'].'</td><td><a href="gallery.php?action="'.$user[$i]['name'].'">'.$user[$i]['name'].'</a></td></tr>'); } |
Ich hoffe es ist klar, was nicht funktioniert und ihr könnt mir helfen.
Schönen Gruß,
Dude566
Edit: Code abgeändert.
Moderiert von Christian S.: Topic aus Delphi4PHP-Technologien verschoben am So 15.07.2012 um 13:10
Delete - Di 12.04.11 22:23
Hast du denn eine Ausgabe bei
echo $user[0]['name'].
Dude566 - Di 12.04.11 22:46
Ja, denn hinten beim Linktext, also dem Text zwischen den Link-Tags funktioniert es ja.
ub60 - Di 12.04.11 22:53
Liegt es daran?
Quelltext
1:
| for($i = 0; $i <= count($user) - 1; $i++) |
ub60
Dude566 - Di 12.04.11 23:07
Ändert leider auch nichts an dem Fehler. :nixweiss:
Bergmann89 - Di 12.04.11 23:55
Hey,
versuch mal das ganze in einer Variable zwischen zu speichern. Un schreibt man die Hochkommas nicht normalerweiße mit \"?
€: da is auch eins zu viel drin, oder:
Quelltext
1:
| <a href=\"gallery.php?action="'.$user[$i]['name'].'\"> |
MfG Bergmann.
Dude566 - Mi 13.04.11 08:31
Ich glaube das " hinter dem Action ist falsch, bin unterwegs und kann es nicht direkt testen. \ muss ich nicht verwenden da mein String ja mit ' begrenzt wird.
buster - Mi 13.04.11 10:35
Variablen innerhalb von Hochkommata werden nicht durch ihren Wert ersetzt... kuck mal
hier [
http://www.php-faq.de/q-stil-anfuehrungszeichen.html]
besser wäre also
Quelltext
1:
| echo "<tr><td>" . $user[$i]['id'] . "</td><td><a href=\"gallery.php?action=" . $user[$i]['name'] . "\">" . $user[$i]['name'] . "</a></td></tr>"; |
oder gleich
Quelltext
1:
| ?><tr><td><?php echo $user[$i]['id']; ?></td><td><a href="gallery.php?action=<?php echo $user[$i]['name']; ?>"><?php echo $user[$i]['name']; ?></a></td></tr><?php |
da kommen solche Probleme mit dem Interpreter gar nicht erst auf ;)
noch zwei kleine Tipps: bei $i sollte es doch reichen, wenn es kleiner als count($user) ist (spart das -1);
und das count($user) sollte man bereits vorher bestimmen und dann nur noch auf die Variable prüfen, da es ansonsten bei jedem Schleifendurchlauf neu ermittelt wird, was bei großen Datenmengen durchaus die Performance beeinflusst
jfheins - Mi 13.04.11 12:44
ub60 hat folgendes geschrieben : |
Liegt es daran?
Quelltext 1:
| for($i = 0; $i <= count($user) - 1; $i++) |
ub60 |
Nein. das erste ist die Zuweisung, dann kommt der Vergleich und am Ende das Inkrement. Das ist schon richtig so. Zuweisung mit =
Dude566 hat folgendes geschrieben : |
Ich glaube das " hinter dem Action ist falsch, bin unterwegs und kann es nicht direkt testen. \ muss ich nicht verwenden da mein String ja mit ' begrenzt wird. |
Richtige Lösung ;) Das eine " ist zu viel, heraus kommt vermutlich ungültiger HTML Quelltext. Nächstes mal vielleicht auch da mal rein gucken ;)
Das stimmt zwar, hat aber mit dem Problem nichts zu tun. Die Variablen sind ja nicht in Hochkommata(') eingeschlossen. Das HTML Zeug ist in Hochkommata, damit man im HTML Code noch das " verwenden kann ohne escapen zu müssen.
buster hat folgendes geschrieben : |
besser wäre also
Quelltext 1:
| echo "<tr><td>" . $user[$i]['id'] . "</td><td><a href=\"gallery.php?action=" . $user[$i]['name'] . "\">" . $user[$i]['name'] . "</a></td></tr>"; |
oder gleich
Quelltext 1:
| ?><tr><td><?php echo $user[$i]['id']; ?></td><td><a href="gallery.php?action=<?php echo $user[$i]['name']; ?>"><?php echo $user[$i]['name']; ?></a></td></tr><?php |
da kommen solche Probleme mit dem Interpreter gar nicht erst auf ;) |
Zugegeben, "besser" ist subjektiv. Aber DAS DA fällt ganz bestimmt nicht in die Kategorie. Die erste Version verwendet " statt den ' was zur Folge hat, dass man im HTMl Code die " escapen muss. Der "Vorteil" dass in den " Variablen ersetzt werden, wird nicht genutzt. Stattdessen wird der String wieder zertrennt. Also im Grunde nur ein paar ' weggelassen und dafür gleich viele " und ein paar \ hinzugefügt.
Die zweite Variante ist bei viel HTML Code das Mittel der Wahl, aber hier imho nicht angebracht weil ebenfalls unübersichtlich.
buster - Mi 13.04.11 15:30
jfheins hat folgendes geschrieben : |
Zugegeben, "besser" ist subjektiv. |
Stimmt... andersherum musst du ja das Hochkomma escapen ;) Ist sicher auch eine Frage der Gewohnheit, ich persönlich hab mit dem Escapen kein Problem. Da werden wohl beide Varianten Vor- und Nachteile haben, mir fallen bloß gerade keine ein.
Wobei double quoted strings ja noch mehr Escapesequenzen bieten.
Hier [
http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing] noch etwas mehr dazu...
Dude566 - Mi 13.04.11 16:05
Dude566 hat folgendes geschrieben : |
Ich glaube das " hinter dem Action ist falsch, bin unterwegs und kann es nicht direkt testen. \ muss ich nicht verwenden da mein String ja mit ' begrenzt wird. |
Habe es so korrigiert und jetzt funktioniert es, ich habe ja bewusst die Hochkommata verwendet um die Anführungszeichen für den Link verwenden zu können.
Das mit der Schleife werde ich auch noch abändern, danke! ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!