Darstellung von Suchergebnissen

Und alles was mit phpMyAdmin seine Verwandtschaft findet hat hier seinen Platz.

Postby kschroeder » 15. June 2007 18:22

Grundsätzlich ja. Du kannst Werte schlicht und einfach addieren.
Entweder mit
[code]
$wert = $wert + 1;
[code]

oder auch

[code]
$wert += 1;
[code]

Wenn Du ja für "weiter" und "zurück" die Seite neu aufrufen möchtest, musst Du natürlich drauf achten, dass Du Dir die alten Werte merkst oder einfach die neuen Werte übergeben.
kschroeder
 
Posts: 254
Joined: 11. May 2007 13:33

Postby Gukie » 21. June 2007 09:59

So, ich habe jetzt über das Wochenende versucht, da mal ein bisschen weiter zu kommen, habe im Internet nach Skripts gesucht, und hab das hier gefunden:

http://www.php-einfach.de/tuts_mysql_bl ... nktion.php

Den Skript habe ich versucht an meiner Suchfunktion anzupassen, war aber leider nicht mehr so ganz Erfolgreich.
Es kommt zwar keine Fehlermeldung wenn ich die Datei aufrufe, aber es werden immer noch alle Ergebnisse angezeigt.

So sieht mein Code zur Zeit aus:

Code: Select all
<?php
                        $seite = $_GET["seite"];  //Abfrage auf welcher Seite man ist

                        //Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
                        if(!isset($seite))
                          { $seite = 1; }

                        //Datenbank Einstellungen -->
                        $server = ('localhost');
                        $user = ('****');
                        $pw = ('*****');
                        $db = ('****');
                        //Datenbank Einstellungen Ende -->

                        // mit Datenbank Verbinden -->
                        $verbindung = mysql_connect($server,$user,$pw)
                        or die ("Keine Verbindung möglich");
                        mysql_select_db($db)
                        or die ("Die Datenbank existiert nicht");
                        // mit Datenbank Verbinden Ende-->



                        //Einträge pro Seite: Hier 15 pro Seite
                        $eintraege_pro_seite = 15;

                        //Ausrechen welche Spalte man zuerst ausgeben muss:

                        $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;


                        //Tabelle Abfragen
                        //Tabelle hei&szlig;t hier einfach: Tabelle
                        $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
                        $ende = $seite * $eintraege_pro_seite


                        //Tabelle Abfragen
                        //Tabelle hei&szlig;t hier einfach: Tabelle
                        $abfrage = "SELECT * FROM $db
                          WHERE code='" . $_POST['code_tb'] . "'
                             OR flughafen='" . $_POST['flughafen_tb'] . "'
                             OR stadt='" . $_POST['stadt_tb'] . "'
                             OR land_de='" . $_POST['land_tb'] . "'
                             LIMIT $start , $ende";
                          $ergebnis = mysql_query($abfrage);
                          while($row = mysql_fetch_object($ergebnis))
                             {echo "<tr>
                             <td>$row->code</td>
                             <td>$row->flughafen</td>
                             <td>$row->stadt</td>
                             <td>$row->land</td>
                             </tr>";}


                          //Jetzt kommt das "Inhaltsverzeichnis",
                          //sprich dort steht jetzt: Seite: 1 2 3 4 5


                          //Wieviele Einträge gibt es überhaupt

                          //Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
                          //also der gleiche Text wie in der Variable $abfrage, blo&szlig;
                          //das hier das LIMIT fehlt
                          //Sonst funktioniert die Blätterfunktion nicht richtig,
                          //und hier kann nur 1 Feld abgefragt werden, also id

                          $result = mysql_query("SELECT id FROM $db");
                          $menge = mysql_num_rows($result);

                          //Errechnen wieviele Seiten es geben wird
                          $wieviel_seiten = $menge / $eintraege_pro_seite;

                          //Ausgabe der Seitenlinks:
                          echo "<div align=\"center\">";
                          echo "<b>Seite:</b> ";


                          //Ausgabe der Links zu den Seiten
                          for($a=0; $a < $wieviel_seiten; $a++)
                          { $b = $a + 1;

                          //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
                          if($seite == $b)
                          {
                          echo "  <b>$b</b> ";
                          }

                          //Aus dieser Seite ist der User nicht, also einen Link ausgeben
                              else
                                 {
                                 echo "  <a href=\"?seite=$b\">$b</a> ";
                                 }
                           }
                           echo "</div>";
                           ?>


Kann mir vielleicht jemand sagen wo mein Fehler da ist?
Ist wahrscheinlich in der Zeile wo ich den LIMIT angebe, aber ich weiss es nicht.
Vielleicht ist es auch noch interessante zu sagen, das ich diese Zeite mal geändert habe, und es hat auch nicht funktioniert

So ist es ja jetzt
Code: Select all
                        $abfrage = "SELECT * FROM $db
                          WHERE code='" . $_POST['code_tb'] . "'
                             OR flughafen='" . $_POST['flughafen_tb'] . "'
                             OR stadt='" . $_POST['stadt_tb'] . "'
                             OR land_de='" . $_POST['land_tb'] . "'
                             LIMIT $start , $ende";


Und so habe ich auch ausprobiert
Code: Select all
                        $abfrage = "SELECT * FROM $db
                          WHERE code='" . $_POST['code_tb'] . "'
                             OR flughafen='" . $_POST['flughafen_tb'] . "'
                             OR stadt='" . $_POST['stadt_tb'] . "'
                             OR land_de='" . $_POST['land_tb'] . "'
                             LIMIT 0, 15";


Sind die zeichen vielleicht falsch gesetzt oder was ist da los?

Ich bedanke mich
Gukie*
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Mätes » 21. June 2007 14:09

Ich habe deinen Post nur (sehr) fix überflogen, aber
einen kleinen fehler gefunden:

LIMIT $start , $ende

ist falsch. Limit $x, $y bedeutet 'starte bei $x und gibt mir $y'.
oder mit etwas mehr fachchinesisch:
[LIMIT {[offset,] row_count | row_count OFFSET offset}]

somit php:
$anzahl = $ende-$start;
sql:
LIMIT $start, $anzahl

ma
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Gukie » 21. June 2007 14:45

Hey, danke für deine antwort
Habe hier deine änderung gemacht, und noch ein bisschen rumgespielt. und jetzt wird die seite nicht mehr angezeigt, sondern eine fehlermeldung
und zwar diese hier


Parse error: syntax error, unexpected T_VARIABLE in xxxxx\ergebnis.php on line 119

was kann das sein?
zeile 119 sieht bei mir so aus

Code: Select all
                        $abfrage = "SELECT * FROM $db
                          WHERE code='" . $_POST['code_tb'] . "'
                             OR flughafen='" . $_POST['flughafen_tb'] . "'
                             OR stadt='" . $_POST['stadt_tb'] . "'
                             OR land_de='" . $_POST['land_tb'] . "'
                             LIMIT $start , $ende-$start";
                          $ergebnis = mysql_query($abfrage);
                          while($row = mysql_fetch_object($ergebnis))
                             {echo "<tr>
                             <td>$row->code</td>
                             <td>$row->flughafen</td>
                             <td>$row->stadt</td>
                             <td>$row->land</td>
                             </tr>";}


Danke
Gukie*
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Mätes » 21. June 2007 15:07

welche von den zeilen ist denn 119?
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Gukie » 21. June 2007 15:16

die erste
ich hab den rest motgepostet, weil alles fast 1 befehl ist
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Mätes » 21. June 2007 15:25

der fehler ist in der zeile davor:
$ende = $seite * $eintraege_pro_seite
dort fehlt ein semikolon

und statt
LIMIT $start , $ende-$start";
schreib lieber
LIMIT $start , " . ($ende-$start) . ";

...
...

m
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Gukie » 21. June 2007 16:32

Oh, wie dumm das ich es übersehen hab :s
Egal, es klappt jetzt halb, da stimmt aber noch eine sache nicht

Jetzt habe ich nur 15 Ergebnisse auf seite Nummer 1, habe auch Links für Seite 2 und Seite 3, aber wenn ich sie öffne, ziegt er nix an... Bzw er zeigt die Seite an, aber die nächsten 15 Einträgen nicht... Habe jetzt auch schon gesucht, die Erklärung auf der Seite wo ich den Skript her hab schon ein paar Mal durchgelesen, und es ist immer noch so.

Mein Code sieht jetzt so aus

Code: Select all
                        $seite = $_GET["seite"];  //Abfrage auf welcher Seite man ist

                        //Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
                        if(!isset($seite))
                          { $seite = 1; }


                        //Datenbank Einstellungen -->
                        $server = ('localhost');
                        $user = ('*');
                        $pw = ('*');
                        $db = ('*');
                        //Datenbank Einstellungen Ende -->



                        // mit Datenbank Verbinden -->
                        $verbindung = mysql_connect($server,$user,$pw)
                        or die ("Keine Verbindung möglich");
                        mysql_select_db($db)
                        or die ("Die Datenbank existiert nicht");
                        // mit Datenbank Verbinden Ende-->




                        //Einträge pro Seite: Hier 15 pro Seite
                        $eintraege_pro_seite = 15;


                        //Tabelle Abfragen
                        //Tabelle hei&szlig;t hier einfach: Tabelle
                        $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
                        $ende = $seite * $eintraege_pro_seite;


                        //Tabelle Abfragen
                        //Tabelle hei&szlig;t hier einfach: Tabelle
                            $select = "SELECT * FROM $db WHERE
                                 code='" . $_POST['code_tb'] . "'
                              OR flughafen='" . $_POST['flughafen_tb'] . "'
                              OR stadt='" . $_POST['stadt_tb'] . "'
                              OR land_de='" . $_POST['land_tb'] . "'
                              LIMIT $start , " . ($ende-$start) . "";
                           $ergebnis = mysql_query($select);
                                 while($row = mysql_fetch_object($ergebnis))
                                    {echo "<tr>
                                           <td>$row->code</td>
                                           <td>$row->flughafen</td>
                                           <td>$row->stadt</td>
                                           <td>$row->land</td>
                                           </tr>";}


                          //Jetzt kommt das "Inhaltsverzeichnis",
                          //sprich dort steht jetzt: Seite: 1 2 3 4 5


                          //Wieviele Einträge gibt es überhaupt

                          //Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
                          //also der gleiche Text wie in der Variable $abfrage, blo&szlig;
                          //das hier das LIMIT fehlt
                          //Sonst funktioniert die Blätterfunktion nicht richtig,
                          //und hier kann nur 1 Feld abgefragt werden, also id

                          $result = mysql_query("SELECT code FROM $db WHERE
                                 code='" . $_POST['code_tb'] . "'
                              OR flughafen='" . $_POST['flughafen_tb'] . "'
                              OR stadt='" . $_POST['stadt_tb'] . "'
                              OR land_de='" . $_POST['land_tb'] . "'");
                          $menge = mysql_num_rows($result);


                          //Errechnen wieviele Seiten es geben wird
                          $wieviel_seiten = $menge / $eintraege_pro_seite;

                          //Ausgabe der Seitenlinks:
                          echo "<div align=\"center\">";
                          echo "<b>Seite:</b> ";


                          //Ausgabe der Links zu den Seiten
                          for($a=0; $a < $wieviel_seiten; $a++)
                          { $b = $a + 1;

                          //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
                          if($seite == $b)
                          {
                          echo "  <b>$b</b> ";
                          }

                          //Aus dieser Seite ist der User nicht, also einen Link ausgeben
                              else
                                 {
                                 echo "  <a href=\"?seite=$b\">$b</a> ";
                                 }
                           }
                           echo "</div>";
                           ?>
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Mätes » 22. June 2007 09:08

nun sag mir bitte bitte bitte, das es in der tabelle mehr als 15 zeilen gibt
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Gukie » 22. June 2007 10:13

ja, da gibt es mehr als 15 zeilen
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Mätes » 22. June 2007 10:23

was solls, ich hab ja zeit :)

lass dir mal per
echo '<br>' . $select . '<br>';

den SQL-String ausgeben, interessant ist der auf
seite 2 oder 3, und poste den.
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Gukie » 22. June 2007 10:39

Seite 2

Code: Select all
SELECT * FROM *** WHERE code='' OR flughafen='' OR stadt='' OR land_de='' LIMIT 15 , 15


Seite 3

Code: Select all
SELECT * FROM *** WHERE code='' OR flughafen='' OR stadt='' OR land_de='' LIMIT 30 , 15


Ja, $ende bleibt immer 15 (warum auch immer), aber ich habs schon anders versucht, und es ging immer noch net...

Danke, dass du mir hilfst
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Mätes » 22. June 2007 10:46

und jetzt hätt ich (doch) gern noch den sql von seite 1,
dann schau bitte selber nochens drüber,
und dann sag mir, ob dir irgendwas auffällt.
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Gukie » 22. June 2007 10:54

Seite 1

Code: Select all
SELECT * FROM *** WHERE code='' OR flughafen='' OR stadt='' OR land_de='deutschland' LIMIT 0 , 15


Mir fallen 2 Sachen auf
Einmal bleibt mein limit immer x, 15
Und dann hab ich ab seite 2 kein suchbegriff mehr
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Gukie » 20. July 2007 14:49

Hallo,

meine Seite funktioniert jetzt fast richtig, aber eine Sache gefällt mir nicht ganz

Mein Select auf Seite 1 Sieht so aus:
Code: Select all
SELECT * FROM *** WHERE code='' OR flughafen='' OR stadt='' OR land_de='Deutschland' LIMIT 0 , 15

Super, es werden nur 15 Ergebnisse angezeigt

Auf Seite 2
Code: Select all
SELECT * FROM *** WHERE code='' OR flughafen='' OR stadt='' OR land_de='Deutschland' LIMIT 15 , 30

Aber es werden nicht nur 15 Ergebnisse angezeigt, sondern 20


Es kommt aber nicht nur bei dieser Abfrage vor.
Bei einer anderen, ist es auch so

Seite 1
Code: Select all
SELECT * FROM *** WHERE art='Hochhaus' LIMIT 0 , 1

Wird wie auch oben, nur 1 Ergebnis angezeigt

Seite 2
Code: Select all
SELECT * FROM *** WHERE art='Hochhaus' LIMIT 1 , 2

Da werden wieder 2 Ergebnisse angezeigt.

Es ist für mich sehr unlogisch, aber viellelicht weiss jemand woran es liegt.

Danke

Gukie*
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

PreviousNext

Return to phpMyAdmin

Who is online

Users browsing this forum: No registered users and 31 guests