Probleme mit dem Löschen von Einträgen einer Datenabnk

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit dem Löschen von Einträgen einer Datenabnk

    hallo leute... ich habe folgende 2 scripte... das erste zeigt alle hostnamen aus einer datenbank in einer selectbox zur auswahl an.. das geht... dann mit dem zeiten script soll der ausgewählte eintrag gelöscht werden.... das problem ist egal wieviele einträge in der tabelle sind er löscht alle werte aus der tabelle... ist das ein array problem oder sowas ??? wenn ja wäre ich für eine lösung sehr dankbar....
    -------1--------
    <?
    mysql_connect("localhost","root","");
    mysql_select_db("serverlist");
    $result = mysql_query("select host from liste");
    echo "<html>";
    echo "<body>";
    echo "<form method=post action=hostdel.php>";
    echo '<select name="host">'; //Liegt hier der Fehler ???
    while (list ($name) = mysql_fetch_row ($result))
    {
    echo "<option>$name</option>"; //Oder hier ???
    }
    echo "</select>";
    echo "<input type=submit value='Host löschen'>";
    mysql_close();
    echo "</form>";
    echo "</body>";
    echo "</html>";
    ?>

    ----------2--------
    <?
    mysql_connect("localhost","root","");
    mysql_select_db("serverlist");

    $entfernen = "host"; /* der Name, von dem alle Daten gelöscht werden sollen */
    $result=MYSQL_QUERY("DELETE FROM liste WHERE host = $entfernen");
    /* Status über Löschen anzeigen */
    if ($result)
    {
    echo "Eintrag wurde gelöscht<br>";
    }
    else
    {
    echo "Eintrag wurde NICHT gelöscht<br>";
    }
    MYSQL_CLOSE();
    ?>

  • #2
    Hallo Amun,

    ich denke mal, Du solltest die scripte folgendermaßen ändern:

    ------ Script 1 --------------

    Vor die Anfürungszeichen immer ein Backslash
    echo '<select name=\"host\">';

    Diese Zeilen sind schön und gut, aber Du musst der Option noch einen Wert geben:
    while (list ($name) = mysql_fetch_row ($result))
    {
    echo "<option value=\"$name\">$name</option>"; //Oder hier ???
    }

    -------Script 2 -------------

    Diese Zeile entfernst Du mal ganz:
    $entfernen = "host"; /* der Name, von dem alle Daten gelöscht werden sollen */

    Hier schreibst Du host = '$host' - in ein Anführungszeichen!
    $result=MYSQL_QUERY("DELETE FROM liste WHERE host = '$host'");

    So müsste es eigentlich funzen!

    Hoffe, ich habe Dir weitergeholfen!

    Cu,
    Sascha


    Kommentar


    • #3
      hi sascha.. erstmal danke... hab das abgeändert geht aber nicht...

      Hier schreibst Du host = '$host' - in ein Anführungszeichen!
      --->>> hier bringt er parse error...
      --->>> da stimmt was mit den gänsefüsschen nicht...

      hab schon so ziemlich alles probiert.... hmm...

      Kommentar


      • #4
        Normalerweise muss der Wert aber in ein Gänsefüsschen geschrieben werden - verstehe ich gar nicht - im Moment stehe ich da auf dem Schlauch!

        Muss nochmal grübeln...... ;-(


        Kommentar


        • #5
          Vor die Anfürungszeichen immer ein Backslash
          echo '<select name=\"host\">';

          Diese Zeilen sind schön und gut, aber Du musst der Option noch einen Wert geben:
          while (list ($name) = mysql_fetch_row ($result))
          {
          echo "<option value=\"$name\">$name</option>"; //Oder hier ???
          }
          Sorry Sascha, aber das ist zu mindestens einem Viertel Schwachfug.
          Der erste String steht in Hochkommata, in diesen muß nur weiteren Hochkommata ein Backslash vorangestellt werden; Gänsefüße funktionieren hier auch ohne.
          Gänsefüße in Gänsefüße-Strings (in der vorletzten Zeile) ist korrekt.

          Das Problem liegt tatsächlich in der Query; wenn host kein numerischer Wert ist, MUSS er in Hochkommata, so wie Sasche es geschrieben hat; die gesamte Query in Gänsefüße.
          Den Parse Error kann ich mir aber auch nicht erklären.

          last but not least:

          aus dem ersten Post:
          $entfernen = "host"; /* der Name, von dem alle Daten gelöscht werden sollen */
          $result=MYSQL_QUERY("DELETE FROM liste WHERE host = $entfernen");
          In der ersten Zeile fehlt ein $, dadurch wird $entfernen nicht mit dem Wert von $host besetzt sondern mit dem String 'host'. Durch die fehlenden Hochkommata in der Query bekommt mySQL die folgende Aufgabe:
          DELETE FROM liste WHERE host = host
          und die Where-Bedingung trifft jawohl auf jeden Eintrag zu.

          Also, $entfernen = $host; und WHERE host = '$entfernen' und alles ist in Butter - wenn auch nicht sehr elegant.
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar

          Lädt...
          X