Werte von zwei Tabellen!Bitte Hilfe!

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

  • Werte von zwei Tabellen!Bitte Hilfe!

    Hallo @ all! Ich wusste nicht wie die Beitragseinfuhrung schreiben sollte.

    Mein Problem ist folgendes ich bin dabei ein Newssystem mit Kategorien zu schreiben und mache das über zwei verschiedene Tabellen die eine heist

    newscat und hat folgenden Feldinhalt
    id,catname

    Die zweite heist news und hat folgende Feldinhalte
    id,catid,author,titel,email,wahl,url,urlname,text,datum


    Ich möchte jetzt erreichen das ich über eine angelegte Kategorie den entsprechenden Newsbeitrag aufrufen kann. Wie das in einer Tabelle geht weis ich aber über zwei Tabellen scheiter ich leider.

    Hier der Code für die ausgegebenen Kategorien!

    PHP-Code:
    <?php
    $newscat_result 
    mysql_query("Select * From $tab_newscat")or die(mysql_error());
        while(
    $newscat_row = @mysql_fetch_array($newscat_result)){
            
    $newscat_id            =    $newscat_row['id'];
            
    $newscat_catname    =    $newscat_row['catname'];
    echo
    "
    <tr>
    <td align=\"left\">
    &nbsp;&nbsp;<a href=\"show_news.php?id=\">"
    .$newscat_catname."-News</a>
    </td>
    </tr>
    "
    ;
    }
    ?>

    Und hier der Code für die newsausgabe!
    PHP-Code:
    $news_result mysql_query("Select * From $tab_news")or die(mysql_query());
    while(
    $news_row = @mysql_fetch_array($news_result)){

            
    $news_id        =    $news_row['id'];
            
    $news_catid        =    $news_row['catid'];
            
    $news_author    =    $news_row['author'];
            
    $news_titel        =    $news_row['titel'];
            
    $news_email        =    $news_row['email'];
            
    $news_wahl        =    $news_row['wahl'];
            
    $news_url        =    $news_row['url'];
            
    $news_urlname    =    $news_row['urlname'];
            
    $news_text        =    nl2br($news_row['text']);
            
    $news_datum        =    $news_row['datum'];
            
            
    $datum=date("d.m.Y H:i",$news_datum);

    Die catid wird beim einsenden eines News auch mit eingetragen nur bekomme ich das auslesen nicht hin. Vieleicht möchte mir jemand helfen.

    Ich denke das in diesem Link
    PHP-Code:
    href=\"show_news.php?id=\">".$newscat_catname."-News</a> 
    auf die catid in der newstabelle verwiesen werden muss und dort die where clausel entsprechend geschrieben werden muss,habe es stundenlang probiert ohne erfolg.


    MFG der Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

  • #2
    Das ist eigentlich ein grundlegendes SQL-Problem und das Zauberwort lautet JOINs. Such danach, es gibt auch einen entsprechenden "Wichtig"-Thread.
    ICH BIN ICH!!!

    Kommentar


    • #3
      Ich habe jetzt mal gelesen und es so versucht.

      Der Link zur show_piccat sieht jetzt so aus
      PHP-Code:
      <a href=\"show_thumb.php?id='".$piccat_id."'\">".$piccat_catname."</a> 
      Und die Abfrage in der show_thumb sieht so aus
      PHP-Code:
      <?php
      $bild_result 
      mysql_query("Select piccat.id,piccat.catname From $tab_piccat
                                  LEFT JOIN 
      $tab_bild ON catid")or die(mysql_error());
      $i=1;
      while(
      $bild_row = @mysql_fetch_array($bild_result)){
              
              
      $bild_id        =    $bild_row['id'];
              
      $bild_catid        =    $bild_row['catid'];
              
      $bild_bild        =    $bild_row['bild'];
              
      $bild_view        =    $bild_row['view'];
      }
      Das ERgebnis davon ist,das es keine mysql Fehlermeldung gibt,er mir auch ein Ergebnis liefert. Nur eigentlich sollen in der Kategorie Personal zum Beispiel drei Bilder angezeigt werden. Ich habe noch zwei andere Kategorien angelegt und es zeigt egal welche Kategorie ich anklicke immer drei Reihen mit 9 Bildern an.
      Bzw nur drei Reihen und das Bild gar nicht.
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        Gib doch erstmal die Query aus um zu überprüfen, ob da auch das drin steht, was du erwartest.

        Gib auch mal nen Link, vielleicht kann man dann deine unverständliche Erklärung am Ende nachvollziehen.
        ICH BIN ICH!!!

        Kommentar


        • #5
          Also das hier gibt mir der query aus

          Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catidSelect piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catidSelect piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catidSelect piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid Select piccat.id,piccat.catname From piccat LEFT JOIN bild ON catid


          Ich kann keinen Link geben da ich die Seite noch offline betreibe.

          Ich versuche es noch ma zu erklären.

          Ich habe eine Datei die heist show_piccat und dort werden die Kategorien ausgegeben die als Links dargestellt werden.

          <a href="show_pic.php">Kategoriename</a>
          was hinter das php im Link kommt ist mein erstes Problem

          Dann habe ich eine Datei Namens show_thumb,dort werden die Bilder ausgegeben. In die Tabelle der bilder (bild) wird auch die catid geschrieben,also die id aus der Tabelle piccat.

          Nun will ich das wenn ich eine Kategorie anklicke die richtigen Bilder dazu erscheinen in der show_pic. Und das bekomme ich nicht hin.

          Jetzt besser? Ich hoffe.
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #6
            Das ist nicht eine Query sondern gleich ein halbes Dutzend.

            <a href="show_pic.php?cat_id=<cat_id>">...</a>
            Ist es das, was du suchst?

            Kommentar


            • #7
              Ich weis der query ist nicht das was es sein sollte,das ist ja mein Problem.

              Mein Link sieht so aus und verweist auch richtig da hin.D

              <a href=\"show_thumb.php?id='".$piccat_row['id']."'\">".$piccat_catname."</a>

              as Problem ist das richtige anzeigen,sprich ich habe in der Select Anweisung mit dem left join was falsch.

              Hier der Select Code noch mal

              PHP-Code:
              $bild_result mysql_query("Select piccat.id,piccat.catname From $tab_piccat
                                          LEFT JOIN 
              $tab_bild ON catid")or die(mysql_error());

              while(
              $bild_row = @mysql_fetch_array($bild_result)){
                      
                      
              $bild_id        =    $bild_row['id'];
                      
              $bild_catid        =    $bild_row['catid'];
                      
              $bild_bild        =    $bild_row['bild'];
                      
              $bild_view        =    $bild_row['view'];

              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar


              • #8
                Warum führst/gibst du die Query mehrfach aus?
                Wozu übergibst du in der URL einen Parameter, wenn du diesen nicht verwendest?
                Wie viele Zeilen gibt die die genannte Query zurück?
                Wie viele Zeilen erwartest du statt dessen?

                Deine Frage ist zu generell. Das klingt so, als ob dir jemand den richtigen Code posten soll. Das ist aber nicht unsere aufgabe. (oder was zahlst du? )

                Also debuggen, und im klaren werden wo dein Problem eigentlich liegt. Wenn du das vernünftig benennen kannst, dann findest du die Lösung so schnell selbst, dass du unsere Hilfe gar nicht mehr brauchst, oder aber - wenn das Brett vorm Kopf so groß ist - können wir dir sagen wo das Problem liegt.

                Aber wie gesagt, aktuell sieht es nach nem, "Ich weiß nichts, macht mal!" aus.
                ICH BIN ICH!!!

                Kommentar


                • #9
                  Original geschrieben von IchBinIch
                  Warum führst/gibst du die Query mehrfach aus?
                  Wozu übergibst du in der URL einen Parameter, wenn du diesen nicht verwendest?
                  Wie viele Zeilen gibt die die genannte Query zurück?
                  Wie viele Zeilen erwartest du statt dessen?

                  Deine Frage ist zu generell. Das klingt so, als ob dir jemand den richtigen Code posten soll. Das ist aber nicht unsere aufgabe. (oder was zahlst du? )

                  Also debuggen, und im klaren werden wo dein Problem eigentlich liegt. Wenn du das vernünftig benennen kannst, dann findest du die Lösung so schnell selbst, dass du unsere Hilfe gar nicht mehr brauchst, oder aber - wenn das Brett vorm Kopf so groß ist - können wir dir sagen wo das Problem liegt.

                  Aber wie gesagt, aktuell sieht es nach nem, "Ich weiß nichts, macht mal!" aus.
                  Ganz so wie du es geschrieben hast ist wirklich nicht,auch wenn so hier aussieht. Also ich habe mich damit beschäftigt und ein wenig rechergiert. Also eine Join Anweisung ist hier im Prinzip überhaupt nicht nötig,weil es sich hier bei den beiden Taben um eine 1:n Beziehung handelt,was heist eine Kategorie in der Tabelle piccat kann viele Datensätze aus der Tabelle bild haben. So nun soviel dazu,das Problem was ich habe und denke das da der Fehler liegt ist,das ich entweder in dem Link der Kategorie der auf die id bzw. catid in der Tabelle bild verweisen soll falsch geschrieben ist oder ich in der wehre clausel in der tabelle bild was falsch geschrieben habe. Hier noch mal die Codes zu übersicht

                  PHP-Code:
                  <?php
                  //Der Code der show_piccat.php wo die Kategorien ausgeldes werden

                  $piccat_result mysql_query("Select * From $tab_piccat")or die(mysql_error());
                      while(
                  $piccat_row = @mysql_fetch_array($piccat_result)){
                          
                  $piccat_id            =    $piccat_row['id'];
                          
                  $piccat_catname        =    $piccat_row['catname'];
                  echo
                  "
                  <tr>
                  <td align=\"left\">
                  &nbsp;&nbsp;

                  //der Link der auf die catid in der show_thumb verweisen soll
                  <a href=\"show_thumb.php?id='"
                  .$piccat_row['id']."'\">".$piccat_catname."</a>
                  </td>
                  </tr>
                  "
                  ;
                  }
                  ?>


                  <?php
                  //das der Code der show_thumb.php wo die Bilder der zugehörigen catid ausgelesen und angezeigt werden sollen

                  $bild_result mysql_query("Select * From $tab_bild where catid='".$bild_row['catid']."'")or die(mysql_error());

                  while(
                  $bild_row = @mysql_fetch_array($bild_result)){
                          
                          
                  $bild_id        =    $bild_row['id'];
                          
                  $bild_catid        =    $bild_row['catid'];
                          
                  $bild_bild        =    $bild_row['bild'];
                          
                  $bild_view        =    $bild_row['view'];
                  }
                  Und hier irgendwo liegt ein Fehler und ich habe gesucht und versucht ihn zu beheben es leider nicht geschafft,vieleicht ist es jetzt besser erklärt und es kann jemand helfen! Ich finde den Fehler nicht.
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  http://www.lit-web.de

                  Kommentar


                  • #10
                    PHP-Code:
                    $bild_result mysql_query("Select * From $tab_bild where catid='".$bild_row['catid']."'")or die(mysql_error()); 
                    Wo kommt denn $bild_row hier her? Wenn du da die ID aus der Url eintragen willst musst du natürlich $_GET benutzen. Grundlagen!
                    Zuletzt geändert von tontechniker; 13.01.2008, 11:52.
                    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                    Kommentar


                    • #11
                      Original geschrieben von tontechniker
                      PHP-Code:
                      $bild_result mysql_query("Select * From $tab_bild where catid='".$bild_row['catid']."'")or die(mysql_error()); 
                      Wo kommt denn $bild_row hier her? Wenn du da die ID aus der Url eintragen willst musst du natürlich $_GET benutzen. Grundlagen!

                      Hallo und danke für die Antwort. Habe das mal geändert aber funktionieren tut es immer noch nicht,es bringt mir keine Ausgabe. So sieht jetzt der Query aus.

                      PHP-Code:
                      $bild_result mysql_query("Select * From $tab_bild where catid='".$_GET['catid']."'")or die(mysql_error()); 
                      Ich verzweifel langsam. Schnief
                      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                      http://www.lit-web.de

                      Kommentar


                      • #12
                        Bau das mal um zu
                        PHP-Code:
                        $sql "Select * From $tab_bild where catid='".$_GET['catid']."'";
                        echo 
                        $sql;
                        $bild_result mysql_query($sql)or die(mysql_error()); 
                        Und in die erste Zeile deines Scripts schreib mal bitte
                        PHP-Code:
                        error_reporting(E_ALL); 

                        Kommentar


                        • #13
                          Original geschrieben von onemorenerd
                          Bau das mal um zu
                          PHP-Code:
                          $sql "Select * From $tab_bild where catid='".$_GET['catid']."'";
                          echo 
                          $sql;
                          $bild_result mysql_query($sql)or die(mysql_error()); 
                          Und in die erste Zeile deines Scripts schreib mal bitte
                          PHP-Code:
                          error_reporting(E_ALL); 
                          Also bei der Ausgabe von $sql bringt er mir das hier Select * From bild where catid=''.
                          Daraus lese ich das er keine ID übergibt bzw lesen kann. Das error_reporting(E_ALL); habe ich in meiner kopf.php die überall eingebunden wird. ich bekomme auser Notice Sachen keine Fehler meldung
                          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                          http://www.lit-web.de

                          Kommentar


                          • #14
                            Original geschrieben von litterauspirna
                            Also bei der Ausgabe von $sql bringt er mir das hier Select * From bild where catid=''.
                            Daraus lese ich das er keine ID übergibt bzw lesen kann.
                            Du übergibst einen Parameter namens id und willst auf einen namens catid zugreifen.

                            Kommentar


                            • #15
                              Also es ist vollbracht ich ahbe den Fehler gefunden. Und der war folgender in dem Link hier.

                              PHP-Code:
                              //so war der Link erst

                              echo"<a href=\"show_thumb.php?id='".$piccat_row['id']."'\">".$piccat_catname."</a>";

                              //und so ist er gändert

                              echo"<a href=\"show_thumb.php?catid=".$piccat_row['id']."\">".$piccat_catname."</a>"
                              Die Fehler waren die falsche Parameter übergabe und die zwei Kleinen Hochkommas. Nun geht es. Aber trotzdem vielen Dank allen hier für die Mühe der Unterstützung
                              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                              http://www.lit-web.de

                              Kommentar

                              Lädt...
                              X