Buttons als Array? oder andere Lösung?

dg87

Erfahrenes Mitglied
Hiho,

Ich lese im folgendem Code grad alle Einträge aus und wenn der Benutzer eingeloggt ist, stehen unter jedem Eintrag jeweils ein Löschen und Ändern Button. (Brauch jetzt nur den Lösch button).
Sobald der Member auf den Löschen Button klickt, soll genau dieser Eintrag gelöscht werden, wo geklickt wurde.
Problem ist dabei, klickt man auf den Löschen button, werden mal alle $row['id'] hingeschickt und folglich alle gelöscht, da ja jeder button der gleiche ist.

Frage kann ich das so machen, dass auch jeder Button die entsprechende ID (also array oder sowas von Buttons machen) zugewissen bekommt, so dass bei klick die richtige id der Funktion übergeben wird

Hier die relevanten codes:

PHP:
  while($row = mysql_fetch_assoc($result)) // Einträge rauspicken
          {
                echo "**************************************************<br>";
                echo "Betreff: " . $row['betreff'] . "<br>";
                echo "" . $row['name'] . " schrieb am " . $row['datum'] . "<br>";
                echo $row['nachricht'] . "<br>";
                echo "<br>";
                echo "Die ID des Eintrags ist ". $row['id'] . "<br>";
                
                if(check_user()==1) // Wenn der Rückgabe wert  1 ist, sollen die Buttons sichtbar werden
                {
                    echo "<form action=\"gb2.php\" method=\"post\">"; 
                    echo "<input type=\"submit\" name=\"aen\" value=\"&Auml;ndern\">";
                    echo "<input type=\"submit\" name=\"loesch\" value=\"L&ouml;schen\">";
                    if($_POST['loesch'])
                    {
                      loesch($row['id']);
                      
                    }
                  echo "</form>";
                }
             
                 
            }

In der Funktion steht nichts anders (als test grad) welche Ids gelöscht wird.
 
Hallo,

Probier mal ob du den gewählten Eintrag löschen kannst, wenn Du dem Submitbutton als Value die ID übergibst.
PHP:
echo "<input type=\"submit\" name=\"loesch\" value=\"".$row['id']."\">";
Sollte das klappen müsstest Du ein verstecktes Inputfeld mit der ID übergeben, damit du auf den Submitbutton wieder Löshcen schreiben kannst.

MfG
Maik
 
Hmm da kommt das gleiche drauf aus. hier mal ein bild was dann passiert.
sobald man einen von den buttons drückt, wird trotzdem jedes teil an die lösch funktion hingeschickt.

Hier noch die Funktion:

PHP:
 function loesch($id)
      {
           echo "Löschen von ID--> ". $id . " wird gemacht<br>";     
      }

Bild:

http://www.bilder-hochladen.net/files/3ihg-2-jpg.html
 
Zuletzt bearbeitet:
schade gibts anscheinend keine möglichkeit buttons als felder zu nutzen oder so ähnlich, naja dann muss ich es halt anders realisieren.
Um nicht extra ein neues Thema zu eröffnen würde ich gerne (hab nicht gefunden das geht), ganz unten meines skriptes bzw nach dem login meine Seite automatisch aktualisieren lassen, mit header() gehts ja iwie nett. bitte mit beispiel, habs noch nie gemacht. danke
 
Das was du da gebaut hast kann ja auch nicht funktionieren, da er nicht die ID des gelöschten übermittelt bekommt, sondern ALLE ID's in der Tabelle, ist doch auch logisch, wenn du $row['ID'] hast, dann macht er das ja bei allen und bei jedem Eintrag wird $_POST['loesch'] == true sein...

du kannst das ganze aber so machen, das du ein hidden input mit drin hast, der bei deinem submit mit gesendet wird, im Sinne von:
Code:
<input type=\"hidden\" name=\"id\" value=\"$row['id']\" />
und dann sieht der Aufruf der Funktion so aus:
Code:
if(($_POST['loesch'] == true) AND ($_POST['id'] == $row['id'])) { //Der Vergleich von Post-ID und Row-ID ist, damit er das auch nur in dieser Zeile und nicht bei jedem Eintrag macht!
      loesch($_POST['id']); // Hier nehmen wir wieder Post, da wir ja nur die eine Zeile wollen...
}

So, das ganze ist jetzt nicht getestet, aber es sollte nach meinem Verständis eigentlich klappen...

mfg
ophasis
 
ja das funktioniert, vielen dank.
der hidden input speicher somit die id, die auch angeklickt wird, bzw mitgeschickt wird bei dem submit oder?

kann man mir trotzdem (ich weiß ich frag nochmal) sagen wie man ne Seite per befehl aktualisiert, wie wenn ich auf f5 oder do drücken würde, danke
 
Zuletzt bearbeitet:
Code:
<input type="button" value="Reload Page" onClick="window.location.reload()">
um nur einen von vielen Wegen zu nennen...
Ist dann allerdings auf Javascript basierend, könntest das auch mit Header und PHP machen, aber ich weiß nicht ob das so elegant wäre.. allerdings wäre es Platform unabhängiger als meine JS Methode..

mfg
ophasis
 
Hallo!

Da du die Lösch-Funktion ohnehin nicht jedem zur Verfügung stellen wirst stellt es insofern kein Problem dar.

Beachte aber bitte: Den "Value" Eintrag in einem hidden-Field kann ich als User auf meinem Computer verändern. D.h. ich könnte theoretisch einen anderen Eintrag als den ursprünglichen geplanten löschen!
 
ja gut, dies ließe sich ja aber mit einer simplen Sessionabfrage verhindern, kannst ja ne

Code:
if($_SESSION['group'] == "Admin") {

//Hier folgt das Script von weiter oben

} else {
echo "Sie haben keine Berechtigung dies zu tun";
}

Also das ist ja mal nicht unbedingt die Hürde denke ich...
 
Zurück