Ankündigung

Einklappen
Keine Ankündigung bisher.

mysql abfrage

Einklappen

Neue Werbung 2019

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

  • mysql abfrage

    Habe einen script, in dem man in ein formular eine nummer eingibt, die ein bestimmtest muster haben muss. dann wird die nummer zusammen mit dem namen (die wird später aus einer session genommen) in einer mysql (später postgresql) tabelle gespeichert.
    der script überprüft auch, ob die nummer oder der name schon existiert, allerdings klappt das noch nicht so ganz
    Jeder name darf nur eine nummer haben, und jede nummer darf in der tabelle nur einmal exisiteren.
    das klappt auch, aber falls der name oder die nummer schon exisitert, gibt er das gleiche aus (Nummer oder Name exisitert schon). Nun soll er aber bei jedem etwas anderes ausgeben.
    z.B. der name existiert schon, dann soll er "Du hast schon eine Nummer." ausgeben, und wenn die Nummer schon exisitiert "Die Nummer ist schon vergeben.".
    Wie krieg ich das denn hin?
    Hier mal der script:
    PHP-Code:
    <html>
    <body background="backgroundblue.png">
    <br>
    <h1><font color="#FFFFFF">Nummer eintragen</font></h1>
    <form action="rechner1.php" method="post">  
    <font color="#FFFFFF"><b>Die Nummer</b></font><br>  
    <input type="Text" name="code" size="20">
    <br>
    <font color="#FFFFFF">
    <b>
    </html>

    <?php
    $name 
    'Admin';
    $code trim($_POST["code"]);
    if (
    $code=="")
    {
    echo 
    "Bitte gib eine Nummmer ein.";
    }
    else 
    {
    if (
    preg_match("/^[0-9]{10}_[A-Z]{1}-[0-9]{5}$/"$code)) {
      
    $verbindung mysql_connect ("localhost",
        
    "Boxer1008""")
      or die (
    "keine Verbindung möglich.
     Benutzername oder Passwort sind falsch"
    );

      
    mysql_select_db("rechner")
      or die (
    "Die Datenbank existiert nicht.");

        
    $result mysql_fetch_assoc(mysql_query("SELECT COUNT(nummer) as Anzahl FROM user WHERE nummer = '"  $code .  "' OR name = '" $name "'"));
            if(
    $result['Anzahl'] == 0) {
                
    //ist nun die Anzahl == 0, dann ist die nummer nicht vorhanden...
            
    $eintrag "
            INSERT INTO
                user
                (nummer, name)
            VALUES
                ('
    $code', '$name')";

          
    $eintragen mysql_query($eintrag);
          if (
    $eintragen == true) {
            echo 
    "Eintrag war erfolgreich";
          } else {
            echo 
    "Fehler beim Speichern";
          }
        } else {
            echo 
    "Die Nummer existiert bereits";
        }
    }
    else
    echo 
    "Das ist keine gültige Nummer.";
    }
    ?>

    <html>
    </b>
    </font>
    </html>
    Bin für jede Hilfe dankbar


  • #2
    Du kannst die Felder in der Datenbank auf UNIQUE setzen, dann sorgt die Datenbank dafür, das keine Doubletten auftreten.. allerdings musst du dann auch die Fehlerbehandlung entsprechend programmieren (beim Versuch, eine bereits vorhandene Nummer einzufügen, erzeugt die Datenbank einen Fehler, den du abfangen und behandeln musst)

    edit: sorry, das war ja bloß ein Vorschlag, wie man es anders machen kann.
    der script überprüft auch, ob die nummer oder der name schon existiert, allerdings klappt das noch nicht so ganz
    Bitte deutlicher: WAS klappt nicht so ganz?
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Ich krieg das nur soweithin, wie es dort steht.
      Nun möchte ich aber folgendes haben, und krieg es nur nicht hin^^
      Zitat aus dem 1. Post
      Jeder name darf nur eine nummer haben, und jede nummer darf in der tabelle nur einmal exisiteren.
      das klappt auch, aber falls der name oder die nummer schon exisitert, gibt er das gleiche aus (Nummer oder Name exisitert schon). Nun soll er aber bei jedem etwas anderes ausgeben.
      z.B. der name existiert schon, dann soll er "Du hast schon eine Nummer." ausgeben, und wenn die Nummer schon exisitiert "Die Nummer ist schon vergeben.".
      Wie krieg ich das denn hin?

      Kommentar


      • #4
        An den Anfang des Scriptes baust du folgende 2 Zeilen ein:
        PHP-Code:
        error_reporting(-1);
        ini_set('display_errors''1'); 
        PHP-Code:
         $result mysql_fetch_assoc(mysql_query("SELECT COUNT(nummer) as Anzahl FROM user WHERE nummer = '"  $code .  "' OR name = '" $name "'")); 
        Solche Zeilen sind großer Müll!
        mysql_query() kann Fehler erzeugen, die behandelt werden sollten... gewöhn dir das bitte gleich ab (und stattdessen Fehlerbehandlung an!)

        Solltest du keine Fehlermeldungen erhalten, lohnt es sich immer nachzuschauen, welche Daten man bekommt - und in welcher Form. Lass dir also das Ergebnis der Abfrage mit print_r oder var_dump ausgeben.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          hatte immer
          error_reporting(E ALL|E STRICT)
          eingebaut.

          Kommentar


          • #6
            In deinem Query hats du in der Where-Klausel beide Bedingungen drin die nicht erfüllt sein dürfen. Teile das ganze auf 2 Queries und du hasts...
            "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

            Kommentar


            • #7
              Jeder name darf nur eine nummer haben, und jede nummer darf in der tabelle nur einmal exisiteren.
              das klappt auch, aber falls der name oder die nummer schon exisitert, gibt er das gleiche aus (Nummer oder Name exisitert schon). Nun soll er aber bei jedem etwas anderes ausgeben.
              Dann musst du die Fälle gesonder betrachten...
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                okay, das hab ich inzwischen doch geschafft

                dann hätt ich ne andere frage, kanna ber auch nen neuen thread aufmachen, wenbn das nötig ist.
                undzwar geht es um die suche.
                man soll diese tabelle später auch durchsuchen können (nach nummern), dann sollen sie zusammen mit dem namen ausgegeben werden. hab mich mal dran versucht, bin aber gescheitert. nummer wird später aus einer session genommen.

                PHP-Code:
                <?php
                $nummer 
                '1412040770_K-07090';
                $verbindung mysql_connect ("localhost",
                "Boxer1008""")
                or die (
                "keine Verbindung möglich.
                 Benutzername oder Passwort sind falsch"
                );

                mysql_select_db("rechner")
                or die (
                "Die Datenbank existiert nicht.");
                $suche mysql_fetch_assoc(mysql_query("SELECT FROM rechner WHERE nummer = '".$nummer."' ORDER BY name ASC"));
                echo 
                $suche;
                ?>
                so siehts bisher aus. keine ahnung, wie richtig, oder falsch das ist, jedenfalls funktioniert es nicht^^
                kann wer helfen?

                Kommentar


                • #9
                  $suche = mysql_fetch_assoc(mysql_query(
                  Wie du oben schon gehört hast, ist diese Schreibweise sehr schlecht. Mach da drei Zeilen draus.

                  Was bedeutet "funktioniert nicht"? Bekommst du einen Fehler angezeigt oder entspricht das Ergebnis nicht deiner Erwartung?
                  PHP-Code:
                  if ($var != 0) {
                    
                  $var 0;

                  Kommentar


                  • #10
                    Zitat von Boxer1008 Beitrag anzeigen
                    PHP-Code:
                    $suche mysql_fetch_assoc(mysql_query("SELECT FROM rechner WHERE nummer = '".$nummer."' ORDER BY name ASC")); 
                    SELECT FROM <- da fehlt noch was...
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      oh, danke

                      jetzt läuft es zwar ohne fehlermeldungen, aber er gibt mir "Array" aus. warum?
                      PHP-Code:
                      <?php
                      $nummer 
                      '1412040770_K-07090';
                      $verbindung mysql_connect ("localhost",
                      "Boxer1008""")
                      or die (
                      "keine Verbindung möglich.
                       Benutzername oder Passwort sind falsch"
                      );

                      mysql_select_db("rechner")
                      or die (
                      "Die Datenbank existiert nicht.");
                      $suche mysql_fetch_assoc(mysql_query("SELECT nummer FROM user WHERE nummer = '".$nummer."' ORDER BY name ASC"));
                      echo 
                      $suche;
                      ?>

                      Kommentar


                      • #12
                        Weil es ein Array ist!
                        Code:
                        var_dump($suche);
                        http://hallophp.de

                        Kommentar


                        • #13
                          #9 überlesen?
                          PHP-Code:
                          if ($var != 0) {
                            
                          $var 0;

                          Kommentar


                          • #14
                            nein, aber ich kenn das garnicht anders, als mit mysql_query.
                            array(1) { ["nummer"]=> string(1 "1412040770_K-07090" }
                            gibt er mir mit
                            PHP-Code:
                            var_dump($suche); 
                            aus.

                            Kommentar


                            • #15
                              ... Soifz...

                              Wenn du deinen Query so schreibst:
                              PHP-Code:
                              $sql "SELECT nummer FROM user WHERE nummer = '".$nummer."' ORDER BY name ASC";
                              $res mysql_query($sql);
                              if ( 
                              mysql_num_rows($res) > ) {
                                
                              $row mysql_fetch_assoc($res);
                              } else {
                                
                              // Nix gefunden

                              dann kannst du bei Problemen mit
                              PHP-Code:
                              echo $sql
                              dir deine Query mal ausgeben lassen und schaun, ob da alles richtig ist. Außerdem muss vor dem fetch_assoc geschaut werden, ob es da überhaupt eine Trefferzeile gibt.

                              In diesem Fall sieht es aber eher so aus, als gäbe es mehrere Trefferzeilen, weshalb man noch eine Schleife durch die Ergebnismenge bauen muss.
                              PHP-Code:
                              if ($var != 0) {
                                
                              $var 0;

                              Kommentar

                              Lädt...
                              X