Bedingung in PHP und MySQL

  • Hallo ich hab da ein Kleines aber Feines Problehm

    Ich hab diesen Script

    PHP
    <?php
    include("connect.php");
    $user = mysql_query("SELECT * FROM `users` WHERE id =");
    $abfrage = mysql_query("SELECT * FROM gerichte");
    while($row = mysql_fetch_assoc($user)) {
         echo "$row[id]<br />";     
    }
    ?>



    Mein Problehm ist ich weis nicht wie ich die 2 Tabellen miteinander Verknüpfe.
    Ich will das er Abfrägt erst welche ID er in der users Tabelle hat und dann die passenden Gerichte dazu Ausgibt.

    Ich hoffe jemand kann mir Weiterhelfen.

    MfG
    Coolgamer

    --------------------------------------
    Wer Rechtschreibfehler findet darf sie Behalten!

  • Das Schlüsselwort zum Erfolg lautet: JOIN sieh mal hier: Google Schweiz xD

    Beispiel:

    PHP
    <?php
    $sql = 'SELECT firsttable.id, firsttable.username, firsttable.group, sndtable.name FROM firsttable INNER JOIN sndtable on firsttable.group = sndtable.id............';
    $query = mysql_query($sql);
    $ausgabe = mysql_fetch_array($query);
    ?>

    2 Mal editiert, zuletzt von Thonixx (16. August 2010 um 16:36)

  • Öhm wie frägst du den aus der Usertabelle aus welche ID der nutzer hat, wenn du es über "where id = $id" machst kannst es dir auch sparen;)

  • PHP
    <?php
    include("connect.php");
    $user_id = (int) $_GET['user_id'];
    $user_gerichte_query = mysql_query("SELECT * FROM `users`, `gerichte` WHERE `users`.`id` = '$user_id' AND `users`.`id` = `gerichte`.`user_id`");
    while($row = mysql_fetch_assoc($user_gerichte_query)) {
         echo "$row[id]<br />";     
    }
    ?>
    Zitat


    SELECT * FROM `users`, `gerichte` WHERE `users`.`id` = '$user_id' AND `users`.`id` = `gerichte`.`user_id`

    Hier musst du natürlich noch den Spaltenname eintragen, in dem die User-ID der Tabelle `gerichte` steht. Das makierte Sternchen solltest du auch noch durch die entsprechenden Spalten ersetzen die du auslesen möchtest ;) (`[TABELLE]`.`[SPALTE]`)

    Gruß crAzywuLf :D

  • Erstens: Deine Queries sind falsch, der erste zumindst. hast du dich je mit SQL auseinandergesetzt?
    Schau dir mal die WHERE-Klause an, danach solltest du noch wissen, warum man nich SELECT * schreibt. Dann geh die sache nochmal an und siehe - es wird funktionieren.
    P.S.:

    Code
    [COLOR=#000000][COLOR=#007700]echo [/COLOR][COLOR=#dd0000]$row[id]."<br />"[/COLOR][COLOR=#007700];[/COLOR][/COLOR]

    EDIT:
    Lol, solange gebraucht um fuer das nicht SQL * zu googeln das alle schneller waren xD

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Warum empfiehlt keiner die JOIN Funktion von MySQL? Mir wurde immer eingebläut, JOIN zu verwenden, da das andere leicht unübersichtlich werden kann.

  • coolgamer seh ich richtig das du die ID erst aus einer Tabelle ausliest obwohl die die ID schon hast?

  • Wozu braucht man da JOIN? Er will ja nur die gerichte haben, wenn er die id nicht haette (wie auch immer das zu erreichen ist), dann waere JOIN brauchbar.
    Wieso hast du denn die ID nicht? Willst du alle nutzer aus der Tabelle auslesen und sie samt gerichten anzeigen? Schlag dir das ausm kopf.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Ja, aber bei bisher jeder JOIN Verwendung von mir habe ich immer die ID gehabt und trotzdem per JOIN miteinander verbunden.
    Wo soll da der Nachteil denn sein?

  • Wenn man die id hat, braucht man doch nur einen Query. Er will ja alle rezepte zu user xy, wozu JOIN?
    P.S.: Das neue Theme hat nen Fehler: Wenn man was auf die neue seite postet springt es nicht auf die seite, sorry, hab gedacht das forum haette meinen post ignoriert.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    Einmal editiert, zuletzt von Tobse (16. August 2010 um 16:47)

  • Nee, da krieg ich schon wieder Kopfschmerzen, okay, Scherz beiseite.

    Man will doch den Benutzer mit dem zugehörigen Gericht anzeigen oder hab ich da was total missverstanden?
    Ich versteh das Konzept nicht so ganz, da er nur geschrieben hat, er will zwei Tabellen verknüpfen.

  • Ja zum tabellen verknuepfen ist JOIN da, aber wenn er die gerichte zu user xy will, schreibt er

    PHP
    "SELECT a,b,c,d,e FROM gerichte WHERE authorId=$zbc"


    Und dann hat ers.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Also so wie ich das sehe würde doch sowas reichen

    select gerichtid from gerichte where user_id = $_get userid

  • Okay, da geb ich Recht.

    Aber man kanns auch mit JOIN lösen,mit SELECT kann man dann ja auch auswählen, was man haben möchte.
    Ich find JOIN einfach moderner und besser, aber das ist dann schliesslich dem User überlassen.

    Kleines Beispiel:
    Ich hab eine Usertabelle und möchte zu jedem User die Rechtegruppe auslesen.
    Die Gruppe ist mit einem INT gespeichert und der INT entspricht der ID der Rechtegruppen-Tabelle.
    Da nehme ich INNER JOIN und pick mir den Namen der Rechtegruppe raus, um sie anzuzeigen, anstatt der ID, mit der ein User nichts oder nur wenig anfangen kann.