Kleiner fehler mit abfrage

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

  • Kleiner fehler mit abfrage

    hi, ich habe mir ein formular gebastelt, das eine abfrage an die Mysql DB schickt, ob die email schon vorhanden ist. er gibt mir jetzt zwar den fehler aus, aber trägt trotzdem die daten wieder in die db ein. habe es auch schon mit if probiert, aber hat nicht wirklich funktioniert.

    was mache ich falsch???

    PHP-Code:
     <?php
    $db 
    mysql_connect($host.":".$port,$user,$password); 
     
    mysql_select_db($datenbankname,$db); 

       
    $abfrage mysql_query("select * from sqlform_data where email='$email'");

      
    $eintrag "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh,
      paketwahl, geldinsti, ktnr, blz, agb) VALUES ('
    $anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh',
      '
    $paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')";


       
    $eintragen mysql_query($eintrag);
    $error="";

    if ( isset(
    $gesendet)) {

      
    // Felder die nicht ausgewertet werden sollen
      // einfach hier mittels // kommentieren

      
    if ($anrede=="") { $error .=" Anrede,";}
      if (
    $vorname=="") { $error .=" Vorname,";}
      if (
    $name=="") { $error .=" Nachname,";}
      
    //if ($land=="") { $error .=" Land,";}
      
    if ($plz=="") { $error .=" PLZ,";}
      if (
    $ort=="") { $error .=" Ort,";}
      if (
    $strasse=="") { $error .=" Straße,";}
      if (
    $telefon=="") { $error .=" Telefonnummer,";}
      
    //if ($fax=="") { $error .=" Faxnummer,";}
      
    if ($email=="") { $error .=" eMail-Adresse,";}
      if (
    $paketwahl=="") { $error .=" Paketauswahl,";}
      if (
    $agb=="") { $error .=" AGB,";}
      if (!
    eregi("@",$email)) {$error .=" '@' bei E-Mail fehlt,";}
      if (
    mysql_num_rows($abfrage) > 0) {$error .=" email vorhanden";}
      
    //=================checkbox u. option==auswahl==========================
      
      
    if (!empty($paketwahl)) {$select="selected";}
      if (!empty(
    $status)) {$select="selected";}

      
    // Wenn keine Eingabefehler aufgetreten
      // sind Bestätigung ausgeben
      // ======================================
      
    if ($error=="") {
          
    $Nachricht "  Inhalt der Nachricht:\n\n";
        
    $Nachricht .=":::::::::::::::::::::::::::::::\n";
        
    $Nachricht .= "  Kontakt von:\n";
        
    $Nachricht .=":::::::::::::::::::::::::::::::\n";
        
    $Nachricht .="  Anrede:       $anrede\n";
        
    $Nachricht .="  Vorame:      $vorname\n";
        
    $Nachricht .="  Name:      $name\n";
        
    $Nachricht .="  Land:     $land\n";
        
    $Nachricht .="  PLZ:     $plz\n";
        
    $Nachricht .="  Ort:   $ort\n";
        
    $Nachricht .="  Strasse:   $strasse\n";
        
    $Nachricht .="  eMail:     $email\n";
        
    $Nachricht .="  Telefon:   $telefon\n";
        
    $Nachricht .="  Telefon2:   $telefon2\n";
        
    $Nachricht .="  Handy:   $mobil\n";
        
    $Nachricht .=":::::::::::::::::::::::::::::::\n";
        
    $Nachricht .="  Paketauswahl\n";
        
    $Nachricht .=":::::::::::::::::::::::::::::::\n";
        
    $Nachricht .=" Paket:   $paketwahl\n";
            
    $Nachricht .=":::::::::::::::::::::::::::::::\n";
        
    $Nachricht .="  Bankverbindung\n";
        
    $Nachricht .=":::::::::::::::::::::::::::::::\n";
        
    $Nachricht .="  Kontoinhaber:   $kontoinh\n";
        
    $Nachricht .="  Bank:   $geldinsti\n";
        
    $Nachricht .="  Kontonummer:   $ktnr\n";
        
    $Nachricht .="  Bankleitzahl:   $blz\n";
        
    $Nachricht .=":::::::::::::::::::::::::::::::\n";
        
    $Nachricht .="  AGB:   $agb\n";
        
    $Nachricht .="$kommentar\n";

        
    $Domain=eregi_replace(".*\.([a-z0-9\-]*)\.([a-z]*)$","\\1.\\2",getenv("SERVER_NAME"));
        
    $Empfaenger "$webmaster@stepart.de";
        
    $subject "anmeldung";
            
    $Header "From: Anmeldeformular <$webmaster@$Domain>\n";
            
    mail($Empfaenger,$subject,$Nachricht,$Header);

    //Hier wird die logdatei (selbststaendig) angelegt und die mail eingetragen

    //=================================================================================



            
    $fp=fopen("$savenachricht",'a');
                    
    fwrite($fp"$Nachricht\n\n");
            
    fclose($fp);


    //=================================================================================

    /*Hier wird dieser Antworttext zurueckgemailt (an Absender Kontaktformular)

      Es kann auch der Name etc. mit zurueckgegeben werden

      oder eine beliebige txtDatei includen

    ====================================================================================*/

    $subject1 "Anmeldung ";

    //include("$nachricht1");

    $nachricht1="Sehr geehrter ,


    mit freundlichen Grüßen



    James Bond)"
    ;

            
    //email an Absender

            
    mail($email,$subject1,$nachricht1,$Header);

    /*=================================================================================================================*/

    ?>
                    <div align="center"> 
                      <center>
                        <table cellspacing=0 cellpadding=0 border=1 style="border-collapse: collapse; border: 3px outset #000080" bordercolor="#111111" bgcolor="#F7F7F7" width="381">
                          <tr> 
                            <td width="375"> 
                              <p align="center"><font color="#000000" face="Arial">Sehr 
                                geehrte/er 
                                <?php echo "$anrede $vorname $name";?>
                                <br>
                                Wir bedanken uns für Ihr Interesse an einem</font><font color="#FFFF66" face="Arial"><br>
                                </font> <font face="Arial" color="#ff0000" size="+2"> 
                                <?php echo "$paketwahl  $r_TYP";?>
                                </font> <font color="#FFFF66" face="Arial"><br>
                                </font><font color="#000000" face="Arial">Ihre Nachricht 
                                wird von uns in Kürze bearbeitet.</font> 
                              <p align="center"> <font face="Arial" color="#000000" size="1">Falls 
                                Sie in 4 sec. nicht automatisch weitergeleitet werden, 
                                klicken sie bitte <b><a href="index.htm" onClick="if(this.blur)this.blur()"><font color="#FF0000">hier</font></a></b></font> 
                            </td>
                          </tr>
                        </table>
                      </center>
                    </div>
                    <meta http-equiv="Refresh" content="6; URL=http://www.">
    <?php
      
    // ENDE: if ($error=="")
      
    }
    // ENDE: if gesendet
    }
    ?>
    <?php

    // Formular nur ausgeben wenn noch nicht gesendet worden ist
    // oder wenn ein Eingabefehler vorlag
    // ==========================================================

    if ($error !="" || (! isset($gesendet)) ) {

    ?>
     <form  action="<?php echo $target?>" method=get>
          <input type="hidden" name="gesendet" value="1">
                 <center>
            <table border="0" width="516" height="450" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
              <?php
      
    // Eingabe-Fehler behandeln
      // -------------------------
      
    if ($error !="") {

        
    // Komma am Ende entfernen
        // ========================

        
    $error=ereg_replace(",$" "<br>" $error);
        
    $error "Folgende Felder wurden nicht ausgefüllt: <br>\n".$error;
    ?>
              <tr> 
                <td width="86">&nbsp;</td>
                <td width="144" ><font color="Red"> 
                  <?php  echo $error;
                         if (
    mysql_num_rows($abfrage) > 0)
                  
                                   
    ?>

                  </font></td>
              </tr>
              <?php

      
    }

    ?>

  • #2
    Und Du bist Dir sicher das du nicht selber absurd findest was Du da zusammen programmiert hast?

    Erklär' mal die Logik die dahinter steckt!!!

    Du erstellst ein Statement um abzufragen ob ein entsprechender Datensatz vorhanden ist:
    PHP-Code:
    $abfrage mysql_query("select * from sqlform_data where email='$email'"); 
    Was schon scheiße ist weil es zu viele Daten überträgt ... SELECT COUNT(*) würde vollkommen reichten ... !

    Dann erstellst Du ein Statemen um einen Datensatz einzufügen:
    PHP-Code:
    $eintrag "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh,
      paketwahl, geldinsti, ktnr, blz, agb) VALUES ('
    $anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh',
      '
    $paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')"
    Und sendest Dieses an die Datenbank:
    PHP-Code:
    $eintragen mysql_query($eintrag); 
    Um dann im nachhinein zu prüfen ob alle Eingaben richtig sind ... und ob auch wirklich kein solcher Datensatz vorhanden ist ... und dann wunderst Du Dich warum der Datensatz geschrieben wird?!?!?

    Herzlichen Glückwunsch! Dafür kriegst Du die volle Punktzahl!!

    Sorry ... aber 'ne vernünftige Antwort gibt's vielleicht von "MelloPie" oder "Troublegum" ... !
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      erst schiessen, dann fragen - willkommen im wilden westen der programierung *g*
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        tja, bin halt ziemlich frisch hier und hoffe das ich es bald besser hin kriege. gibt es denn eine einfache lösung für mein problem??? muss ja nicht gleich ne vollständige anleitung sein, aber so kl stichpunkte würden mir echt weiterhelfen.


        mfg

        markus

        Kommentar


        • #5
          PHP-Code:
          $abfrage mysql_query("select count(*) from sqlform_data where email='$email'");

            
          $eintrag "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh,
            paketwahl, geldinsti, ktnr, blz, agb) VALUES ('
          $anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh',
            '
          $paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')";

          if(
          mysql_num_rows($abfrage) > 0)
          {
             
          $eintragen mysql_query($eintrag);
          ...

          mfg
          Günni


          Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
          Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
          Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
          City-Tiger - Online durch die Straßen tigern...

          Kommentar


          • #6
            @Günni: Das reicht nur noch nicht ... weil SELECT COUNT(*) immer genau einen Datensatz liefert ... es sei denn im Statement selber ist ein Fehler ...

            PHP-Code:
            if ( $abfrage mysql_query("select count(*) from sqlform_data where email='$email'") ) {
                if( 
            $row=mysql_fetch_row($abfrage) && $row[0] > 0) {
                    
            $eintrag "INSERT INTO sqlform_data (anrede, name, vorname, strasse, land, plz, ort, telefon, telefon2, mobil, fax, lastschrift, email, kontoinh, paketwahl, geldinsti, ktnr, blz, agb) VALUES ('$anrede', '$name', '$vorname', '$strasse', '$land', '$plz', '$ort', '$telefon', '$telefon2', '$mobil', '$fax', '$lastschrift', '$email', '$kontoinh', '$paketwahl', '$geldinsti', '$ktnr', '$blz', '$agb')";
                   
            $eintragen mysql_query($eintrag);

            ...

                }
                
            mysql_free_result($abfrage);

            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              @goth
              Sorry, hast recht. So würde es gehen wenn er die daten mit SELECT * FROM XYZ ... abfragen würde.
              mfg
              Günni


              Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
              Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
              Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
              City-Tiger - Online durch die Straßen tigern...

              Kommentar


              • #8
                Genau ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  okay okay, bis hier hin hab ich das ja schon fast verstanden, aber wo pack ich das hier hin????

                  PHP-Code:
                    }
                      
                  mysql_free_result($abfrage);



                  sorry für die dumme frage aber ich komme nicht weiter

                  Kommentar

                  Lädt...
                  X