Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Datensätze verbinden und ausgeben.

Einklappen

Neue Werbung 2019

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

  • MySQL Datensätze verbinden und ausgeben.

    Hallo zusammen,

    Ich möchte aus Tabelle1 (Gericht) eine ID(z.B. zutatid0) aus Tabelle2 (Zutaten) auslesen und die daugehörige ID(name) auslesen und in einem PHP script ausgeben. Die ID in Tabelle2 ist: zutatid
    Hier mein Code...

    Ich weiß einfach nicht wie ich die verbindung zw. beiden Tabellen herstellen kann
    Code:
    <?php
    require_once ('config.php');
    $db_link = mysqli_connect (
                         MYSQL_HOST,
                         MYSQL_BENUTZER,
                         MYSQL_KENNWORT,
                         MYSQL_DATENBANK
                        );
                        $sql = "SELECT * FROM Gericht";
     
    $db_erg = mysqli_query( $db_link, $sql );
    if ( ! $db_erg )
    {
      die('Ungültige Abfrage: ' . mysqli_error());
    }
     
    
    while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
    {
      echo "<div id='ctc'>";
      echo "<div id='ingreds' style='float:right;'>";
      echo '<table style="margin-right:20px;">';
      echo "<tr>";
      echo "<td>Zutat</td>";
      echo "<td>Menge</td>";
      echo "</tr>";
      echo "<tr>";
      echo "<td>". $zeile['zutatid0'] . "</td>";
      echo "<td>". $zeile['c0'] ." cl</td>";
      echo "</tr>";
      echo "<tr>";
      echo "<td>". $zeile['zutatid1'] . "</td>";
      echo "<td>". $zeile['cl1'] . " cl</td>";
      echo "</tr>";
      echo "<tr>";
      echo "<td>". $zeile['zutatid2'] . "</td>";
      echo "<td>". $zeile['cl2'] . " cl</td>";
      echo "</tr>";
      echo "<tr>";
      echo "<td>". $zeile['zutatid3'] . "</td>";
      echo "<td>". $zeile['cl3'] . " cl</td>";
      echo "</tr>";
      echo "<tr>";
      echo "<td>". $zeile['zutatid4'] . "</td>";
      echo "<td>". $zeile['cl4'] . " cl</td>";
      echo "</tr>";
        echo "<tr>";
      echo "<td>". $zeile['zutatid5'] . "</td>";
      echo "<td>". $zeile['cl5'] . " cl</td>";
      echo "</tr>";
        echo "<tr>";
      echo "<td>". $zeile['zutatid6'] . "</td>";
      echo "<td>". $zeile['cl6'] . " cl</td>";
      echo "</tr>";
      echo "</table>";
      echo "</div>";
      echo "<div id='descr'>";
      echo "<img src='". $zeile['picid'] .".png' id='pic'>";
      echo "<h2 id='ctfonthl'>". $zeile['name'] ."</h2>";
      echo "<p>". $zeile['description'] ."</p>";
    echo "</div>";
    echo "</div>";
    echo "</div>";
    }
    mysqli_free_result( $db_erg );
    ?>
    <body>
    </body>
    </html>
    Vielen Dank schonmal,
    Grüße Daniel

  • #2
    JOIN ? Schau dir mal das Beispiel hier an.. vom Prinzip her. http://php-de.github.io/jumpto/grupp...h/#beispiel-1b

    Nummerierte Felder/Spalten sind übrigens ein Hinweis auf falsches DB-Design. Schau dir dazu mal an wie man Daten richtig normalisiert: http://www.peterkropff.de/site/mysql/normalisierung.htm

    [MOD: Verschoben von PHP-Einsteiger]

    Kommentar


    • #3
      Zitat von hausl Beitrag anzeigen
      JOIN ? Schau dir mal das Beispiel hier an.. vom Prinzip her. http://php-de.github.io/jumpto/grupp...h/#beispiel-1b

      Nummerierte Felder/Spalten sind übrigens ein Hinweis auf falsches DB-Design. Schau dir dazu mal an wie man Daten richtig normalisiert: http://www.peterkropff.de/site/mysql/normalisierung.htm

      [MOD: Verschoben von PHP-Einsteiger]
      Hallo,

      Danke erstmal für die schnelle Hilfe. Ich werde mich gleich einlesen.
      Die zweite Antwort hat mich allerdings zu grübeln gebracht.

      Ich brauche mehere Zutaten die für jedes Gericht variieren könne und dazu die Menge. Ist meine Datenbank dann trozdem falsch?

      Grüße Daniel

      Kommentar


      • #4
        Ist meine Datenbank dann trozdem falsch?
        Auch wenn die Infos oben sehr spährlich sind.. mit den Spalten .. Ich sag mal ja.

        Mal ganz, ganz grob.. ohne Mengen, Anleitungen etc..(die kommen dann noch dazu). Such mal google Ich bin sicher du bist nicht der erste der Repezte speichert

        Code:
        tab_gerichte
        
        id | name  | ..... ( zB Anleitung)
        -----------------------------
        1  | gulasch
        2  | knoblauchbrot
        ...
        
        
        tab_zutaten
        
        id | zutat
        --------------
        1  | fleisch
        2  | kartoffeln
        3  | knoblauch
        ...
        
        
        tab_gericht_zutaten
        
        id_gericht | id_zutat  |  ... (zB Menge)
        --------------
        1         | 1
        1         | 2
        2         | 3
        ...

        Kommentar


        • #5
          Zitat von hausl Beitrag anzeigen

          Auch wenn die Infos oben sehr spährlich sind.. mit den Spalten .. Ich sag mal ja.

          Mal ganz, ganz grob.. ohne Mengen etc.. Such mal google Ich bin sicher du bist nicht der erste der Repezte speichert

          Code:
          tab_rezepte
          
          id | name
          --------------
          1 | gulasch
          2 | knoblauchbrot
          ...
          
          
          tab_zutaten
          
          id | zutat
          --------------
          1 | fleisch
          2 | kartoffeln
          3 | knoblauch
          ...
          
          
          tab_rezepte_zutaten
          
          id_rezept | id_zutat
          --------------
          1 | 1
          1 | 2
          2 | 3
          ...
          Um das zu verdeutlichen:

          Rezeptname | Beschreibung | zutat1 | menge_zutat1 | zutat2 | menge_zutat2 | zutat3 | menge_zutat3
          --------------------------------------------------------------------------------------------------------------------------------------------------
          Gulasch lecker 1 200 3 100 5 50

          Kommentar


          • #6
            Ja, das ist falsch. Ich würde mal sagen so wirst du nicht glücklich.. Eine Datenbank ist nunmal kein Excel, da baut man die Daten "normalisiert" auf.

            Kommentar


            • #7
              Zitat von hausl Beitrag anzeigen
              Ja, das ist falsch. Ich würde mal sagen so wirst du nicht glücklich..
              Okay, danke jetzt hab ichs verstanden

              Jetzt muss ich das mit dem JOIN noch verstehen

              Tut mir leid falls blöde Fragen aufgekommen sind, bin noch Anfänger.

              Grüße Daniel

              Kommentar


              • #8
                Schau dir die beiden oben verlinkten Seiten mal in Ruhe (mit Hirn) an dann wirst du es schnell verstehen worauf es ankommt.

                Kommentar


                • #9
                  Ich habe mich jetzt erkundigt und habe mich mal daran versucht.
                  Es funktioniert aber leider nicht.

                  DB Struktur wurde geändert:


                  Gerichte
                  gericht_id gericht_name description
                  0 Gulasch lecker
                  1 Suppe lecker x2
                  Zutaten
                  zutat_id zutat_name zutat_kcal
                  0 fleisch 200
                  1 kartoffel 100
                  Rezepte
                  gericht_id zutat_id zutat_menge
                  0 0 2
                  0 1 3

                  Ausgabe soll sein:
                  Zutat Menge
                  Fleisch 2
                  Kartoffel 3
                  Irgenwas muss falsch sein... nur was ?


                  PHP-Code:
                  <?php
                  require_once ('config.php');
                  $db_link mysqli_connect (
                                       
                  MYSQL_HOST,
                                       
                  MYSQL_BENUTZER,
                                       
                  MYSQL_KENNWORT,
                                       
                  MYSQL_DATENBANK
                                      
                  );
                                      
                  $sql "SELECT * FROM Cocktails";
                                       
                  $query 'SELECT
                                                  g.gericht_name,
                                                  g.description,
                                                  z.saft_name
                                                  r.menge,
                                                FROM
                                                  Gericht g,
                                                  Zutaten z,
                                                  Rezept r
                                                WHERE
                                                    g.gericht_id = r.gericht_id,
                                                  r.zutat_id = z.zutat_id
                                                  ORDER BY Gericht'
                  ;
                                                  
                  $db_erg mysqli_query$db_link$sql );

                              
                  if ( ! 
                  $db_erg )
                  {
                    die(
                  'Ungültige Abfrage: ' mysqli_error());
                  }
                   

                  while (
                  $zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
                  {
                    echo 
                  "<div id='ctc'>";
                    echo 
                  "<div id='ingreds' style='float:right;'>";
                   
                    echo 
                  '<table style="margin-right:20px;">';
                    echo 
                  "<tr>";
                    echo 
                  "<td>Zutat</td>";
                    echo 
                  "<td>Menge</td>";
                    echo 
                  "</tr>";
                  $db_erg2 mysqli_query$db_link$query );
                  while (
                  $zeile2 mysqli_fetch_array$db_erg2MYSQL_ASSOC))
                  {
                    echo 
                  '<tr>
                            <td>'
                  .$zeile2['zutat_name'].'</td>
                            <td>'
                  .$zeile2['zutat_menge'].'</td>
                          </tr>'
                  ;
                  }
                    echo 
                  "</table>";
                    echo 
                  "</div>";
                    echo 
                  "<div id='descr'>";
                    echo 
                  "<h2 id='ctfonthl'>"$zeile['gericht_name'] ."</h2>";
                    echo 
                  "<p>"$zeile['description'] ."</p>";
                  echo 
                  "</div>";
                  echo 
                  "</div>";
                  echo 
                  "</div>";
                  }
                  mysqli_free_result$db_erg );
                  ?>
                  Danke für alle Antworten bis jetzt.

                  Grüße Daniel

                  Kommentar


                  • #10
                    Funktioniert nicht ist keine gültige Fehlerbeschreibung. Lass dir doch den Fehler ausgeben. http://php-de.github.io/jumpto/sql/#...ehler-ausgeben

                    Hier offensichtlich: Schau mal genau.. welche SQL-Query führst du denn aus? Nicht blind einfach Copy & Paste machen.. mitdenken!

                    PHP-Code:
                                    $sql "SELECT * FROM Cocktails";
                                         
                    $query 'SELECT ... ';
                                                    
                    $db_erg mysqli_query$db_link$sql ); 

                    Kommentar


                    • #11
                      Es geht mir um den nachfolgenden Teil des Codes, der Rest funktioniert.

                      Kann ich nur eine query ausführen?

                      PHP-Code:
                                           $query 'SELECT
                                                      g.gericht_name,
                                                      g.description,
                                                      z.zutat_name,
                                                      r.menge
                                                    FROM
                                                      Gericht g,
                                                      Zutaten z,
                                                      Rezept r
                                                    WHERE
                                                        g.gericht_id = r.gericht_id,
                                                      r.zutat_id = z.zutat_id
                                                      ORDER BY Gericht'
                      ;
                                                      



                      $db_erg2 mysqli_query$db_link$query );
                      while (
                      $zeile2 mysqli_fetch_array$db_erg2MYSQL_ASSOC))
                      {
                        echo 
                      '<tr>
                                <td>'
                      .$zeile2['zutat_name'].'</td>
                                <td>'
                      .$zeile2['zutat_menge'].'</td>
                              </tr>'
                      ;

                      Kommentar


                      • #12
                        Zitat von hausl Beitrag anzeigen
                        Funktioniert nicht ist keine gültige Fehlerbeschreibung. Lass dir doch den Fehler ausgeben.
                        Folgender Fehler tritt auf:
                        Code:
                          #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':
                        LIMIT 0, 25' at line 4
                        bei folgendem Code:
                        Code:
                        SELECT g.gericht_id, g.gericht_name, r.menge, z.zutat_name
                        FROM (Gerichte as g INNER JOIN Rezepte as r ON g.gericht_id = r.gericht_id
                        INNER JOIN Zutaten as z ON r.zutat_id = z.zutat_id

                        Kommentar


                        • #13
                          Code:
                          ... near ': LIMIT 0, 25' at line 4
                          Nö, LIMIT steht nirgends bei dir.

                          Kommentar


                          • #14
                            ERsTiNGo hat die Antwort auf MySQL Datensätze verbinden und ausgeben. gemeldet in Datenbanken
                            Heute, 15:24
                            Spam, Hilft nicht
                            Sag, gehts noch? Was heißt hilft nicht? Für die Frechheit das (#13) als "Spam" zu melden sollte ich den Thread eigentlich schließen.

                            Bitte schau genau hin und lies: Die Fehlermeldung oben besagt eindeutig das ein Fehler in der SQL-Query bei "... LIMIT" auftritt. Das hast du aber nicht in deiner Query... Dh Fehlermeldung und Query passen nicht zusammen. Augen auf und Hirn an!

                            Und:

                            Zitat von Forenrichtlinien
                            Sei sozial
                            Wir haben kein Interesse daran, kostenlos Deine Skripte zu schreiben oder zu reparieren, da das sehr viel Zeit und Mühe kosten kann. Akzeptiere also, dass sich unsere Motivation eventuell von Deiner unterscheidet und wir daher nur Hilfe zur Selbsthilfe geben. Wir sind nicht die Wohlfahrt und akute Programmierprobleme keine Notlagesituation. Wenn doch, wende Dich bitte mit einem Jobangebot an die Community oder einen Programmierer vor Ort.
                            http://www.php.de/articles/regeln-un...renrichtlinien

                            Du hast hier keinen Anspruch auf Hilfe, vergiss das nicht.. Du willst etwas und wir helfen dir umsonst.

                            Kommentar

                            Lädt...
                            X