Antworten auf deine Fragen:
Neues Thema erstellen

Datensätze löschen PHP

imac123

Nicht mehr ganz neu hier

Hallo

Wie kann ich Datensätze löschen ? dh. wenn ich auf Delete klicke dann sollte es auch in der Datenbank gelöscht werden egal ob nr: 2,6,9,12... ?
PHP:
while ($dsatz = mysql_fetch_assoc($res))
{
echo '
<tr>
<td>'.$dsatz["vorname"].'</td>
<td>'.$dsatz['nachname'].'</td>
<td>'.$dsatz['strasse'].'</td>
<td>'.$dsatz['hausnummer'].'</td>
<td>'.$dsatz['postleitzahl'].'</td>
<td>'.$dsatz['ortschaft'].'</td>
<td>'.$dsatz['email'].'</td>
<td><a href="liste.php?delete=1">Delete</a></td>
</tr>
';
}


Hier sieht man es, wenn ich auf Delete-Wort drücke dann sollte die Datensatz gelöscht werden mit einer Nachricht "Erfolgreich gelöscht"
PHP:
<a href="liste.php?delete=1">Delete</a></td>




Soviel habe ich auch, aber weiter weiss nicht ...
PHP:
$sql = "DELETE FROM php_data_3 WHERE id='$id'";
 

Sorc

Nicht mehr ganz neu hier

PHP:
if (mysql_query($sql))
{
    echo 'Datensatz gelöscht';
}
else
{
   echo 'Datensatz konnte nicht gelöscht werden' . mysql_error();
}
 

owieortho

Aktives Mitglied

Mit Deinem Datensatz (vorname bis email) musst Du auch noch die id des Datensatzes ausgeben und diese in einem hidden input oder als Parameter in der ZielURL

PHP:
<a href="liste.php?delete=1&id='.$id.'">Delete</a></td>

übergeben. Danach fährst Du fort, wie es Sorc beschrieben hat.

Gruß
O.
 

imac123

Nicht mehr ganz neu hier

Habe probiert funkt nicht:

Es steht immer nur: Datensatz delete

PHP:
<?php 
$id = "";
       
      $sql = "DELETE FROM php_uebung3 WHERE id='$id'"
       ?>
     
      <?php 
      if (mysqli_query($connect, $sql))
      {
          echo 'Datensatz delete';
      }
      else
      {
         echo 'Datensatz konnte nicht delete werden' . mysqli_error($connect);
      }
       ?>


PHP:
            <td><a href="liste.php?delete=1&id='.$id.'">Delete</a></td>
 

imac123

Nicht mehr ganz neu hier

Hallo

Wenn ich es so mache, dann funktioniert, aber dann wird nur eine ID gelöscht und zwar genau id 8, da ich ID 8 in $id variable geschrieben habe ...aber es sollte möglich sein, wenn ich auch Delete drücke dann sollte einfach die gewählte ID gelöscht werden, egal ob ID 2,5,7,12...
PHP:
<?php
$id = 8;


Wie kann ich das genau ausführen ?

Ich will nicht jedes mal $id bearbeiten.

Danke.
 

owieortho

Aktives Mitglied

In Deiner DB hast Du doch sicher außer vorname, nachname,...., email auch eine id?! Wenn nicht solltest Du das nachholen. Und diese holst Du Dir genau wie die anderen Datensätze per
PHP:
$dsatz["id"]
aus der DB. Statt die id jetzt jedes Mal sichtbar auszugeben, verwendest Du sie in einem hidden input:
PHP:
<input type="hidden" name="id" value="$dsatz["id"]" />
oder weist sie der passenden Variablen zu:
PHP:
$id = $dsatz["id"];
oder gleich als Parameter in der URL (s. o.)
Damit hast Du automatisch auch immer die passende id bei Deinen Datensätzen.

O.
 

imac123

Nicht mehr ganz neu hier

Klar habe ich die ID in Datenbank definiert und auch als (AUTO_INCREMENT)

Nun jetzt habe ich so probiert, aber es funktioniert nicht :(

PHP:
<?php
    $id = $dsatz["id"];
    $sql = "DELETE FROM php_uebung3 WHERE id='$id'";

    if (mysqli_query($connect, $sql))
    {
       echo 'Datensatz delete';
    }
    else
    {
      echo 'Datensatz konnte nicht delete werden' . mysqli_error($connect);
    }
  
    ?>


PHP:
<?php
  
while ($dsatz = mysqli_fetch_assoc($resource))
{
    echo '
        <tr>
         <input type="hidden" name="id" value=' .$dsatz["id"] . ' />
            <td>'.$dsatz["vorname"].'</td>
            <td>'.$dsatz['nachname'].'</td>
            <td>'.$dsatz['strasse'].'</td>
        
            <td>'.$dsatz['hausnummer'].'</td>
            <td>'.$dsatz['postleitzahl'].'</td>
            <td>'.$dsatz['ortschaft'].'</td>
            <td>'.$dsatz['email'].'</td>
            <td><a href="liste.php?delete=1&id='.$id.'">Delete</a></td>
        </tr>';
}

     ?>

Ich kann tausend mal auf Delete drücken passiert nicht, in der Statuszeile steht nur: ....../ Vorlage/liste.php?delete=1&id=
 

owieortho

Aktives Mitglied

Dann guck doch erst einmal, ob im Quelltext der angezeigten Webseite nicht nur die sichtbaren Einträge sondern auch die id richtig ausgelesen und geparst wurde, z. B.:
HTML:
<tr>
         <input type="hidden" name="id" value='8' />
            <td>Max</td>
            <td>Mustermann</td>
         .......
 
            <td>mm@mail.org</td>
            <td><a href="liste.php?delete=1&id=8">Delete</a></td>
        </tr>
Übrigens reicht es, wenn Du liste.php die id einmal übergibst. Ich bevorzuge per hidden input, aber es gibt auch Anwendungsfälle da nehme ich die URL-codierte Übergabe.
Dann muss liste.php diese id aus der Antwort auslesen. Ich vermute, Du Dein Skript liest wieder aus der Datenbank etwas aus, richtig wäre aber:
PHP:
$id = $_REQUEST["id"];
das liest die übergebene id aus der Antwort aus.
Es hilft auch, vorübergehend sich immer wieder die Variablen per echo anzeigen zu lassen, dann sieht man auch sehr schnell, wo oder wann Unbrauchbares ausgegeben wird.
 

imac123

Nicht mehr ganz neu hier

Ich vermute bei mir ist:

PHP:
$id = $dsatz["id"];
falsche anstatt $dsatz sollte doch $_POST, wie du geschrieben hast ...mal scahuen ob ich das noch kriege. ..

Quelltext sieht so aus:
HTML:
<tr>
<input type="hidden" name="id" value=3 />
<td>Muster</td>
<td>Max</td>
<td>Hauptstrasse</td>
<td>122</td>
<td>5667</td>
<td>Bern</td>
<td>mail@mail.com</td>
<td><a href="liste.php?delete=1&id=">Delete</a></td>
</tr>


<tr>
<input type="hidden" name="id" value=4 />
<td>MHT</td>
<td>Press</td>
<td>Beispielweg</td>
<td>22</td>
<td>12888</td>
<td>Wald</td>
<td>wald-123@wald.com</td>
<td><a href="liste.php?delete=1&id=">Delete</a></td>
</tr>

... und tatsählich bei der lösch-Link wird keine ID mitgeteilt. :confused:


Wenn ich

PHP:
var_dump($sql);
ausgebe, bekomme ich folgendes:


string(35) "DELETE FROM php_uebung3 WHERE id=''"


und bei der ID

PHP:
var_dump($id);

dann: NULL
 
Zuletzt bearbeitet:

owieortho

Aktives Mitglied

Änder das mal:
PHP:
<td><a href="liste.php?delete=1&id='.$dsatz["id"].'">Delete</a></td>
Wenn Du vorher der Variablen $id nichts zuweist, kann sie auch nichts hergeben.
 

imac123

Nicht mehr ganz neu hier

Super, jetzt zeigt er mir schön überall die ID wenn ich auf Delete drücke.

zb: delete=1&id=7 usw...

Nun löschen kann ich es noch nicht, wenn ich auf Delete drücke ... :(
 

imac123

Nicht mehr ganz neu hier

Jetzt kann ich löschen .... :rolleyes:

Naja so funktioniert

PHP:
$delete = mysqli_query($connect, $sql);

und so nicht
PHP:
          if (mysqli_query($connect, $sql))
            {
               echo 'Datensatz delete';
            }
            else
            {
              echo 'Datensatz konnte nicht delete werden' . mysqli_error($connect);
            }


Was ist der eing. der Trick. :confused:




Danke :daumenhoch
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben