Verflixtes Ausleseproblem bei Cat und Undercat!

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

  • Verflixtes Ausleseproblem bei Cat und Undercat!

    Hallo Fromgemeinde!

    Ich habe ein Problem und bekomme das seid Stunden nicht in den Griff!

    Beim Auslesen der Bilder die zu einer Kategorie gehören klappt das alles super nur wenn ich auf der selben Seite nach den Unterkategorien die Bilder anzeigen lassen will klappt das nicht!

    Hier mal der Code für die Jump Datei und kurze Erklärung dazu!

    PHP-Code:
    <?php 
    //Javascriptfunktionen für dem Jump 
    <script language="JavaScript"
    <!-- 
    function 
    bhccatjump() { 
       
    document.hcjump.submit(); 

    //--> 

    <!-- 
    function 
    buccatjump() { 
       
    document.ucjump.submit(); 

    //--> 
    </script


    //Der Jumpteil für die Bilder in den Hauptkategorien 
    <form action="bild_list.php" method="get" name="hcjump"
    <
    select name="hcid" class="admintf" onChange="bhccatjump();"
        <
    option>Auswahl</option
        <?
    php 
            $sqlbefehl 
    ="Select hc.id,hc.bcat,uc.hcatid 
                        From  
                            
    $tab_bcats hc 
                        Left Join 
                            
    $tab_bundercats uc 
                        ON (hc.id = uc.hcatid) 
                        "

            
    $ergebnis mysql_query($sqlbefehl)or die(mysql_error()); 
            while(
    $row mysql_fetch_array($ergebnis)){ 
                if(
    $row['hcatid'] != $row['id']) 
                { 
                    echo 
    "<option value=\"".$row['id']."\">".$row['bcat']."</option>"
                } 
            } 
        
    ?> 
    </select> 
    <input type="submit" name="hcjump" value="Go" size="20" style="font-size:10px" class="buttons"> 
    </form> 

    //Der Jumpteil für die Bilder in Unterkategorien  
    <form action="bild_list.php" method="get" name="ucjump"> 
    <select name="ucid" class="admintf" onChange="buccatjump();"> 
        <option>Auswahl</option> 
        <?php 
            $sqlbefehl 
    ="Select id,bundercat From $tab_bundercats"
            
    $ergebnis1 mysql_query($sqlbefehl)or die(mysql_error()); 
            while(
    $row1 mysql_fetch_array($ergebnis1)){ 
                echo 
    "<option value=\"".$row1['id']."\">".$row1['bundercat']."</option>"
            } 
        
    ?> 
    </select> 
    <input type="submit" name="ucjump" value="Go" size="20" style="font-size:10px" class="buttons"> 
    </form> 
    ?>
    Ich denke es ist ersichtlich in dem ersten Jumper soll auf die Bilder verwiesen werden die zu der Hauptkategorie gehören. In dem zweiten Jumper soll auf die Bilder verwiesen werden die in einer Unterkategorie stecken!


    Hier der Code für das auslesen!

    PHP-Code:
    <?php 
    $sqlbefehl 
    ="Select hcid, Count(hcid) As anzahl_hc From $tab_bild Group By hcid"
    $count mysql_query($sqlbefehl)or die(mysql_error()); 
    $counterg mysql_fetch_array($count); 

    if(
    $counterg['anzahl_hc'] >0

        
    $sqlbefehl ="Select id,hcid,bild From $tab_bild Where hcid='".$_GET['hcid']."'"
        
    $ergebnis mysql_query($sqlbefehl)or die(mysql_error()); 
        while(
    $row mysql_fetch_array($ergebnis)){ 
    ?> 
        <tr> 
        <td align="center" class="artaleft"><?php echo $row['bild'?></td> 
        <td align="center" class="artaright">Cat</td> 
        <td align="center" class="artaright">Edit</td> 
        </tr> 
    <?php 
        


    else 

        
    $sqlbefehl ="Select id,ucid,bild From $tab_bild Where ucid='".$_GET['ucid']."'"
        
    $ergebnis1 mysql_query($sqlbefehl)or die(mysql_error()); 
        while(
    $row1 mysql_fetch_array($ergebnis1)){ 
             
            echo 
    "<tr> 
            <td align=\"center\" class=\"artaleft\">"
    .$row1['bild']."</td> 
            <td align=\"center\" class=\"artaright\">Cat</td> 
            <td align=\"center\" class=\"artaright\">Edit</td> 
            </tr>"

             
        } 

    ?>
    Also als erstes ermittel ich mit Select Count ob die hcid (Hauptkategorien id) größer als Null ist,wenn ja dann kommt die eigentliche Abfrage nach der die Bilder angezeigt werden sollen. So für die Bilder in den Hauptkategorien geht das auch ohne Problem! Nur wenn ich dann im else Zweig die nach den Unterkategorien auslesen will geht das nicht,also er listet mir nicht die zur Unterkategorie zugehörigen Bilder an sondern egal welche anklicke er zeigt immer alle Bilder mit Unterkategorie!

    Nun habe ich einen Test gemacht und die Abfrage für die Bilder die nach Unterkategorien ausgelesen werden sollen und das in eine andere Datei geschrieben und im jumper teil dann diese eingetragen und dort ging es dann wie es soll.

    Ich will aber das nicht in zwei verschiedenen Dateien auslesen lassen sondern in einer nach den Bedingungen!

    Was mache ich falsch? Kann mir einer helfen? Vielen Dank 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
    Hi,

    Also als erstes ermittel ich mit Select Count ob die hcid (Hauptkategorien id) größer als Null ist
    Nein, Du wählst alle verschiedenen Hauptkategorien aus, nebst Anzahl der Einträge für selbige. Dann liest Du die Anzahl der Einträge für die erste gefundene Hauptkategorie aus und prüfst, ob die größer als 0 ist. Den Sinn dahinter verstehe wer will...

    Wann soll denn Deiner Meinung nach jemals der else-Zweig ausgeführt werden? Du prüfst ja nicht mal, welches Formular abgeschickt wurde...

    LG

    Kommentar


    • #3
      Also meiner Meinung nach prüfe ich in der Count Abfrage ob es eine Wert in der Spalte hcid gibt der größer als null ist. Ist das der Fall wird dann die erste Abfrage auch korrekt ausgeführt. Nur die zweite im else Zweig die wird nicht ausgeführt. Was heist wenn es einen Wert 0 bei der hcid Spalte gibt soll er die Bilder auslesen die einen Wert in der Spalte ucid haben. Warum ich das so mache ist denke ich deutlich zu sehen aus dem ersten Code Teil!

      Hat jemand einen Tipp für mich?

      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

      Kommentar


      • #4
        Keiner eine Idee?
        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


        • #5
          Zeige halt die Struktur deiner Tabellen und beschreibe genau, was du haben willst. Ich habe keine Lust, für ein offensichtliches Abfrageproblem den ganzen Code durchzusehen.
          Gruss
          H2O

          Kommentar


          • #6
            also ich sehe keinen Fall in dem dies
            if($counterg['anzahl_hc'] >0)
            nicht wahr ist, denn wenn eine hcid vorhanden ist und nur dann selektierst Du und dann ist die Anzahl mindestens eins...
            Das ist ein Logik Problem.
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Ok also hier die Tabellen Struktur für die tabelle bilder!

              id int(14) auto_increment primary key,
              hcid int(14) not null default '0',
              ucid int(14) not null default '0',
              author varchar(100) not null default '0',
              datum int(14) not null default '0',
              bildinfo text not null default '',
              bild varchar(100) not null default '0',
              views int(14) not null default '0'


              Die Tabelle Hauptkategorien

              id int(14) auto_increment primary key,
              bcat varchar(100) not null default '0',
              bstatus int(1) not null default '0',
              hcimage varchar(100) not null default '0',
              hcviews int(14) not null default '0'

              Die Tabelle Unterkategorien

              id int(14) auto_increment primary key,
              hcatid int(14) not null default '0',
              bundercat varchar(100) not null default '0',
              ucimage varchar(100) not null default '0',
              ucstatus int(1) not null default '0',
              ucviews int(14) not null default '0'



              Es soll möglich sein in Hauptkategorien Unterkategorien anzulegen oder auch Bilder. Das ist ja kein Problem und habe ich schon realsisiert. Wie man sieht gibt es in der Tabelle Bilder eine Spalte die hcid heist und eine die ucid heist!

              Bei der Abfrage prüfe ich erst ob in der spalte hcid ein Wert größer als null ist. Ist dieses der Fall dann soll er mir die dazu gehörigen Bilder ausgeben. Das machte ja auch wunderbar wie er soll. Klicke ich eine Kategorie an zeigt er die dazugehörigen Bilder. Nur die zweite Abfrage im else Zweig funktioniert nicht. Dort soll er mir die Bilder ausgeben die zu eine Unterkategorie hat. Das macht er,aber falsch egal welche Unterkategorie ich wähle,er zeigt alle Bilder!

              Darum habe ich beide Scriptteile rein gestellt. Das wo ich die Kategorien wähle und das wo die Ausgabe Abfrage stattfindet!

              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

              Kommentar


              • #8
                Wo prüfst Du das:
                Bei der Abfrage prüfe ich erst ob in der spalte hcid ein Wert größer als null ist.
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Hier prüfe ich das

                  PHP-Code:
                  <?php
                  $sqlbefehl 
                  ="Select hcid, Count(hcid) As anzahl_hc From $tab_bild Group By hcid"
                  $count mysql_query($sqlbefehl)or die(mysql_error()); 
                  $counterg mysql_fetch_array($count); 

                  if(
                  $counterg['anzahl_hc'] >0


                  ?>
                  Ist ein hcid Wert größer als 0 dann führe diese Abfrage aus

                  PHP-Code:
                  <?php
                  $sqlbefehl 
                  ="Select id,hcid,bild From $tab_bild Where hcid='".$_GET['hcid']."'"
                      
                  $ergebnis mysql_query($sqlbefehl)or die(mysql_error()); 
                      while(
                  $row mysql_fetch_array($ergebnis)){ 

                  ?>
                  Und ist der Wert nicht größer 0 soll im else Zweig dann diese Abfrage ausgeführt werden

                  PHP-Code:
                  <?php
                  $sqlbefehl 
                  ="Select id,ucid,bild From $tab_bild Where ucid='".$_GET['ucid']."'"
                      
                  $ergebnis1 mysql_query($sqlbefehl)or die(mysql_error()); 
                      while(
                  $row1 mysql_fetch_array($ergebnis1)){ 
                  ?>
                  Er führt die Abfrage im else Zweig aber falsch aus,er zeigt egal welche Unterkategorie gewählt wird alle Bilder aus die ein Unterkategorie haben.
                  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
                    Original geschrieben von litterauspirna
                    Hier prüfe ich das

                    PHP-Code:
                    <?php
                    $sqlbefehl 
                    ="Select hcid, Count(hcid) As anzahl_hc From $tab_bild Group By hcid"
                    $count mysql_query($sqlbefehl)or die(mysql_error()); 
                    $counterg mysql_fetch_array($count); 

                    if(
                    $counterg['anzahl_hc'] >0


                    ?>
                    Ist ein hcid Wert größer als 0 dann führe diese Abfrage aus
                    Na dann bist Du auf dem Holzweg.
                    HIer prüfst Du nämlich ob der count für ein hcid > 0 ist und der ist IMMER grösser als 0, da nur gezählt wird wenn ein hcid vorhanden ist und der count dann mindestens 1 ist und das IMMER
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar


                    • #11
                      Hast dir die die evaluierten Abfragen ausgeben lassen (echo $sqlbefehl)?
                      Gruss
                      H2O

                      Kommentar


                      • #12
                        btw wird Dir die if() auch nur genau einmal ausgeführt, warum fragst Du also die ganze Tabelle ab, wenn Du nur eine Zeile verarbeitest?
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar


                        • #13
                          Also habe mir $sqlbefehl in der ertsen Abfrage mal ausgeben lassen und da macht er ganau das richtige zum beispiel so!

                          Select id,hcid,bild From bild Where hcid='8' Select id,hcid,bild From bild Where hcid='8'

                          Da liest er mir genau das aus wie er soll,nämlich die Bilder die die hcid 8 haben!

                          Und die andere Abfrage macht was was ich nicht verstehe,obwohl ich da nach ucid auslese zeigt er mir das.

                          Select id,hcid,bild From bild Where hcid='' Select id,hcid,bild From bild Where hcid='' Select id,hcid,bild From bild Where hcid=''

                          Er liest ebenfalls nach hcid aus obwohl in der abfrage aber klar steht er soll nach ucid auslesen!
                          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
                            Weil Deine zweite Abfrage innerhalb der if Abfrage nie ausgeführt wird sondern immer nur die erste, weil Deine if($counterg['anzahl_hc'] >0) immer wahr ist!!!!!
                            Beantworte nie Threads mit mehr als 15 followups...
                            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                            Kommentar


                            • #15
                              Momentan stehe ich auf dem Schlauch. Wie müsste ich das denn adnders schreiben so das die zweite Abfrage auch ausgeführt wird wenn die erst nicht wahr ist?
                              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