Problem mit Array-Key

Flo<H>

Erfahrenes Mitglied
also folgendes:
ich hab ein script, dass benutzer per schleife aus einer datenbank (mysql) ausliest, und dies dann anzeigt. jeder eintrag bekommt einen radio-button. nun kann man einen benutzer auswählen und sein profil bearbeiten. wenn man einen benutzer auswählt und auf weiter klickt, übergibt das script ein array $useredit[benutzername]. das folge-script liest per key funktion den key des arrays aus (Bsp: $useredit[Florian] -> key: Florian) und startet eine mysql-abfrage mit ...WHERE username = Florian... und zeigt das profil an.
soweit funktioniert das script. nur gibt es auch benutzernamen in denen ein "]" vorkommt (Bsp: $useredit[Flo[H]]). und da funktioniert das script nicht mehr, weil es key Flo[H nimmt statt Flo[H]. hat jemand eine ahnung, wie ich das machen kann, dass er das erste "]" einfach "übersieht"? ich habs per quotemeta funktioniert, aber entweder funktioniert es damit nicht oder ich hab da nen fehler drin.


Auslesen aus der Db:
PHP:
$result = mysql_query("SELECT username FROM user ");
while  ($row  =  mysql_fetch_row($result))
{
   $username = $row[0];
   echo "<tr><td><input type=\"RADIO\" name=\"useredit[$username]\" value=\"edit\"></td><td>$username</td></tr>";
}

Auslesen des keys
PHP:
$key = key($HTTP_POST_VARS["useredit"]);

gibt es eine möglichkeit, dass ich das "]"-Zeichen in einem array-key verwende?
 
ja weil
" bla hier geb ich ein $array[key] aus "

sowieso schlechter stiel is.


"bla hier geb ich ein ".$array["key"]." aus"

ist der richtige stil.

Der Punktoperator -> . <- verknüpft 2 Strings miteinander.
 
ja versteh ich, aber des ändert trotzdem nichts an meinem problem :-)
ich bräuchte sowas wie ne escape funktion, die mir das ] in irgnedwas anderes umwandelt, so dass es nicht mehr "verwechselt" werden kann.
 
Nein brauchst du nicht.
Du musst das nur so umschreiben.

Es gibt escpae sequencen für dinge wie \n \\ usw
aber für \] eigentlich nicht ;)
nur bei regex

mach aus:
... name=\"useredit[$username]\" ...


... name=\"".useredit[$username]."\"...

dann geht das ohne prolbem das du $username = "Flo[H]"
setzt.
 
danke für die hilfe aber das bringt mich auch nicht weiter...
problem ist einfach, dass ich so den array namen $useredit[Flo[H]] bekomme...
---> Fehler: php interpretiert schon das erste ] als ende des array => Schlüssel ist dann nur Flo[H und da fehlt dann das ]

ich hab aber auch die möglichkeit dass ich folgendes erstellen lasse:
$useredit["Flo[H]"]. aber da gehts es nicht, weil das teil eines inputs ist:
<input type=\"radio\" name=\"useredit[\"$username\"]\"...
das sieht in html aber so aus:
<input type="radio" name="useredit["Flo[H]"]"...
=> hier wird dann der schlüssel von dem array weggeschnitten, weil durch das " das name attribut schon wieder geschlossen ist (name="useredit[" praktisch).
 
Zurück