Index eines Elementes im Array herausfinden

rmkeller

Grünschnabel
Hallo zusammen,

jetzt hab ich mich schon durch diverse Foren gelesen und nirgends auch nur annähernd eine Lösung gefunden. Vielleicht ist auch mein Objektorientiertes Denken Schuld...

Nun ich hab eine Datenbank in der Name und E-Mail Adresse gespeichert ist,
zusätzlich gibt es je Datensatz ein Feld "Berechtigung" hier "rechte" genannt:
Es gibt diese drei Rechte: schreiben, lesen, beides

Über Radiobuttons kann ich je Datensatz die Besechtigung einstellen und über SUBIT erwartet ein anderes Formular die Werte des Radiobuttons als Array. So weit so gut.

Hier der Radio-Button Quelltext: (der natürlich in einer "MySQL Abfrage Schleife läuft" und die Buttons vorselektiert)

PHP:
echo "<input type='radio' name='radio[".$row["ID"]."]' value='lesen'";
	if($row["recht"]=='lesen'){ echo "checked";};
                echo ">";
echo "<input type='radio' name='radio[".$row["ID"]."]' value='schreiben";	
               if($row["recht"]=='schreiben'){ echo "checked";};					echo ">";
echo "<td><input type='radio' name='radio[".$row["ID"]."]' value='beides";			if($row["recht"]=='beides'){ echo "checked";};				echo ">";

Soweit ist ja alles gut, wie man sieht wird der Primärschlüssel der Datenbank(hier ID genannt ) gleich als Index für das Feld im Array verwendet.
Somit bekommt beispielsweise Datensatz 743 auch das Feld 743 im Array

Gibt es in der DB Beispielsweise nur 5 Datensätze jechoch schon mit den IDs 12, 18 und 94, so besteht das Array nachher auch nur aus drei Feldern jedoch mit den Indizes 12, 18 und 94, somit bleibt mir die ID also eideutig erhalten.
Prüfen kann man das mit
PHP:
	echo "<pre>";
	print_r($_POST);
	echo "</pre>";

Nun besteht beim zurückschreiben in die Datenbank das Problem, dass ich beispielsweise in einer foreach Schleife keinen Eindeutigen Index mehr habe, dem ich den Wert "lesen" zuordnen kann.

Hier die schleife zum schreiben in die DB:
PHP:
$increment=1
foreach($radio as $tempvar){
        mysql_query("UPDATE berechtigungen SET recht='".$tempvar."' WHERE ID='".$increment."'");
       $increment=$increment+1;
}

Das Probelm ist solange keines, bis Lücken in der ID der Datenbank entstehen, beispielsweise durch entfernen eines Datensatzes.

Was ich bräuchte wäre eine Art Mechanismus, mit dem ich $tempvar nicht nur nach dem Wert fragen kann, sondern auch dem Index zu dem er gehört.

In Meinem Kopf schwirrt solch eine Idee:
ID = $tempvar.index
Wert= $tempvar

Wie könnte ich diese Problematik anpacken um wieder an den Index zu kommen?

Besten Dank
Roland Keller
 
Klasse, Super Danke!
Manchmal hat man echt nen "Knopf im Hirn"

PHP:
foreach($radio as $index => $tempvar){ 
        mysql_query("UPDATE berechtigungen SET recht='".$tempvar."' WHERE ID='".$index."'"); 
}

So einfach kanns gehen...


Dank und Gruß
Roland
 
Zurück