[SQL allgemein] Problem mit Mysql Datenbank in verbindung mit PHP

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

  • [SQL allgemein] Problem mit Mysql Datenbank in verbindung mit PHP

    Hallo ich habe ein Problem und zwar hab ich jetzt ein script geschrieben, dass mir die Cocktails herausfillter wo eine Zutat vorhanden ist jetzt gibt er aber alle aus wo die Zutat vorhanden ist. Jetzt will ich, das er mir nur die ausgibt, wo alle Zutaten vorhanden sind also wenn ich z.B. Vodka und Bull habe nur die ausgibt die auch nur! Vodka und Bull haben also nicht die die Vodak und Bull drin haben .

    Also mein Script sieht bis jetzt so aus:

    PHP-Code:
    <?php



    @error_reporting(7);

    /** connect db **/

    require("config.inc.php");

    require(
    "class_db.php");

    $db = new db($mysqlhost,$mysqluser,$mysqlpassword,$mysqldb);

    $id1=1//die ID des ausgewählten cocktails, z.B. über $_GET erhalten

    $res mysql_query("SELECT 
    zutat_id AS zId,
    zutat_name AS zName,
    cocktail_id AS cId,
    cocktail_name AS cName
    FROM zutat_mehr
    LEFT  JOIN cocktailZutaten_mehr ON ( zutat_id = cocktailZutaten_mehr.z1_zutatId) 
    LEFT  JOIN cocktail_mehr ON ( cocktail_id = cocktailZutaten_mehr.cocktailId ) 
    WHERE zutat_id ='"
    .mysql_escape_string($id1)."'");

    $firstRow=true//Hilfsvariable
    $data=array();//damit es auch nach der Schleife noch existiert
    while ($row=mysql_fetch_assoc($res)) {
        
    $data=$row;
        if (
    $firstRow) {
            
    $firstRow=false;
            echo 
    "<h2>Zutat:</h2>";
            echo 
    "".$row['zName']."";
            echo 
    "<h2>Cocktail:</h2>";
            echo 
    "<ul>";
        }
        echo 
    "<li>".$row['menge']." ".$row['cName']."</li>";
    }

    ?>

    Hier mal noch die Tabellen zur orientierung

    cocktailZutaten_mehr:
    PHP-Code:
    #
    # Tabellenstruktur für Tabelle `cocktailZutaten_mehr`
    #

    CREATE TABLE `cocktailZutaten_mehr` (
      `
    cocktailIdint(4NOT NULL auto_increment,
      `
    z1_zutatIdint(4NOT NULL default '0',
      `
    z2_zutatIdint(4NOT NULL default '0',
      
    PRIMARY KEY  (`cocktailId`),
      
    KEY `name` (`z1_zutatId`)
    TYPE=MyISAM AUTO_INCREMENT=;

    #
    # Daten für Tabelle `cocktailZutaten_mehr`
    #

    INSERT INTO `cocktailZutaten_mehrVALUES (112);
    INSERT INTO `cocktailZutaten_mehrVALUES (232); 

    cocktail_mehr:
    PHP-Code:
    #
    # Tabellenstruktur für Tabelle `cocktail_mehr`
    #

    CREATE TABLE `cocktail_mehr` (
      `
    cocktail_idint(4NOT NULL auto_increment,
      `
    cocktail_namevarchar(255NOT NULL default '',
      `
    cocktail_rezeptvarchar(255NOT NULL default '',
      `
    cocktail_kommentarvarchar(255NOT NULL default '',
      
    PRIMARY KEY  (`cocktail_id`),
      
    KEY `rezept` (`cocktail_name`)
    TYPE=MyISAM AUTO_INCREMENT=;

    #
    # Daten für Tabelle `cocktail_mehr`
    #

    INSERT INTO `cocktail_mehrVALUES (1'Vodka Bull''2''der Kommentar');
    INSERT INTO `cocktail_mehrVALUES (2'Gin Tonic''2''das ist der kommentar'); 

    zutat_mehr:

    PHP-Code:
    #
    # Tabellenstruktur für Tabelle `zutat_mehr`
    #

    CREATE TABLE `zutat_mehr` (
      `
    zutat_idint(4NOT NULL auto_increment,
      `
    zutat_namevarchar(100NOT NULL default '',
      `
    zutat_infovarchar(100NOT NULL default '',
      
    PRIMARY KEY  (`zutat_id`),
      
    KEY `name` (`zutat_name`)
    TYPE=MyISAM AUTO_INCREMENT=;

    #
    # Daten für Tabelle `zutat_mehr`
    #

    INSERT INTO `zutat_mehrVALUES (1'Bull''hier die Info');
    INSERT INTO `zutat_mehrVALUES (2'Gin''keine');
    INSERT INTO `zutat_mehrVALUES (3'Saft'''); 
    Ich hoffe es kann mir jemand helfen! da ich leider von mysql nicht so die Megaahnung habe währe echt super

    mfg
    druckgott

  • #2
    suche benutzt?

    http://www.php-resource.de/forum/sea...der=descending
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      AND?
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        habe das jetzt mal zusammengebaut

        PHP-Code:
        SELECT
        cocktail_id 
        AS cID,
        cocktail_name AS cName
        FROM cocktail_mehr
        LEFT JOIN cocktailzutaten_mehr 
        AS cz1
         ON 
        (cz1.cocktailId=cocktail_mehr.cocktail_id)
        WHERE (
        cz1.z1_zutatId IN 
            
        (SELECT zutat_id FROM zutat_mehr 
            WHERE zutat_name LIKE 
        'Gin' OR zutat_name LIKE 'Bull' )
         AND
         
        cz1.z2_zutatId IN 
            
        (SELECT zutat_id FROM zutat_mehr 
            WHERE zutat_name LIKE 
        'Gin' OR zutat_name LIKE 'Bull' )) 
        aber irgendwie haut das noch nicht ganz hin

        Kommentar


        • #5
          .. und was wenn du 3 oder mehrere zutaten hast ?

          freunde dich mal mit

          - IN() vergleichsoperator (mysql: http://dev.mysql.com/doc/mysql/de/co...html#id2609758)

          - implode() (php: http://de.php.net/implode)

          .. an =D
          mfg,
          [color=#0080c0]Coragon[/color]

          Kommentar


          • #6
            ich will das ganze dann mit bis zu 15 Zutaten machen aber das müsste ja dann nicht so schwer sein das zu erweitern ist ja dann vom prinzip her genau gleich denke ich mal oder???

            Kommentar

            Lädt...
            X