hansemann: dantesatz aus mySQL löschen

hi leute!

ich möcht gerne einen datensatz aus mySQL löschen.
dazu hab ich folgenden code:
<form name="delete" action="<?php echo $editFormAction; ?>">
<input type="hidden" name="delete" value="delete">
<?php
$aktid = $row_modperson['ID'];
$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if ($delete == "delete") {
$updateSQL = sprintf("DELETE FROM rh_user WHERE ID=$aktid LIMIT 1");
mysql_select_db($database_ambSQL, $ambSQL);
$Result1 = mysql_query($updateSQL, $ambSQL) or die(mysql_error());
}
?>
<input type="submit" value="Datensatz löschen">
</form>

natürlich funktioniert das ganze nicht...
kann mir jemand helfen?

  1. Hallo,

    natürlich funktioniert das ganze nicht...

    natürlich werde ich aus Deinem Quelltext nicht schlau ;)...

    kann mir jemand helfen?

    ...aber ich glaube schon.
    Die Abfrage zum Löschen heißt:

    DELETE FROM tabellenname
    WHERE bedingung

    UPDATE ist falsch.

    Gruß, Andreas

    1. So, ich habs nochmal bissi gekürzt:

      <form name="delete" action="<?php echo $editFormAction; ?>">
      <input type="hidden" name="delete" value="delete">
      <?php
      $aktid = $row_modperson['ID'];
      //$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
      if ($delete == "delete")
      {
      mysql_db_query("","DELETE FROM rh_user WHERE ID=$aktid LIMIT 1");
      //print $aktid;
      }
      ?>
      <input type="submit" value="Datensatz löschen">
      </form>

      wenn ich das print auskommentier, dann wird mir die id des aktuellen datensatzes aungezeigt, wenn ich meinen button klick, aber meine "löschaktion" läuft einfach nicht.
      aber zumindest weiß ich adas die kommunikation mit der datenbank korrekt läuft....

      muss ic hdas mit was anderem machen, oder so?

      1. Hi hansemann

        mysql_db_query("","DELETE FROM rh_user WHERE ID=$aktid LIMIT 1");

        Mach das LIMIT 1 da weg, das gehört da nicht hin. Zusätzlich solltest du dir Fehlermeldungen davon aufheben und ausgeben lassen, dann findest du solche Syntaxfehler auch eher.

        Gruss Daniela

        --
        Nein, wir frieren unsere Hühner nicht auf Gletschern fest.
        Selfcode: sh:) fo:) ch:) rl:) br:> n4:| ie:{ mo:) va:) de:] zu:} fl:( ss:) ls:&
        1. hallo!

          danke, aber das hat auch nichts gebracht...
          es passiert weiterhin gar nichts...

          mysql_db_query passt doch, oder?

          beste grüße,
          hansemann

          1. Hi hansemann,

            es passiert weiterhin gar nichts...

            solange Du Danielas Hinweis nicht befolgst, wird sich daran auch kaum etwas ändern ...

            Viele Grüße
                  Michael

            --
            T'Pol: I apologize if I acted inappropriately.
            V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
            (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
             => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
            Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
      2. Hallo hansemann,

        $aktid = $row_modperson['ID'];
        //$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];

        besser $_SERVER['PHP_SELF'];

        if ($delete == "delete")

        du gehst von register_globals=on aus (nicht $delete sondern $_POST['delete'] bzw. $_GET['delete'] - je nach dem was in $editFormAction steht)

        {
        mysql_db_query("","DELETE FROM rh_user WHERE ID=$aktid LIMIT 1");

        in welcher Datenbank willst du den was löschen? ->http://de2.php.net/mysql_db_query
        besser wäre aber mysql_select_db() und mysql_query() (mysql_db_query() ist veraltet)
        außerdem, wo ist eigentlich mysql_connect()?

        wenn ich das print auskommentier, dann wird mir die id des aktuellen datensatzes aungezeigt, wenn ich meinen button klick, aber meine "löschaktion" läuft einfach nicht.

        was sagt mysql_error()?

        aber zumindest weiß ich adas die kommunikation mit der datenbank korrekt läuft....

        woher?

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      3. Hi,
        ich finde Deine Angaben etwas kraus.

        1. ruft die Seite überhaupt sich selbst auf?
        2. $aktid = $row_modperson['ID'] ->hast Du diesen Datensatz überhaupt?

        gruß, Andreas

  2. Oi!

    <form name="delete" action="<?php echo $editFormAction; ?>">
    <input type="hidden" name="delete" value="delete">
    <?php
    $aktid = $row_modperson['ID'];
    $editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
    if ($delete == "delete") {
    $updateSQL = sprintf("DELETE FROM rh_user WHERE ID=$aktid LIMIT 1");
    mysql_select_db($database_ambSQL, $ambSQL);
    $Result1 = mysql_query($updateSQL, $ambSQL) or die(mysql_error());
    }
    ?>
    <input type="submit" value="Datensatz löschen">
    </form>

    Was genau funktioniert nicht?
    Fehlermeldungen?
    Oder keine? Wie weicht dann das Ergebnis von der Erwartung ab?
    Welchen Sinn macht die Verwendung von der Klausel LIMIT, wenn Du nicht ordnest, sondern nach einer ID filterst (womit es mehr oder weniger zufällig ist, welcher der von der Filterbedingung betroffenen DS wirklich gelöscht wird)?
    Welchen Sinn macht die Anordnung des PHP-Blockes an dieser Stelle des Dokumentes (mitten in der Formauszeichnung)?

    HTH Robert