Mehrere Datenbanken

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

  • #16
    Okay, also der Fehler auf den ich dich hinzuweisen versuche, ist dass da eine schließende Klammer fehlt - da hättest du drauf kommen können (müssen).

    Mit dem In: Das bedeutet ja sowas wie "einer von diesen".

    Zum Beispiel SELECT ... WHERE np.post_id IN(1, 2, 3) gibt alle Einträge zurück, die als post_id 1, 2 oder 3 haben.

    Natürlich kannst du da auch abfragen WHERE kundenname IN ('hans', 'horst', 'klaus'), dann müssen sie in Anführungszeichen. Wie immer bei Strings.

    ich glaube

    Kommentar


    • #17
      Oh mein Gott, natürlich hätte ich die Klammer sehen müssen!

      Naja trotzdem Danke das du da so geduldig versucht mir zu helfen.

      Es wird nun alles Fehlerfrei ausgegeben:

      SELECT np.*, nc.* FROM logistik AS np, logistik_w AS nc WHERE (np.post_id IN (1) && nc.l_id IN (1) )

      mfg

      Kommentar


      • #18
        Dann funktioniert jetzt alles ? das "echo($sql)" kannst du dann wieder wegtun
        ich glaube

        Kommentar


        • #19
          Noch nicht hundertprozentig.

          So sieht jezt der komplette Code aus:

          PHP-Code:
          $l implode(","$_POST['list']);
              
              
          // output of every available post
                  
          $sql "SELECT np.*, nc.* " .
                
          "FROM {$basic->dt['logistik']} AS np, {$basic->dt['logistik_w']} AS nc " .
                
          "WHERE (np.post_id IN (".$l.") && nc.l_id IN (".$l.") )";


          $result['posts'] = $db->sql_query($sql) or die(mysql_error());

                  
          // output post(s)
                  
          while ($row['posts'] = $db->sql_fetch_object($result['posts'])){
                      foreach(
          $row['posts'] as $key => $value){
                          
          $row['posts']->$key stripslashes($value);
                          
                          
                          echo 
          $row['posts']->k_l_name;
                          
                          }
                      
                  } 
          Testweise habe ich mir mal den Namen eines Kunden anzeigen lassen. Erstaunlicher Weise wird dieser unzählige male kopiert und aneinander gereiht...hast du da vielleicht noch eine Idee was das sein könnte?

          mfg

          Kommentar


          • #20
            Tu das echo ... ->k_l_name aus der foreach-Schleife raus.

            Sieht mir alles ein bisschen verkorkst aus das ganze. Aber vorher lief das so, ja?
            ich glaube

            Kommentar


            • #21
              So ok,

              habe noch ein bisschen was verändert. Jetzt sieht es so aus:

              PHP-Code:
              // output post(s)
                      
              while ($row['posts'] = $db->sql_fetch_object($result['posts'])){ 
              Jetzt bekomme ich einen Eintrag nur noch doppelt angezeigt und nicht hunderte male...kann ich das jetzt mit einem Limit lösen? Ich glaube aber nicht, weil ja noch Positionszeile angereiht werden.

              mfg

              Kommentar


              • #22
                Jaa...das ganze lief mal so ^^

                Kommentar


                • #23
                  Deine Lösung hat genau das selbe bewirkt wie meine...d.h. ich habe die Auftagsnummer mal ausgeben lassen.

                  Die Auftragsnummer ist: 9999

                  Ausgegeben bekomme ich aber: 99999999

                  Woher dieser Doppelte eintrag?

                  Kommentar


                  • #24
                    Habe herausgefunden woher der Doppelte Eintrag herkommt. Und zwar hat die Auftragsnummer 9999 Ware zugeteilt bekommen. Genau 2 mal.

                    Durch den Vergleich gibt er mir also jetzt 2 mal die Auftragsnummer aus. Ich muss das ganze jetzt eingrenzen...aber ich denke Limit dürfte der Falsche Befehl sein oder? Denn die Positionszeile werden ja auch noch ausgegeben.

                    mfg

                    Kommentar


                    • #25
                      Das kann man so nicht sagen.

                      Du müsstest dir überlegen, was in den Tabellen $basic->dt['logistik'] und $basic->dt['logistik_w'] drinsteht, was post_id ist und was $l und wo das herkommt, und was du aus den Tabellen haben willst.

                      Den Anfang mit dem Codegenerieren, was du da schriebst, habe ich nämlich nicht verstanden. Wenn du weißt was du abfragen willst und wo das steht, probieren, wenns nicht geht, wieder posten.
                      ich glaube

                      Kommentar


                      • #26
                        Habe eben mal getestet.

                        Wenn ich wieder mehrere Einträge markiere, kommen immer noch mehrere Einträge bei raus. Hier siehst du das mal:

                        999938593467999938593467999938593467999938593467999938593467

                        Richtig ausgegeben müsste es aber so aussehen:

                        9999
                        3869
                        3467

                        Ja es ist schwer zu erklären. Aber ich mach es nochmal ganz kurz:
                        1. Tabelle = Kundendaten (Die ID heisst hier post_id)
                        2. Tabelle = Warendaten (Die ID heisst hier l_id)

                        Post_ID und l_id sind gleich. D.h. die 1 Tabelle ist praktisch wie eine Kategorie und die 2 Tabelle die Einträge für die Kategorien.

                        Ich markiere 1 Box:

                        Code überprüft ob die übergebene ID gleich mit der Post_ID und L_id ist. Ist das der Fall dann möchte ich von Tabelle 1 udn von Tabelle 2 Daten ausgeben, aber nur die, die zusammengehören.

                        So soll das funktionieren.

                        mfg

                        Kommentar


                        • #27
                          Hm. Das kommt jetzt drauf an was du abfragen willst.

                          Alle Kunden mit ihren Waren? Dann ist es ja logisch, dass die Kunden häufiger vorkommen, so oft wie sie bestellt haben eben.

                          EIn Stichwort ist JOIN -> manual.
                          ich glaube

                          Kommentar


                          • #28
                            Vielen Dank,

                            das war genau das richtige. Hier nochmal der Code, falls noch jemand Probleme mit sowas haben sollte:

                            PHP-Code:
                            // output of every available post
                                    
                            $sql "SELECT np.*, nc.* " .
                                  
                            "FROM {$basic->dt['logistik']} np INNER JOIN {$basic->dt['logistik_w']} nc USING (post_id)" .
                                  
                            "WHERE (np.post_id IN (".$l.") && nc.l_id IN (".$l.") )"
                            Jetzt bekomme ich bei allen markierten Felder, jedes nur einzelnd ausgegeben.

                            mfg und THX

                            Kommentar


                            • #29
                              Zu früh gefreut...zwei kleine Probleme haben sich eben eröffnet.

                              Da wäre einmal: Nur bei der ersten Checkbox bekomme ich eine Ausgabe. Bei allen anderen passiert nichts.

                              Und das andere Problem ist, ich bekomme so leider nur 1 Positionszeile ausgegeben. Nicht aber alle anderen die da dazugehören.

                              Hilfe

                              mfg

                              Kommentar


                              • #30
                                Lass dir dann mal wieder die Query ausgeben.

                                Und außerdem
                                PHP-Code:
                                $result['posts'] = $db->sql_query($sql) or die(mysql_error());

                                        
                                // output post(s)
                                        
                                while ($row['posts'] = $db->sql_fetch_object($result['posts'])){
                                            echo(
                                "<pre>");
                                            
                                var_dump($row['posts']);
                                            echo(
                                "</pre>");
                                        } 
                                Also, wenn es jetzt um diese eine Sache geht, dann kriegen wir das bestimmt irgendwann hin - allerdings, wenn du damit mehr vorhast, dann musst du unbedingt ein bisschen Grundlagen nachholen und debugging betreiben, sonst wird das nix
                                ich glaube

                                Kommentar

                                Lädt...
                                X