Values von Select speichern****?

PatrikB1985

Grünschnabel
Guten Tag liebe Community!
Habe da ein Problem! Ich will Values von einer Select-Auswahl in der Datenbank speichern! Habe im Value eine Zahl angegeben******

PHP:
$position1 = "<select name=\"position1\">" . "<optgroup label=\"Position 1\">" . "<option value=\"0\">" . "Keine Gruppe" . "</option>" . "<option value=\"1\">" . "Berufsfeuerwehr" . "</option>"
             . "<option value=\"2\">" . "Rettungsdienst" . "</option>" . "<option value=\"3\">" . "Feuerwehr und Rettungsdienst" . "</option>" . "</optgroup>" . "</select>";

PHP:
while ($row = mysql_fetch_object($ergebnis)) {
    echo "<tr>" . "<td>" . $row->Benutzer . "</td>" . "<td>" . $position1 . "</td>" . "<td>" . $position2 . "</td>" . "<td>" . $position3 . "</td>" . "<td>" . $position4 . "</td>"
         . "<td>" . $freigabe . "</td>" . "</tr>";
}

PHP:
if(isset($_POST['Benutzergruppenuebersicht'])) {
    $position_1 = $_POST["position1"];
    $position_2 = $_POST["position2"];
    $position_3 = $_POST["position3"];
    $position_4 = $_POST["position4"];
    $freigabe_0 = $_POST["freigabe"];
} else {
    echo "Daten nicht gesendet!";
}

PHP:
$eintrag = "UPDATE login SET P1='$position1', P2='$position2', P3='$position3', P4='$position4', Freigabe='$freigabe' ORDER BY Benutzer";

Was mache ich Falsch? Es werden die Values nicht übergeben!
Bitte um einen Tip
LG Patrik
 
Schau dir mal deine Variablen an, du übergibst die String wo du deine Select-Auswahl speicherst ($position1). Die Felder allerdings stehen in "$position_1".
Wie sieht deine Tabelle aus? Denn ein Update der Tabelle mit einem Order By scheint mir hier fehl am Platz. Sind das allgemeine Datensätze oder warum differenzierst du nicht nach einem Feld?
 
Sehe ich das richtig das es mehrere SELECT-Listen gibt (position1, position2, ...). Nur zur Sicherheit, haben diese immer einen anderen Namen?

Wird der IF-Block "Benutzergruppenuebersicht" durchlaufen?

Was wird ausgegeben wenn du dir den Inhalt von $eintrag mit echo am Bildschirm ausgibst?
 
Ich habe eine Tabelle wo alle registrierten Mitglieder der Homepage aufgelistet werden und will ihnen Rechte verteilen!

Brauche ich also nicht die Variablen Position1 abfangen****?
 
Sehe ich das richtig das es mehrere SELECT-Listen gibt (position1, position2, ...). Nur zur Sicherheit, haben diese immer einen anderen Namen?

Wird der IF-Block "Benutzergruppenuebersicht" durchlaufen?

Was wird ausgegeben wenn du dir den Inhalt von $eintrag mit echo am Bildschirm ausgibst?

Punkt 1:
Die SELECT-Listen haben alle 5 einen anderen Namen!

Punkt 2:
Keine Ahnung!

Punkt 3:
Er gibt das aus: Positionen wurden vergeben!UPDATE login SET P1='0', P2='0', P3='0', P4='0', Freigabe='0' ORDER BY Benutzer
 
In "$position1" steht doch ein String, dein gesamtes Select-HTML!
In "$position_1" steht dein Wert nach dem absenden des Formulares, da es ein Kopie von "$_POST['position1']" ist.

Wenn du ein UPDATE auf deiner Tabelle ohne einer expliziten Zuweisung/Kennung (zb ID der Zeile) durchführst, werden ausnahmslos alle Datensätze upgedatet. Also irgendwo solltest du referenzieren welcher User das ist.
 
In "$position1" steht doch ein String, dein gesamtes Select-HTML!
In "$position_1" steht dein Wert nach dem absenden des Formulares, da es ein Kopie von "$_POST['position1']" ist.

Wenn du ein UPDATE auf deiner Tabelle ohne einer expliziten Zuweisung/Kennung (zb ID der Zeile) durchführst, werden ausnahmslos alle Datensätze upgedatet. Also irgendwo solltest du referenzieren welcher User das ist.

Punkt 1:
Muss ich die Werte der SELECT-Listen mit mysql_real_escape_string(); abfangen?

Punkt 2:
Ich gebe jedem User eine ID die von MySQL per Auto Increment ausgegeben wird!


Lösung:
PHP:
while ($row = mysql_fetch_object($ergebnis)) {
    $id = $row["ID"];
    echo "<tr>" . "<td>" . $row->Benutzer[$id] . "</td>" . "<td>" . $row->P1[$id] . "</td>" . "<td>" . $row->P2[$id] . "</td>" . "<td>" . $row->P3[$id] . "</td>" . "<td>" . $row->P4[$id] . "</td>"
         . "<td>" . $freigabe[$id] . "</td>" . "</tr>";
}
} else {
    echo "<p />";
    echo "<tr>" . "<td class=\"Problem\" colspan=\"6\">" . "<text class=\"Text1\">" . "Keine Benutzer gefunden!" . "</text>" . "</td>" . "</tr>";
}

Kann man das so machen****?
 
Zuletzt bearbeitet:
zu Punkt 1: nein, kannst du, musst du aber nicht, da die Werte nicht direkt vom User eingegeben werden.

zu Punkt 2:
Ich denke du gehst diese Sache ganz falsch an, du musst natürlich beim speichern/updaten der Tabelle auch schauen welchen User du gerade bearbeitet hast. In deinem Code ist einiges nicht ersichtlich.
 
zu Punkt 2:
Ich denke du gehst diese Sache ganz falsch an, du musst natürlich beim speichern/updaten der Tabelle auch schauen welchen User du gerade bearbeitet hast. In deinem Code ist einiges nicht ersichtlich.

Kannst du mir da einen Tip geben? Ich lese mir gerade nebenbei ein PHP Buch durch, aber verstehen das nicht mit der ID******
 
Wie Maniac schon schreibt, die SQL-Anweisung ist sicher nicht korrekt. So in etwa solltest du die Update-Anweisung auf einen bestimmten Benutzer begrenzen.
PHP:
$eintrag = "UPDATE login SET P1='$position1', P2='$position2', P3='$position3', P4='$position4', Freigabe='$freigabe' WHERE Benutzer = 'IRGEND_EIN_WERT'";

Außerdem kommt doch hoffentlich auch noch irgendwo die Anweisung wo die SQL-Anweisung auch ausgeführt wird (mysql_query).

Nochmal die Frage zu dem IF-Block. Wenn du nicht weißt ob er ausgeführt wird, dann mache doch einfach mal ein
PHP:
echo "Ich bin hier!";
mit rein.
Denn wenn der Block nicht durchlaufen wird, hilft es nichts wenn der enthaltene Code stimmt.

Code:
ID | Nachname
01 | Müller
02 | Huber
03 | Schmid

SQL:
UPDATE tabelle SET Nachname = 'Schmidt' WHERE ID = '03'

So eine ID-Spalte hast du ja wohl auch. Mit diesem Wert musst du dann die SQL-Anweisung auf den entsprechenden Benutzer beschränken.

Wenn du nur schreibst:

SQL:
UPDATE tabelle SET Nachname = 'Schmidt'

Gibt es nachher nur noch Datensaätze mit dem Nachnamen Schmidt (und bei dir ist es im Moment so!).
 
Zuletzt bearbeitet:
Zurück