Ankündigung

Einklappen
Keine Ankündigung bisher.

if -Abfrage in 2 Tabellen

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

  • if -Abfrage in 2 Tabellen

    Hallo zusammen.

    Sorry, sicher für euch ein leichtes Spiel, aber ich stell mich gerade etwas blond an

    Ich habe 2 Tabellen und die will ich miteinander vergleichen. Der erste Wert kommt per Suchformular(POST), der soll gleichzeitig mit einer if-Abfrage in einer weiteren Tabelle gesucht werden.

    Also meine DB-Abfrage:

    PHP-Code:
    $colname_userdaten "-1";
    if (isset(
    $_POST['nummer'])) {
      
    $colname_userdaten $_POST['nummer'];
    }
    mysql_select_db($database_server$server);
    $query_userdaten sprintf("SELECT * FROM user WHERE ID = %s"GetSQLValueString($colname_userdaten"text"));
    $userdaten mysql_query($query_userdaten$server) or die(mysql_error());
    $row_userdaten mysql_fetch_assoc($userdaten);
    $totalRows_userdaten mysql_num_rows($userdaten);

    mysql_select_db($database_server$server);
    $query_bandata "SELECT ID2 FROM banliste";
    $bandata mysql_query($query_bandata$server) or die(mysql_error());
    $row_bandata mysql_fetch_assoc($bandata);
    $totalRows_bandata mysql_num_rows($bandata); 
    Im ersten Abschnitt fragt er die User-ID über eine Eingabemaske ab. Nun soll der eingegebene Wert auch mit der zweiten Abfrage (bandata) abgeglichen werden. Aber irgendwie habe ich das Gefühl, daß immer nur die erste Zeile der banliste abgefragt wird. Denn mit

    PHP-Code:
    $row_bandata['ID2'
    bekomme ich nur eine Zeile angezeigt. Er soll aber alle Zeilen durchlaufen und abfragen.
    Meine if-Abfrage:
    PHP-Code:
    if ($row_bandaten['ID2']) == ($row_userdaten['ID']) 
    Wie kann ich das realisieren?

    Hoffe ich bekomme ein wenig Hilfe

    Danke schon mal im Voraus
    Janine


  • #2
    mysql_fetch_assoc macht genau dies: Es holt exat eine Datenzeile.

    Wenn du mehrere Datenzeilen holen willst, packst du das in eine While-Schleife. Siehe auch Beispiele im Handbuch [man]mysql_fetch_assoc[/man]

    Besser wird allerdings sein, gezielt die Datenzeile zu holen, die du hier suchst. Ich gehe davon aus, dass du die übrigen nichts brauchst. Das machst du (wie oben beim User-Query) über eine WHERE-Bedingung.

    Code:
    SELECT ID2 FROM banliste WHERE ID2 = deine-ID
    Alternativ kannst du auch direkt zählen:
    Code:
    SELECT COUND(ID2) As gefunden FROM banliste WHERE ID2 = deine-ID
    Du bekommst dann nach mysql_fetch_assoc in gefunden eine 1, wenn der Datensatz existiert (bzw. irgendwas größer 0) und eine 0, wenn es den Datensatz nicht gibt.
    www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
    Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih

    Kommentar


    • #3
      Puh hab was vergessen.

      Bei ID2 in der Banliste muß ich mit substr arbeiten, da die ID2 nicht ganz der ID entspricht. Also die ID ist eine Ganzzahl, die ID2 ist eine Mischung mit weiteren Zeichen.
      Also so: ID = 102 und ID2 = ##102#
      Deshalb müsste die if-Abfrage auch so aussehen:
      PHP-Code:
      if (substr($row_bandaten['ID2'],2,3) == ($row_userdaten['ID'])) 
      Nun wirds kompliziert, da ich nicht mehr weiß wie ich denn die DB-Anfrage machen muß.

      Kommentar


      • #4
        Unabhängig davon, dass ich nicht verstehe, wieso du sowas komisches in die Datenbank schreibst, wirst du hier fündig: MySQL :: MySQL 5.4 Reference Manual :: 11.4 String Functions
        www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
        Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih

        Kommentar


        • #5
          Grins, nee muß man auch nicht verstehen, aber es geht leider nicht anders.

          Also das mit den substr geht ja auch. Wenn ich ich nach dem ersten Eintrag (erste ID die in der banliste steht) in der banliste suche, dann funktioniert das ja auch.
          Aber wie schon gesagt sucht er nur nach der ersten Zeile, und nicht alle Zeilen aus der banliste. Also müsste die Anfrage anders werden und nicht

          PHP-Code:
          $row_bandaten 
          Also gehe ich mal von aus, daß die DB-Abfrage mit dem Select anders aussehen muß. Mit deinem Beispiel oben komm ich irgendwie nicht hin. Sorry, aber ich bin kein Profi

          Kommentar


          • #6
            Doch, du kommst damit hin, wenn du dir die String-Funktionen aufmerksam durchliest. Dann stößt du zum Beispiel auf folende Funktion: MySQL :: MySQL 5.4 Reference Manual :: 11.4 String Functions
            www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
            Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih

            Kommentar


            • #7
              Ah super, jetzt versteh ich genauer was du meinst.

              Hab mir das vorgenommen:

              PHP-Code:
              mysqlSELECT SUBSTRING('Quadratically',5,6);
                      -> 
              'ratica' 
              Aber es hapert mal wieder an meiner Umsetzung

              PHP-Code:
              $query_bandata "SELECT SUBSTRING('ID2',2,3) FROM banliste"
              So haut es nicht hin.

              Kommentar


              • #8
                Das Substring in die Where-Bedingung...

                Ich empfehle dir das Durcharbeiten eines MySQL-Tutorials.
                www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
                Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih

                Kommentar


                • #9
                  In die Where-Bedingung hab ich es jetzt versucht, ich bekomm den Dreh nicht hin.

                  PHP-Code:
                  $query_bandata "SELECT ID2 FROM banliste WHERE SUBSTRING ('ID2',2,3)"
                  Aber er muß ja noch wissen nach was er suchen soll, habe ich dann mit dem

                  PHP-Code:
                  $query_bandata "SELECT ID2 FROM banliste WHERE SUBSTRING ('ID2',2,3)"GetSQLValueString($colname_userdaten"text"); 
                  probiert, und in verschiedenen Variationen. Steh wie Ochs vorm Berge, hab mich bisher noch nicht so dämlich in DB-Anfragen angestellt

                  Kommentar


                  • #10
                    "SELECT ID2 FROM banlist WHERE SUBSTRING(ID2, 2, 3) = ".$row_userdaten['ID']
                    www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
                    Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih

                    Kommentar


                    • #11
                      Das ist fast schon peinlich, aber ich bekomme kein Ergebnis zurück.

                      Meine Abfrage sieht nun so aus:

                      PHP-Code:
                      $query_bandata "SELECT ID2 FROM banliste WHERE SUBSTRING(ID2,2,3) = '".$row_userdaten['ID']."'"
                      Lass ich mir nun ausgeben wie viele er gefunden hat dann sagt er "0" - also kein Ergebnis Obwohl ein Eintrag drin ist.

                      So langsam reiß ich mir die Haare raus

                      Kommentar


                      • #12
                        For all forms of SUBSTRING(), the position of the first character in the string from which the substring is to be extracted is reckoned as 1.
                        Also so: ID = 102 und ID2 = ##102#
                        SUBSTRING(ID2,2,3) = '".$row_userdaten['ID']."'
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Also muß ich die beide tauschen?

                          PHP-Code:
                          $query_bandata "SELECT ID2 FROM banliste WHERE  '".$row_userdaten['ID']."' = SUBSTRING(ID2,2,3)"
                          Glaube das ist nun völliger Blödsinn, oder?

                          edit:

                          Nee hab das wohl falsch interpretiert.

                          Also der erste Teil des Substrings wird als 1 gerechnet? Versteh das jetzt nicht.

                          Nochmal edit:
                          sag ja, bin blond heute, nun hab ich es verstanden. DANKE

                          Kommentar

                          Lädt...
                          X