+ Antworten
Ergebnis 1 bis 10 von 10

Thema: Problem bei der Ausgabe der Ergebnisse der Volltextsuche (MYSQL)

  1. #1
    TP-Junior Mandible macht alles soweit korrekt
    Registriert seit
    Apr 2011
    Ort
    Ruhrgebiet
    Beiträge
    8

    Problem bei der Ausgabe der Ergebnisse der Volltextsuche (MYSQL)

    Hallo zusammen, folgendes Problem hält mich schon einige Tage auf Trab:

    Ich habe hier ein simples Script, um die Ergebnisse der MYSQL-Volltextsuche umblättern zu können.

    PHP-Code:
    $host     ""
    $user     ""
    $password ""
    $database ""

    $table    "";
    $db mysql_connect ('') or die (mysql_error);
    $connect mysql_select_db ('') or die (mysql_error);
     
    $start mysql_real_escape_string($_GET['start']);

    $suchwort mysql_real_escape_string($_GET['suche']);

    // Datendefinition für die Clientausgabe 
    $start = (isset($start)) ? abs((int)$start) : 0
    $limit 2;                     // Datensätze pro Ausgabeseite 

    // Verbindung zu MySQL-Datenbank herstellen oder sterben. 
    @mysql_connect($host,$user,$password
       or die(
    "Abbruch: Verbindung zu '$host'" 
             
    ." konnte nicht hergestellt werden."); 

    // Benötigte Datenbank auswählen oder sterben. 
    @mysql_select_db($database
       or die(
    "Abbruch: Datenbank '$database' konnte nicht" 
             
    ." selektiert werden.<br><br>MySQL sagt: ".mysql_error()); 

    // Feststellen der Anzahl der verfügbaren Datensätze. 
    $resultID = @mysql_query("SELECT COUNT(*) FROM ".$table); 
    $total    = @mysql_result($resultID,0); 

    // Ggf. $start korrigieren (falls Parameter in 
    // der URL manipuliert wurde) 
    $start    = ($start >= $total) ? $total $limit $start

    // Datenbankabfrage ausführen. 
    $query    "SELECT * FROM ".$table." WHERE MATCH (word1,word2,word3) AGAINST ('$suchwort' IN BOOLEAN MODE) LIMIT ".$start.",".$limit;
    $resultID = @mysql_query($query); 

    // Ergebnisse lesen und an den Client ausgeben 
    while ($data mysql_fetch_array($resultID))
    {
      echo 
    "<p><b>word1:</b></td><td>" .$data["word1"]."<br />";
      echo 
    "<p><b>word2:</b></td><td>" .$data["word2"]."<br />";
      echo 
    "<p><b>word3:</b></td><td>" .$data["word3"]."<br />";
    }


    // Zurück- und Vorblättern 
    if ($start 0

      
    $newStart = ($start $limit 0) ? : ($start-$limit); 
      echo 
    "<a href=".$_SERVER['SCRIPT_NAME']."?start=".$newStart 
          
    .">&lt;&lt; zurück</a>"


    if (
    $start $limit $total

      
    $newStart $start $limit
      echo 
    " <a href=".$_SERVER['SCRIPT_NAME']."?start=".$newStart 
          
    .">vor &gt;&gt;</a>"



    ?> 
    Sie Suchleiste befindet sich auf der Index.htm und sieht wie folgt aus:

    HTML-Code:
    form id="suche" name="suche" action="suche.php" method="GET" enctype="text/html" onsubmit="return ">
                            <input type="text" name="suche" value="" size="15" maxlength="20" />
                            </p>
                            <input type="submit" name="" value="suche starten" />
                            </form>
    Das Problem ist, dass zwar Ergebnisse gefunden werden, beim drücken des "Vor"_ Buttons die Folge-Seiten allerdings leer belieben. Trage ich anstatt "$suchwort" den Begriff direkt ein, funktioniert das Ganze einwandfrei. Der Inhalt geht also irgendwie verloren.

    Wie könnte ich das Problem denn am Besten lösen?

    Schonmal vielen Dank für eure Hilfe

  2. #2
    TP-Supporter chorn bringt sich richtig ein Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    396
    Dein Script erwartet

    Code:
    $suchwort = mysql_real_escape_string($_GET['suche']);
    also, das Suchwort aus der URL. Deine Vor/Zurueck-Buttons erhalten nur die Seitennummer

    Code:
      echo " <a href=".$_SERVER['SCRIPT_NAME']."?start=".$newStart  
          .">vor &gt;&gt;</a>";
    Also hast du ein Mal das Suchwort für die Suche, aber keine Seitennummer für weitere Ergebnisse.
    Und ein Mal eine Seitennummer, aber kein Suchwort und demnentsprechend keine Suchergebnisse.

    Du musst das Suchwort auch in der URL übergeben (so wie in der URL, die bei der Suche rauskommt), um die Verbindung zwischen Suchergebnissen und Seite herzustellen.

  3. #3
    TP-Junior Mandible macht alles soweit korrekt
    Registriert seit
    Apr 2011
    Ort
    Ruhrgebiet
    Beiträge
    8
    Super Danke, für deine Antwort. Aber als PHP-noob muss dann doch noch fragen, wie das im Detail aussehen könnte.

  4. #4
    TP-Junior Mandible macht alles soweit korrekt
    Registriert seit
    Apr 2011
    Ort
    Ruhrgebiet
    Beiträge
    8
    Ich hab jetzt versucht, die URL zu übergeben, so haut es allerdings auch nicht, was mach ich nur falsch?
    PHP-Code:
    $host     "";  
    $user     "";  
    $password "";  
    $database "";  

    $table    ""
    $db mysql_connect ('') or die (mysql_error); 
    $connect mysql_select_db ('') or die (mysql_error); 
      
    $start mysql_real_escape_string($_GET['start']); 

    $link "suche.php?suche".urlencode($_GET['suche']); 

    // Datendefinition für die Clientausgabe  
    $start = (isset($start)) ? abs((int)$start) : 0;  
    $limit 2;                     // Datensätze pro Ausgabeseite  

    // Verbindung zu MySQL-Datenbank herstellen oder sterben.  
    @mysql_connect($host,$user,$password)  
       or die(
    "Abbruch: Verbindung zu '$host'"  
             
    ." konnte nicht hergestellt werden.");  

    // Benötigte Datenbank auswählen oder sterben.  
    @mysql_select_db($database)  
       or die(
    "Abbruch: Datenbank '$database' konnte nicht"  
             
    ." selektiert werden.<br><br>MySQL sagt: ".mysql_error());  

    // Feststellen der Anzahl der verfügbaren Datensätze.  
    $resultID = @mysql_query("SELECT COUNT(*) FROM ".$table);  
    $total    = @mysql_result($resultID,0);  

    // Ggf. $start korrigieren (falls Parameter in  
    // der URL manipuliert wurde)  
    $start    = ($start >= $total) ? $total $limit $start;  

    // Datenbankabfrage ausführen.  
    $query    "SELECT * FROM ".$table." WHERE MATCH (word1,word2,word3) AGAINST ('$link' IN BOOLEAN MODE) LIMIT ".$start.",".$limit
    $resultID = @mysql_query($query);  

    // Ergebnisse lesen und an den Client ausgeben  
    while ($data mysql_fetch_array($resultID)) 

      echo 
    "<p><b>word1:</b></td><td>" .$data["word1"]."<br />"
      echo 
    "<p><b>word2:</b></td><td>" .$data["word2"]."<br />"
      echo 
    "<p><b>word3:</b></td><td>" .$data["word3"]."<br />"



    // Zurück- und Vorblättern  
    if ($start 0)  
    {  
      
    $newStart = ($start $limit 0) ? : ($start-$limit);  
      echo 
    "<a href=".$_SERVER['SCRIPT_NAME']."?start=".$newStart  
          
    .">&lt;&lt; zurück</a>";  
    }  

    if (
    $start $limit $total)  
    {  
      
    $newStart $start $limit;  
      echo 
    " <a href=".$_SERVER['SCRIPT_NAME']."?start=".$newStart  
          
    .">vor &gt;&gt;</a>";  
    }  


    ?> 

  5. #5
    TP-Supporter chorn bringt sich richtig ein Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    396
    Du übergibst im Link zur nächsten Seite kein Suchwort, also hast du auf der nächsten Seite keine Suchergebnisse die du Seitenweise anzeigen kannst.

    vgl.

    Code:
    suche.php?suchwort=Test
    Code:
    suche.php?start=2

  6. #6
    TP-Junior Mandible macht alles soweit korrekt
    Registriert seit
    Apr 2011
    Ort
    Ruhrgebiet
    Beiträge
    8
    Ok, dass klappt zwar nicht so wirklich, aber bin ich denn jetzt auf dem richtigen Dampfer?

    PHP-Code:
    $start mysql_real_escape_string($_GET['start']); 



    // Datendefinition für die Clientausgabe  
    $start = (isset($start)) ? abs((int)$start) : 0;  
    $limit 2;                     // Datensätze pro Ausgabeseite  

    // Verbindung zu MySQL-Datenbank herstellen oder sterben.  
    @mysql_connect($host,$user,$password)  
       or die(
    "Abbruch: Verbindung zu '$host'"  
             
    ." konnte nicht hergestellt werden.");  

    // Benötigte Datenbank auswählen oder sterben.  
    @mysql_select_db($database)  
       or die(
    "Abbruch: Datenbank '$database' konnte nicht"  
             
    ." selektiert werden.<br><br>MySQL sagt: ".mysql_error());  

    // Feststellen der Anzahl der verfügbaren Datensätze.  
    $resultID = @mysql_query("SELECT COUNT(*) FROM ".$table);  
    $total    = @mysql_result($resultID,0);  

    // Ggf. $start korrigieren (falls Parameter in  
    // der URL manipuliert wurde)  
    $start    = ($start >= $total) ? $total $limit $start;  

    // Datenbankabfrage ausführen.  
    $query    "SELECT * FROM ".$table." WHERE MATCH (word1,word2,word3) AGAINST ('%$_GET[suche]%' IN BOOLEAN MODE) LIMIT ".$start.",".$limit
    $resultID = @mysql_query($query);  

    // Ergebnisse lesen und an den Client ausgeben  
    while ($data mysql_fetch_array($resultID)) 

      echo 
    "<p><b>word1:</b></td><td>" .$data["word1"]."<br />"
      echo 
    "<p><b>word2:</b></td><td>" .$data["word2"]."<br />"
      echo 
    "<p><b>word3:</b></td><td>" .$data["word3"]."<br />"



    // Zurück- und Vorblättern
    if ($start 0)
    {
      
    $newStart = ($start $limit 0) ? : ($start-$limit);
      echo 
    "<a href=suche.php?suche=".$_GET['suche']."?start=".$newStart
          
    .">&lt;&lt; zurück</a>";
    }

    if (
    $start $limit $total)
    {
      
    $newStart $start $limit;
      echo 
    "<a href=suche.php?suche=".$_GET['suche']."?start=".$newStart
          
    .">vor &gt;&gt;</a>";


  7. #7
    TP-Moderator Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.608
    Zitat Zitat von Mandible Beitrag anzeigen
    Ok, dass klappt zwar nicht so wirklich, aber bin ich denn jetzt auf dem richtigen Dampfer?
    Der Dampfer ist richtig, die Aussage "klappt nicht so wirklich" bringt aber wenig Dampf
    Was klappt denn nicht?
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  8. #8
    TP-Junior Mandible macht alles soweit korrekt
    Registriert seit
    Apr 2011
    Ort
    Ruhrgebiet
    Beiträge
    8
    Bei jedem Klick auf "vor" wird nicht wie gewünscht, die Seite mit weiteren Suchergebnissen aufgerufen, es wird einfach immer ein start=1 drangehängt. Also:
    1. Klick : htp://localhost/suche.php?suche=suchwort?start=1
    2. Klick : htp://localhost/suche.php?suche=suchwort?start=1?start=1
    3. Klick : htp://localhost/suche.php?suche=suchwort?start=1?start=1?start=1 usw.

  9. #9
    TP-Moderator Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Cybergreek lebt für das TP und seine User Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.608
    Jetzt sehe ich's erst. Probier mal:
    PHP-Code:
      echo "<a href=suche.php?suche=".$_GET['suche']."&start=".$newStart
          
    .">&lt;&lt; zurück</a>"
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  10. #10
    TP-Junior Mandible macht alles soweit korrekt
    Registriert seit
    Apr 2011
    Ort
    Ruhrgebiet
    Beiträge
    8
    Klasse, dass haut hin. Vielen Dank an Alle.

+ Antworten

Ähnliche Themen

  1. Umlaut-Problem MySQL/php-Ausgabe
    Von stiller im Forum Traum-Dynamik
    Antworten: 3
    Letzter Beitrag: 19.02.2010, 17:38
  2. Auslesen einer Website, Ergebnisse in Mysql schreiben
    Von mallmis im Forum Traum-Dynamik
    Antworten: 0
    Letzter Beitrag: 10.08.2008, 16:44
  3. [MySQL] - Volltextsuche
    Von alexf812 im Forum Traum-Dynamik
    Antworten: 0
    Letzter Beitrag: 24.08.2007, 14:41
  4. [PHP/Mysql] und UNICODE ausgabe (ru/jp)
    Von zy0n im Forum Traum-Dynamik
    Antworten: 15
    Letzter Beitrag: 10.08.2006, 05:39
  5. Ausgabe der Ergebnisse...
    Von Flixxtoras im Forum Traum-Dynamik
    Antworten: 2
    Letzter Beitrag: 19.07.2002, 18:16

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51