Eintragen in DB funzt aber löschen nicht! Bitte Hilfe!

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

  • Eintragen in DB funzt aber löschen nicht! Bitte Hilfe!

    Hallo @ all.

    Ich bin dabei einen kjleinen Newsletter zu schreiben und habe ein Problem. Und zwar wenn der User meine Seite betritt dann soll er sich mit seiner E-Mail Adresse eintragen können oder auch wieder austragen. Das eintragen funktioniert so wie es soll nur das austragen (löschen) klappt gar nicht. Ich habe schon seid Tagen probiert doch es geht nicht. Entweder bin ich zu blöd oder ich weis es nicht.

    Ich sende hier mal den Code und das Formular dazu. Ich danke vielmals für eure Hilfe MFG der Litter!

    PHP-Code:
    <?php
    session_start
    ();
    error_reporting(E_ALL);

    require(
    'config.inc.php');

    //Newsletter eintragen

    if(isset($_POST['senden']))
    {
        
    //Variablen für Post Versand
        
    $wahl    =    $_POST['wahl'];
        
    $email    =    $_POST['email'];
        
            if(
    $_POST['wahl']==0)
            {
                
    mysql_query("Delete From $tab_nl where id='".$_POST['id']."'")or die(mysql_error());
            }
            else
            {
                if(
    $_POST['wahl']=="" && $_POST['email']=="")
                {
                    echo 
    "Du musst eintragen/oder austragen wählen und/oder eine Mailadresse eingeben!<br>
                    <a href=\"http://localhost/my-page/index.php\">Zurück</a>"
    ;
                }    
                else
                {
                    if(
    $_POST['wahl']==1)
                    {
                        
    mysql_query("Insert Into $tab_nl
                                    (email)
                            VALUES    ('
    $email')
                                    "
    )or die (mysql_error());
                        
    header("Location: [url]http://localhost/my-page/index.php[/url]");
                        
    mysql_close();
                    }
                }
            }

    $nl_result mysql_query("Select * From $tab_nl");
    while(
    $nl_row = @mysql_fetch_array($nl_result)){

            
    $nl_id        =    $nl_row['id'];
            
    $nl_email    =    $nl_row['email'];
        }

    }

    //Newsletter beendet
    ?>

    <table cellspacing="0" cellpadding="0" width="160">
        <tr>
        <td colspan="2" background="http://localhost/my-page/grafiken/newsletter-hg.png">&nbsp;</td>
        </tr>
        <form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" name="formular">
        <tr>
        <td width="160" class="menu_td" align="center"><input type="radio" name="wahl" value="1">
        eintragen</td>
        </tr>
        <tr>
        <td width="160" class="menu_td" align="center"><input type="radio" name="wahl" value="0">
        austragen</td>
        </tr>
        <tr>
        <td width="160" class="menu_td" align="center" height="30">
        E-Mail:&nbsp;<input type="text" name="email" class="textfeld" style="width: 90px; height: 18px;">
        </td>
        </tr>
        <tr>
        <td width="160" class="menu_td" align="center" height="30">
        <input type="submit" name="senden" class="textfeld" value="Senden">
        </td>
        </tr>
        </form>
        </table>
    Zuletzt geändert von litterauspirna; 08.01.2008, 12:17.
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

  • #2
    Vielleicht mal ein
    PHP-Code:
    or die( mysql_error() ); 
    hinter deine delete-query?

    Kommentar


    • #3
      Woher kommt $_POST['id']? Kann ich in deinem Form nicht sehen. Und ich nehme an, dass id der Primary Key der Tabelle ist und daher ist es ein Integer und kein String --> keine ' und ' um den Wert von id
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Habe ich grade gemacht,sorry habe ich vergessen. Aber es bringt mir keinerlei Fehlermeldung dabei. Es wird einfach nicht ausgeführt das löschen. Nur das eintragen funktioniert tadellos
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        http://www.lit-web.de

        Kommentar


        • #5
          WOHER KOMMT $_POST['id']????
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Wo kommt denn $_POST['id'] her? Sollte nicht der Datensatz gelöscht werden, in dem die eingegebene eMail steht?
            PHP-Code:
            mysql_query('DELETE FROM $tab_nl WHERE email="'.$_POST['email'].'"') or die(mysql_error()); 
            EDIT:
            ^^ zu langsam....habt ihr Leute keine Mittagspause?

            EDIT:
            sorry, musst natürlich nach der Email suchen, nicht der ID
            Zuletzt geändert von ZombieChe; 08.01.2008, 12:16.

            Kommentar


            • #7
              Ja genau er sollte gelöscht werden. Muss ich den vorher erst auslesen? Ich tue ja in dem Scriptteil auch die Datensätze eintragen was ja geht. Habe den Code obern geändert. funktioniert aber immer noch nicht
              Zuletzt geändert von litterauspirna; 08.01.2008, 12:17.
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar


              • #8
                $nl_result = mysql_query("Select * From $tab_nl");
                while($nl_row = @mysql_fetch_array($nl_result)){

                $nl_id = $nl_row['id'];
                $nl_email = $nl_row['email'];
                }
                Das ist absolut sinnfrei. Du brauchst nur deine Query zum Löschen ändern. Du musst dich beim Löschen eines Datensatzes nicht auf die ID beschränken und brauchst erst recht nicht den kompletten Datenbestand manuell zu durchlaufen (wie gesagt - sinnfrei).

                Du löschst den Datensatz, wo das Feld `email` gleich der eingegebenen eMail ist, also 'WHERE email = "'.$_POST['email'].'"'

                Kommentar


                • #9
                  Nochmals zu Sicherheit: Was genau willst du löschen? Einen Datensatz mit einer bestimmten ID (die du natürlich kennen musst) oder einen Datensatz mit einer bestimmten Email (welche du auch kennen musst)?
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Es soll der User die möglichkeit haben wenn er den Newsletter nicht mehr in Anspruch nehmen will seine E-Mail Adresse zu löschen. Wenn ich das nur nach dem Feld email mache bleibt doch die eigentliche id bestehen oder? Es soll der ganze Datensatz gelöscht werden
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    http://www.lit-web.de

                    Kommentar


                    • #11
                      Wenn ich das nur nach dem Feld email mache bleibt doch die eigentliche id bestehen oder? Es soll der ganze Datensatz gelöscht werden
                      Bei dieser Argumentation würde aber bei id ebenfalls nur die id gelöscht werden, oder? Es werden immer ganze Datensätze sprich alle Spalten eines Datensatzes gelöscht.

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Gut wieder was gelernt. Wo liegt bei mir der Fehler? Ich werde es nach email löschen.

                        Danke allen hier für die Untestützung. Jetzt funktioniert es richtig.
                        Zuletzt geändert von litterauspirna; 08.01.2008, 12:57.
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        http://www.lit-web.de

                        Kommentar


                        • #13
                          @ZombieChe
                          PHP-Code:
                          mysql_query('DELETE FROM $tab_nl WHERE email="'.$_POST['email'].'"') or die(mysql_error()); 
                          Wie war das nochmal mit Vars und Strings ?
                          @Topicstarter
                          Hast du genau ZombieChe's Code genommen? Die Var $tab_nl wird dabei nicht interpretiert sondern als String behandelt.
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Ja ich habe das genommen und es funktioniert? Ist das zu unsicher?
                            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                            http://www.lit-web.de

                            Kommentar


                            • #15
                              Die Var $tab_nl wird dabei nicht interpretiert sondern als String behandelt.
                              Vielleicht hat er andere Anführungszeichen gesetzt oder die Variable durch seine Tabelle ersetzt.
                              Ist das zu unsicher?
                              mysql_real_escape_string anwenden.
                              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                              Kommentar

                              Lädt...
                              X