Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql eintraege mit formular werten vergleichen

Einklappen

Neue Werbung 2019

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

  • Mysql eintraege mit formular werten vergleichen

    Hallo,
    wie kann ich Werte in einer MYSQL Tabelle mit den Formular werten vergleichen?
    thx for help
    P.S.:
    das geht net:
    Code:
    <?php 
    //hp 
    error_reporting(E_ALL); 
    include 'inc/config.php'; 
    
    //  die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error()); 
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Zur Zeit können keine Benutzer hinzugefügt werden! Nr.1"); 
    // die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); 
    mysql_select_db(MYSQL_DATABASE) OR die("Zur Zeit können keine Benutzer hinzugefügt werden! Nr. 2"); 
    $sql = "SELECT                
                Name,                
                Password            
            FROM                
                users; 
            ";  
                    
    if ($txtUser != "" and $txtPass != "") 
    { 
        
        $result = mysql_query($sql) OR die("Zur Zeit können keine Benutzer hinzugefügt werden! Nr. 3");            
        if(mysql_num_rows($result)) { 
            while($row = mysql_fetch_assoc($result)) 
                {        
                      if ($txtUser == $row['Name'] and $txtPass == $row['Password']) 
                      { 
                        echo "Benutzer und die Emailadresse sind bereitsvorhanden! <a href=\"index.php\">Zurück</a>"; 
                    } 
          
                      else { 
          $sql2 = "INSERT INTO users 
                    (Name, Password, Email) 
                VALUES      
                      ('$txtUser','$txtPass', ''); 
              "; 
                          // die("Query: <pre>".$sql."</pre>\n"."Antwort: ".mysql_error()); 
              $result = mysql_query($sql2) OR die("Zur Zeit können keine Benutzer hinzugefügt werden! Nr. 4"); 
                        echo "Sind sind nun als ".$txtUser." erfolgreich registriert und werden weiter zu den Downloads geleitet!"; 
                        echo "Falsch die automatische Weiterleitung nicht funktioniert, bitte klicken Sie <a href=\"Downloads/\">hier</a> drauf."; 
                        
                        } 
            } 
    } } 
    else 
    { 
        echo "Es müssen alle Felder ausgefüllt werden! <a href=\"index.php\">Zurück</a>"; 
        echo "<meta http-equiv=\"Content-Type\"content=\"text/html; charset=ISO-8859-1\" />"; 
        echo "<META http-equiv=\"refresh\" content=\"1; URL=http://localhost/xampp/hp/versuch/index.php\">"; 
    } 
    
    ?>

  • #2
    Hy, als erstes überprüfe mal, ob deine Variablen die erwarteten Werte enthalten. Desweiteren würde ich dir raten, nicht $txtuser zu benutzen, sondern (ich gehe davon aus, dass die Werte von einem Post-Formular kommen) $_POST["txtuser"].

    Den Vergleich kannst du einfacher machen, als SQL-Sting:
    PHP-Code:
    <?php
    $sql 
    "SELECT feld FROM users WHERE name = '".$_POST["txtuser"]."' or email = '".$_POST["txtemail"]."'";
    if ( 
    mysql_num_rows$resultderabfrage ) )
        
    //schon vorhanden
    else
        
    mysql_query"INSERT INTO users ..." );
    ?>
    Bei mir meckert er rum, wenn ich in einer SQL-Abfrage ein Semikolon am Ende mache. Evtl. liegt es daran.

    PS: Wegen der Abfrage oben schau nach, ob deine Sicherheitseinstellungen gut sind (siehe im PHP-Tut unter Sicherheit )

    Kommentar


    • #3
      hi,

      ich wollte weiter Abfragen vermeinden, und hab deswegen in phpadmin bei Spalten, die es nur einmal geben soll "unique" eingestellt und php soll ganz normal versuchen den Eintrag einzutragen.

      PHP-Code:
      <?php
      // Daten eintragen
        
      $sql "INSERT INTO ".
          
      "Users (...) ".
        
      "VALUES (...)";
        
      mysql_query ($sql) or $error['mysql'] = mysql_error();
      ?>
      Nur -wie man sehen kann- lasse ich das ganze nicht durch die() beenden, sondern speichere den Fehlertext in die Variable $error['mysql'].

      Später vergleiche ich dann umständlich den Fehlertext und lass dann die entsprechenen Fehlertext ausgeben. Bei keiner Übereinstimmung wird der Standarttext von mysql_error() ausgegeben.

      Nur kann man das ganze vereinfachen, indem man nicht den Fehlertext vergleicht, sondern kann man sich einen Fehlercode herausgeben lassen? (also ein Befehl anstatt mysql_error() )


      Zitat von casb
      PS: Wegen der Abfrage oben schau nach, ob deine Sicherheitseinstellungen gut sind (siehe im PHP-Tut unter Sicherheit )
      wo soll das genau stehen?

      Kommentar


      • #4
        Zitat von Macbeth
        Nur kann man das ganze vereinfachen, indem man nicht den Fehlertext vergleicht, sondern kann man sich einen Fehlercode herausgeben lassen? (also ein Befehl anstatt mysql_error() )
        OK... Frage selber beantwortet...
        mit mysql_errno() gehts...

        Aber ist die Möglichkeit auch gut, oder solte ich das so lieber lassen?

        Kommentar


        • #5
          @casb: wie genau soll der vergleich aussehen, verstehe den codeteil net

          Kommentar

          Lädt...
          X