Fehler bei Wortsuche

ShooterMS

Mitglied
Im mysql-Forum meint man, dass sei ein php-Problem, daher probier ich mein Glück jetzt hier.
In einer Datenbank befindet sich eine Tabelle mit einer Spalte (TEXT) auf welche ein Indizes FULLTEXT liegt. Mit dem Index möchte ich eine Volltextsuche realisieren. Ich habe 333 Datensätze und ein Beispielwort wird 71x mal gefunden. Wenn ich mir nun die 71 Datensätze anzeigen lassen will, bricht die Abfrage einfach ab und im Quellcode der html-Seite fehlt genau der Teil, welcher das Ergebnis des php-Skriptes liefert. Nun weiß ich, dass wenn ich die Anzeige auf 20 Datensätze beschränke (LIMIT) , alles problemlos funktioniert. Egal ob Datensatz 1-20 oder 15-35 oder 70-90. Bei einem anderen Suchwort sind es übrigens ungefähr 24.
Woran liegt es dass das php-Skript quasi abstürzt und nicht mal eine Fehlermeldung produziert, wenn ich mehr Datensätez anzeigen lassen will?

$verbindung = mysql_verbindung();
$query = "SELECT knr, abnr, kinhalt, kinfo FROM kapitel WHERE MATCH (kinhalt) AGAINST ('$filtertext') ORDER BY knr, abnr";
$ergebnis = mysql_query ($query, $verbindung) or die ("Error Query $query");

... html tabelle beginnen mit echo (" ...

while ($zeile = mysql_fetch_array ($ergebnis)) {
echo ("<tr>");
echo ("<td valign=\"top\" align=\"center\">$zeile[knr]</td>");
echo ("<td valign=\"top\" align=\"center\">$zeile[abnr]</td>");
echo ("<td valign=\"top\">$zeile[kinhalt]</td>");
echo ("<td valign=\"top\">$zeile[kinfo]</td>");
echo ("<td valign=\"top\"> <a href=\"a_kapitel_edit.php?work=edit&id=".$zeile[kid]."\">edit</a>
<a href=\"a_kapitel_edit.php?work=del&id=".$zeile[kid]."\">del</a> </td>");
echo ("</tr>");
}

... html beenden

Das php-Skript ist in die html-Seite eingebunden. Wenn ich alles html in den php-Teil übernehme, wird im Browser den Fehlermeldung angezeigt "Diese Seite kann nicht angezeigt werden"

Danke
 
Hast Du schonmal getestet, ob Deine Variable $filtertext auch nen Inhalt hat?
Da ich mal annehme, dass die Suche von nem Formular gestartet wird, würde ich's mal mit $_POST["filtertext"] versuchen.
 
ShooterMS hat gesagt.:
Woran liegt es dass das php-Skript quasi abstürzt und nicht mal eine Fehlermeldung produziert, wenn ich mehr Datensätez anzeigen lassen will?
Bitte gib doch ein paar mehr Informationen, z.b. solche wie

  1. Lokales Test-System oder Webserver beim Provider
  2. Betriebsystem
  3. Apache-Version
  4. PHP-Version
  5. Browser-Typ und -Version
 
Ja das Array ist gefüllt mit Daten, von vorn bis hinten. Ich kann sowohl die ersten 15 Datensätze erfolgreich ausgeben, als auch die letzten 15. Nur alle zusammen geht eben nicht.

Das ganze läuft lokal bei mir mit WinXP, Apache 2 (2.0.44), PHP 4.3.5 RC3, MySQL 4.0.18 und IE 6.

Was mich eben verwundert, dass es mit 20 Datensätzen geht, aber nicht mit mehr.
 
ShooterMS hat gesagt.:
Das ganze läuft lokal bei mir mit WinXP, Apache 2 (2.0.44), PHP 4.3.5 RC3, MySQL 4.0.18 und IE 6./B]
Ok, das hatte ich mir gedacht, dass das bei Dir als Testserver läuft. Ich hatte genau das gleiche Problem. Noch eine Frage: Wieviel Ram hat die Kiste? Ist das ein einzelner Rechner, der als Server dient oder ist das gleichzeitig auch Dein Arbeitsrechner?

Schau mal in den Beitrag hier, vielleicht hilft Dir das ein wenig weiter. Alternativ würde ich mal vorschlagen, dass Du das mal auf einem "richtigen" Webserver testest. Ich würde wetten, dass das Problem da behoben ist. Also am PHP-Code an sich dürfte es nicht liegen.
 
400 MB RAM.

Wie ich sehe hast du genau dasselbe Problem wie ich jetzt gehabt.
Zu ob_start() damit geht es auch im IE?

wie verwende ich diesen Befehl, bzw wann. Ruf ich einfach ob_start vor der SQL abfrage und ob_end nach ende der Abfrage? Muss ich Variablen übergeben?

Danke.
 
Original geschrieben von ShooterMS
400 MB RAM.
Eigener Rechner für MySQL und Apache? Wenn das der gleiche Rechner ist, auf dem Du arbeitest, dann wirds wohl auch mit der Menge des Rams zu tun haben.

Original geschrieben von ShooterMS
Wie ich sehe hast du genau dasselbe Problem wie ich jetzt gehabt.
Zu ob_start() damit geht es auch im IE?
Versuch erstmal, zur Scriptlaufzeit das Timelimit auf 0 zu setzen.

Original geschrieben von ShooterMS
wie verwende ich diesen Befehl, bzw wann. Ruf ich einfach ob_start vor der SQL abfrage und ob_end nach ende der Abfrage? Muss ich Variablen übergeben?
PHP:
<?php
ob_start(); /* ausgabepuffer aktivieren */
// ganz viele schleifen
// datenbank abfragen
// whatever :)
ob_end_flush(); /* inhalt aus dem ausgabepuffer ausgeben */
?>
Wie gesagt, versuch das ganze mal auf einem *nix Rechner laufen zu lassen, da wird das Problem bestimmt nicht auftauchen.
 
hast recht. auf nem andren system läuft es. ich hab jetzt das service pack installiert, und da läuft es jetzt auch auf meinem rechner. danke.
 
Zurück