Ankündigung

Einklappen
Keine Ankündigung bisher.

if -Abfrage in 2 Tabellen

Einklappen

Neue Werbung 2019

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

  • Janine
    hat ein Thema erstellt if -Abfrage in 2 Tabellen.

    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

  • Janine
    antwortet
    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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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']."'

    Einen Kommentar schreiben:


  • Janine
    antwortet
    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

    Einen Kommentar schreiben:


  • mepeisen
    antwortet
    "SELECT ID2 FROM banlist WHERE SUBSTRING(ID2, 2, 3) = ".$row_userdaten['ID']

    Einen Kommentar schreiben:


  • Janine
    antwortet
    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

    Einen Kommentar schreiben:


  • mepeisen
    antwortet
    Das Substring in die Where-Bedingung...

    Ich empfehle dir das Durcharbeiten eines MySQL-Tutorials.

    Einen Kommentar schreiben:


  • Janine
    antwortet
    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.

    Einen Kommentar schreiben:


  • mepeisen
    antwortet
    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

    Einen Kommentar schreiben:


  • Janine
    antwortet
    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

    Einen Kommentar schreiben:


  • mepeisen
    antwortet
    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

    Einen Kommentar schreiben:


  • Janine
    antwortet
    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ß.

    Einen Kommentar schreiben:


  • mepeisen
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X