Blätterfunktion mehrere Abfragen

Starfox2007

Mitglied
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 :)
 
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 ;-)
 
PHP:
$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.
 
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:
$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:
while ($suche = $db->fetcharray($result1)){
    $items[] = array('source' =>  'table1', 'id' => $suche['id']);
}
 
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 ?
 
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:
//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($items, 2, true);

//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
 
Zuletzt bearbeitet:
Zurück