tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
744
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Hi zusammen,

    Ich habe 5 Mysql Abfragen und dafür 5 while Schleifen. Wie bekomme ich eine Blätterfunktion hin die für alle 5 Schleifen bzw Abfragen funktioniert ?

    Für 1 Abfrage ist das ja kein Problem
     

  2. #2
    Avatar von Lime
    Lime Lime ist gerade online frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    373
    Auf dieselben Parameter zugreifen?
    Ohne genauen Code wird es schwer, dir zu helfen.
     

  3. #3
    benutzername benutzername ist offline Mitglied
    Registriert seit
    Nov 2003
    Beiträge
    24
    Eventuell kannst Du auch aus den 5 Abfragen eine machen und alles andere sparsam in eine Session packen.

    Das war jetzt aber eben mal nur eine Idee aus der Glaskugel. Pack am besten mal Deinen Code hier rein
     
    Ich liebe Online Spiele ;-)

  4. #4
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    PHP-Code:
    $search1 "SELECT name, rang, icq FROM ".$sqltab10." WHERE name LIKE '%".$db->escape($search)."%' OR email LIKE '%".$db->escape($search)."%' OR rang LIKE '%".$db->escape($search)."%' OR icq LIKE '%".$db->escape($search)."%'";

    $search2 "SELECT name, rang, icq FROM ".$sqltab12." WHERE name LIKE '%".$db->escape($search)."%' OR email LIKE '%".$db->escape($search)."%' OR rang LIKE '%".$db->escape($search)."%' OR icq LIKE '%".$db->escape($search)."%'";

    $search3 "SELECT acc, name, char, klasse FROM ".$sqltab14." WHERE acc LIKE '%".$db->escape($search)."%' OR name LIKE '%".$db->escape($search)."%' OR char LIKE '%".$db->escape($search)."%' OR klasse LIKE '%".$db->escape($search)."%'";

    $search4 "SELECT gilde, beschreibung, homepage, forum, gildenbanner FROM ".$sqltab15." WHERE gilde LIKE '%".$db->escape($search)."%' OR beschreibung LIKE '%".$db->escape($search)."%' OR homepage LIKE '%".$db->escape($search)."%' OR forum LIKE '%".$db->escape($search)."%' OR gildenbanner LIKE '%".$db->escape($search)."%'";

    $search5 "SELECT headername, headertext, inhalt, pageId FROM ".$sqltab23." WHERE headername LIKE '%".$db->escape($search)."%' OR headertext LIKE '%".$db->escape($search)."%' OR inhalt LIKE '%".$db->escape($search)."%'";



    $result1 $db->query($search1);
    $result2 $db->query($search2);
    $result3 $db->query($search3);
    $result4 $db->query($search4);
    $result5 $db->query($search5);

    $countsearchkeys1 $db->fetchnum($result1);
    $countsearchkeys2 $db->fetchnum($result2);
    $countsearchkeys3 $db->fetchnum($result3);
    $countsearchkeys4 $db->fetchnum($result4);
    $countsearchkeys5 $db->fetchnum($result5);

    // Alle Ergebnisse zählen
    $countsearchkeys $countsearchkeys1 $countsearchkeys2 $countsearchkeys3 $countsearchkeys4 $countsearchkeys5;

    while (
    $suche $db->fetcharray($result1))
    {
    Ausgabe
    }

    while (
    $suche $db->fetcharray($result2))
    {
    Ausgabe
    }

    .
    .


    Es werden aber noch mehr wie nur die 5 Abfragen weil das eine Suche ist die über noch mehr Mysql Tabellen gehen wird.
     

  5. #5
    Avatar von Lime
    Lime Lime ist gerade online frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    373
    Ich kann dir z.B. http://www.cw-internetdienste.de/dev/pager/ nahe legen. Theoretisch kannst du ja alle Abfragen auf eine Variable zurückführen. Problematisch wirds nur, wenn eine Tabelle bei 10 Ergebnissen aufhört und eine andere erst bei 40, dann hast du bei der 1. schon Mal keine Ergebnisse mehr.
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Die Resultate in einen mehrstufigen Array schreiben. Der Arrays sollte etwa so aussehen
    Jeder Fund in einer Tabelle wird als neuen Array in den Array eingfügt. So kannst du über den aubtarray navigieren und hast trotzdem zu jedem Eintrag die Infos woher der Fund kommt
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    $item = array(
        array('source' =>  'table1', 'id' => 12),
        array('source' =>  'table1', 'id' => 25),
        array('source' =>  'table1', 'id' => 43),
        array('source' =>  'table2', 'id' => 12),
        array('source' =>  'table3', 'id' => 3),
        array('source' =>  'table3', 'id' => 7)
    )

    Dieser

    Dazu musst du bei jeder Tabelle die ID mit ausgeben
    Anschliessend
    PHP-Code:
    while ($suche $db->fetcharray($result1)){
        
    $items[] = array('source' =>  'table1''id' => $suche['id']);

     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Das werde ich so mal ausprobieren, danke Yaslaw

    Ich lass hier trotzdem mal auf "Unerledigt" falls ich noch Fragen dazu habe.
     

  8. #8
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Ok soweit sogut, ich hab das Array jetzt mit den Abfragen gefüllt, und hab zu jeder Abfrage meine ID und meine Tabelle woher die Daten kommen.

    Und jetzt ?

    Brauch noch einen Denkanstoss,
    ich hab ja immer noch die While Schleifen mit den Ausgaben wie bekomm ich da jetzt eine Blätterfunktion hin ?

    Ich brauch ja ein LIMIT von sagen wir 10 Datensätzen pro Seite, da muss ich doch aber wieder die Abfragen bearbeiten.

    Oder das Array mit allen Daten füllen und dann über das gesamte Array ausgeben ?
     

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Etwa so.
    Pro SQL noch ein Feld namens title (Also Alias von irgendwas) definieren und dieses Resultat dem Array hinzufügen.
    Anschliessend durch den Array navigieren
    PHP-Code:
    //Die Aktuelle Page ermitteln
    $actPageNr = isset($_GET['pageNr']) ? $_GET['pageNr'] : 0;

    //Simulierte Daten. Ich habe sie noch um den Anzeigetitel ergänzt. Dieser kann je nach Teballe was anderes
    //sein
    $items = array(
        array(
    'source' =>  'users''id' => 12'title' => 'Peter'),
        array(
    'source' =>  'users''id' => 25'title' => 'Hans'),
        array(
    'source' =>  'users''id' => 43'title' => 'Daniel'),
        array(
    'source' =>  'orte''id' => 12'title' => 'Bahnhof'),
        array(
    'source' =>  'marken''id' => 3,  'title' => 'BMW'),
        array(
    'source' =>  'marken''id' => 7,  'title' => 'Audi')
    );

    //Die Items in Seiten aufteilen
    $pages array_chunk($items2true);

    //Navigator erstellen
    foreach($pages as $pageNr => $items){
        
    //Die Anzuzeigenden beginnen nicht mit 0
        
    $showPageNr $pageNr+1;
        if(
    $actPageNr == $pageNr){
            
    $navEntries[] = "<b>{$showPageNr}</b>";        
        }else{
            
    $navEntries[] = "<a href = '?pageNr={$pageNr}'>{$showPageNr}</a>";
        }
    }
    echo 
    implode(' | '$navEntries);

    echo 
    '<hr />';

    //Die dazugehörigen Items ausgeben
    foreach($pages[$actPageNr] as $item){
        
    //Im Pfad die ID und die Source mitgeben. Somit kannst du nachher die Richtigen Daten abholen
        
    $itemHTML[] = "<a href='?itemId={$item['id']}&source={$item['source']}'>{$item['title']}</a>";    
    }
    echo 
    implode("<br />\n"$itemHTML); 
    Und fertig ist eine kleine Navigation
    Geändert von Yaslaw (22.01.12 um 14:24 Uhr) Grund: Fehler behoben
    Starfox2007 bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Ah ok, das wollt ich wissen du speicherst dann die Daten auch in dem Array.

    Ok ich mach mich heute mal ans umsetzen, Vielen Dank
     

  11. #11
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Funktioniert wunderbar soweit, nur irgendwo ist ein Fehler bei der der Seitengenerierung.

    Mir wird angezeigt:

    Seiten: 0 | 2 | 3 | 4 wenn ich auf Page 0 bin.

    Wenn ich auf Page 1 bin siehts so aus: 1 | 1 | 3 | 4

    irgendwo iss da noch der Wurm drin, ich suche mal

    PHP-Code:
    // Aktuelle Seite aus URL ermitteln

    $aktseite preg_replace"/[^0-9]/i"""$_GET["searchpage"] ); 
    $aktseite = (int) $aktseite;

    //Die Items in Seiten aufteilen
    $seiten array_chunk($searchitems10true);

    //Navigator erstellen
    foreach($seiten as $searchpage => $searchitems){
        
    //Die Anzuzeigenden beginnen nicht mit 0
        
    $showPageNr $searchpage+1;
        if(
    $aktseite == $searchpage){
            
    $navEntries[] = "<b>{$searchpage}</b>";        
        }else{
            
    $navEntries[] = "<a href='index.php?search={$search}&amp;searchpage={$searchpage}'>{$showPageNr}</a>";
        }
    }
    echo 
    implode(' | '$navEntries);

    echo 
    '<hr />';

    //Die dazugehörigen Items ausgeben
    foreach($seiten[$aktseite] as $item){
        
    //Im Pfad die ID und die Source mitgeben. Somit kannst du nachher die Richtigen Daten abholen
        
    $itemHTML[] = "<a href='?itemId={$item['id']}&source={$item['source']}'>{$item['titel']}</a>";    
    }
    echo 
    implode("<br />\n"$itemHTML); 
     

  12. #12
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Du gibst dort $searchpage aus und nicht $showPageNr. Das ist der Fehler.
    Der Fehler war schon in meinem Beispiel falsch. Habs dort korrigiert
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  13. #13
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Irgendwas stimmt immernoch nicht,

    jetzt habe ich zwar z.b. Seite 1 | 2 | 3 | 4

    aber wenn ich auf Seite 1 bin wird mir Seite 2 als aktuell angezeigt und die "Items" für Seite 4 werden nicht mehr ausgegeben.

    Fehlerausgabe für die jeweils letzte Seite in diesem Fall Seite 4von4:

    Notice: Undefined offset: 4 in search.php on line 170

    Warning: Invalid argument supplied for foreach() in search.php on line 170

    Notice: Undefined variable: itemHTML in search.php on line 175

    Warning: implode() [function.implode]: Invalid arguments passed in search.php on line 175

    PHP-Code:
    //Die Items in Seiten aufteilen
    $seiten array_chunk($searchitems10true);

    //Navigator erstellen
    foreach($seiten as $searchpage => $searchitems){
        
    //Die Anzuzeigenden beginnen nicht mit 0
        
    $showPageNr $searchpage+1;
        if(
    $aktseite == $searchpage){
            
    $navEntries[] = "<b>{$showPageNr}</b>";        
        }else{
            
    $navEntries[] = "<a href='index.php?search={$search}&amp;searchpage={$showPageNr}'>{$showPageNr}</a>";
        }

     

  14. #14
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Warum machst du ein Link auf $showpage? Der Link sollte auf $searchpage gehen und $showpage anzeigen
    PHP-Code:
            $navEntries[] = "<a href='index.php?search={$search}&amp;searchpage={$searchpage}'>{$showPageNr}</a>"
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  15. #15
    Avatar von Starfox2007
    Starfox2007 Starfox2007 ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    87
    Ah Ok hab ich wohl übersehen, jetzt passt alles.

    Die Seitennummer in der URL ist bei Seite 1 jetzt 0, was aber stimmen müsste weil wir ja unten 1 dazugezählt haben.

    Eine Frage noch, wofür machst du die Klammern im Link ?

    PHP-Code:
    $navEntries[] = "<a href='index.php?search={$search}&amp;searchpage={$searchpage}'>{$showPageNr}</a>"
    Interessiert mich nur weil ich das so noch nie gesehen habe
     

Ähnliche Themen

  1. mehrere Abfragen einer DB
    Von mkoeni1 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 11.10.07, 14:36
  2. Mehrere DB-Abfragen gleichzeitig
    Von PHP-Fan im Forum PHP
    Antworten: 16
    Letzter Beitrag: 12.09.06, 12:53
  3. Mehrere If - Abfragen
    Von Pinky im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 13.07.06, 19:36
  4. Mehrere Tables abfragen
    Von Maximus im Forum .NET Datenverwaltung
    Antworten: 4
    Letzter Beitrag: 25.10.05, 17:55
  5. Antworten: 6
    Letzter Beitrag: 10.12.04, 14:04