Ankündigung

Einklappen
Keine Ankündigung bisher.

Einzelner Datensatz aus while-Schleife löschen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einzelner Datensatz aus while-Schleife löschen

    undzwar habe ich folgendes Problem:



    PHP-Code:
    <?php
    include ("_mysql.php");
    $show "SELECT * FROM shop";
    $queryy mysql_query($show);
    $row = new stdClass();

    echo 
    '<form method="post" action="acp.php">';

    while(
    $row mysql_fetch_object($queryy))
       {

    echo 
    '
    <table width="1200" border="0" cellspacing="0" cellpadding="0" bgcolor="#9b9b9b">
      <tr>
        <td width="138" align="left" valign="top">&nbsp; <b>'
    .$row->name.'</b></td>
        <td width="309" align="left" valign="top">'
    .$row->logo.' '.$row->banner.' '.$row->thumb.' '.$row->intro.' '.$row->sonstiges.'</td>
        <td width="626" align="left" valign="top">'
    .$row->beschreibung.'</td>
        <td width="98" align="left" valign="top">&nbsp;</td>
        <td width="14" align="left" valign="top"><u>'
    .$row->datum.'</u></td>
        <td width="15" align="left" valign="top">'
    ;
           
           if(isset(
    $accept))
            {
        
    $del "DELETE FROM shop WHERE name = '$row->name'";
        
    $query mysql_query($del);
            }
        
        
        echo 
    '
        <input name="accept" type="submit" id="accept" style="background-image:url(acp/Center_04.png); width:51px; height:51px; border:0px;" value=""></td>
      </tr>
    </table> </br>'
    ;
       }
       echo 
    '</form>';

    ?>
    Er gibt mehrere Datensätze in der While-Schleife aus.. und hinter jeder Zeile ist ein löschen Button.. dieser soll nur eine Zeile löschen.. ich weiss nicht wie ich das umsetzen soll.. jetzt löscht er den ganzen Inhalt, weil er durch die Schleife die DELETE Funktion auf alle Datensätze ausführt.. hat jmd eine Lösung?


  • #2
    Konzeptuell bist du das falsch angegangen. Du musst dem Skript mitteilen, welcher Datensatz gelöscht werden soll, was du so weit ich das sehe nicht tust. Anstatt
    PHP-Code:
    <input name="accept" type="submit" id="accept" style="background-image:url(acp/Center_04.png); width:51px; height:51px; border:0px;" value=""
    z. B.
    PHP-Code:
    <a href="index.php?action=delete&name='.$row->name.'">Löschen</a
    Und dann sowas wie
    PHP-Code:
    if (isset($_GET['action']) and $_GET['action'] == 'delete' and isset($_GET['name']) {
        
    $del 'DELETE FROM shop WHERE name = "'.$_GET['name'].'"';
        
    $query mysql_query($del);

    So ist das außerdem aber nicht gegen MySQL-Injection abgesichtert. Es wäre besser mit der mysqli-Extension und prepared statements zu arbeiten. Außerdem solltest du Datensätze nicht über das Attribut name identifizieren, sondern ein neues Attribut id (primary key, integer, auto increment) einführen. Denn u. a. musst du name im Link eigentlich mit urlencode() kodieren.

    Kommentar


    • #3
      okay also mit get.. die Seite an sich ist online nicht zu erreichen, deswegen mach ich mir um injektions keine sorgen aber trotzdem danke für den Tipp

      Kommentar


      • #4
        Nachtrag: Sorry, in meinem Code war ein $row->name, dort muss $_GET['name'] hin, habe es nun editiert.

        Kommentar


        • #5
          Ich sehe bei dir (TE) schon einige Probleme:

          - Du verwendest SELECT *. Das ist schlechter Stil. Man muss immer die notwendigen Spalten angeben. Das beschleunigt die Abfrage (unnötiges weglassen), verbessert die Stabilität der Software (Schema-Änderungen) und macht dann auch das Debugging einfacher.
          - Du verwendest die mysql_-Erweiterung welche veraltet ist. Verwende zumindest die mysqli_-Erweiterung oder lieber gleich PDO.
          - Du limitierst dein Statement nicht. Es können also eine unendliche Zahl Resultate zurückkommen. Das kann auch irgendwann schlecht rauskommen...
          GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

          Kommentar


          • #6
            Tabelle, Button, Löschen.

            Sorry, aber diese Frage wurde hier im Forum x-fach beantwortet.

            [MOD: Geschlossen]
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar

            Lädt...
            X