-
18.01.12 20:40 #1
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
-
Auf dieselben Parameter zugreifen?
Ohne genauen Code wird es schwer, dir zu helfen.
-
18.01.12 21:17 #3
- 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 ;-)
-
18.01.12 21:20 #4PHP-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.
-
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.
-
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
-
19.01.12 12:48 #7
Das werde ich so mal ausprobieren, danke Yaslaw

Ich lass hier trotzdem mal auf "Unerledigt" falls ich noch Fragen dazu habe.
-
19.01.12 19:13 #8
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
Und fertig ist eine kleine NavigationPHP-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($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);
Geändert von Yaslaw (22.01.12 um 14:24 Uhr) Grund: Fehler behoben
---------------------------------------------------------------------------------------------------
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
-
20.01.12 12:44 #10
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
-
22.01.12 14:12 #11
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($searchitems, 10, true);
//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}&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);
-
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
-
22.01.12 14:37 #13
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($searchitems, 10, true);
//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}&searchpage={$showPageNr}'>{$showPageNr}</a>";
}
}
-
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}&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
-
22.01.12 14:46 #15
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 ?
Interessiert mich nur weil ich das so noch nie gesehen habePHP-Code:$navEntries[] = "<a href='index.php?search={$search}&searchpage={$searchpage}'>{$showPageNr}</a>";
Ähnliche Themen
-
mehrere Abfragen einer DB
Von mkoeni1 im Forum PHPAntworten: 3Letzter Beitrag: 11.10.07, 14:36 -
Mehrere DB-Abfragen gleichzeitig
Von PHP-Fan im Forum PHPAntworten: 16Letzter Beitrag: 12.09.06, 12:53 -
Mehrere If - Abfragen
Von Pinky im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 13.07.06, 19:36 -
Mehrere Tables abfragen
Von Maximus im Forum .NET DatenverwaltungAntworten: 4Letzter Beitrag: 25.10.05, 17:55 -
Mehrere Abfragen, Mehrere Auswertungen -> Alles auf einer Seite?
Von uwee im Forum PHPAntworten: 6Letzter Beitrag: 10.12.04, 14:04



1Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren