Archiv verlassen und diese Seite im Standarddesign anzeigen : OHO Script wird öfters gerufen
JR-EWING 13-05-2005, 23:35 Hallo,
ich habe folgendes Problem das ein PHP Code 4x ausgeführt wird obwohl er nur einmal gerufen werden sollte.
In den Log Files sehe ich 4 Einträge mit der jeweiligen Suche
<?php
require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
error_log(sprintf("Suche: " . $q));
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
?>
Der Aufruf ist aus einer anderen Seite mit
<FORM ACTION="suche.php">
<INPUT TYPE="text" NAME="q" VALUE="<?php echo $q ?>" SIZE=80>
<INPUT TYPE="submit" VALUE="Suche" CLASS="BUTTON">
</FORM>
gelöst.
Kann mir da jemand weiterhelfen ?
Es sind auch keine meta-refresh oder java-script Umleitung oder sonstige Weiterleitungen.
Wenn ich direkt die Url angebe -> wird einfach das Script 4x ausgeführt.
da bin ich mit meinem Latein am Ende
Gruß Thomas
JR-EWING 14-05-2005, 02:32 Muss man vor einem Insert einen Select machen ?
require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
$sql = mysql_query("SELECT * FROM {$prefix}suche WHERE suchtext = $q");
if (mysql_num_rows($sql) == 0){
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
}
?>
Jetzt wird bloss einmal die Insert Anweisung ausgeführt.....
Wenn mir jetzt einer erklären kann warum , wäre ich sehr dankbar.
kann nicht ganz nachvollziehen, was du da machst. Mag daran liegen, dass ich erst grade wieder @ home bin, aber vielleicht auch an einer fehlenden Beschreibung deines Vorhabens...
Muss man vor einem Insert einen Select machen ? Rein technisch musst du es natürlich nicht.
Aber du hast susätzlich eine if()-Abfrage in dein Script eingebaut. Vermutlich fängt die irgendwelche Fehlerhaften Scriptaufrufe ab. Kannst du in der Richtung mal dein Script untersuchen?
JR-EWING 14-05-2005, 17:15 Okay,
mein Vorhaben ist die Suchergebnisse in die Datenbank zu schreiben.
Dazu habe ich eine Seite index.php in die ich mit
<FORM ACTION="suche.php">
<INPUT TYPE="text" NAME="q" VALUE="<?php echo $q ?>" SIZE=80>
<INPUT TYPE="submit" VALUE="Suche" CLASS="BUTTON">
</FORM>
bei einer Suche das Script Suche.php aufrufe.
Nun wird dieses Script aber leider 4 mal aufgerufen.
Hier mal die ersten Zeilen der Suche.php
<?php
require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
error_log(sprintf("Suche: " . $q));
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" >
<head>
usw.
In meinen Logs sehe ich dann vier Einträge von.
error_log(sprintf("Suche: " . $q));
Gruß
Thomas
Kannst du in der Richtung mal dein Script untersuchen? Haste denn jetzt mal Testausgaben gemacht, um das ganze näher zu lokalisieren? Das fehlt mir irgendwie immer noch!
JR-EWING 14-05-2005, 17:38 Wie meinst du das ?
Ich hatte mal als erste Zeile in Suche.php eine Ausgabe mit
error_log()
wurde eben 4x ausgeben. Also es wird Suche.php viermal aufgerufen.
Wie kann ich das denn besser lokalisieren ?
aufgerufen wird die datei ja vom browser. also musst du jetzt herausfinden, warum... Ich weiß nicht, was dein script großartig beinhaltet, daher kann ich dir da nicht mehr sagen. außer dass du mal entsprechende testausgaben machen musst.
ist da evtl. ne weiterleitung o.ä. drin. wird die datei irgendwo aufgerufen, wo sie gar nicht gebraucht wird, ... Aber ich kann halt nur ins blaue reinraten.
JR-EWING 14-05-2005, 18:07 Hier mal der Code meiner htaccess
RewriteEngine on
RewriteRule ^(.*)-(.*).html index.php?c=$1
RewriteRule ^eintrag/([0-9]*).html http://www.domain.de/add_url.php?c=$1 [redirect]
RewriteRule ^eintrag/ http://www.domain.de/ [R=301]
Aufruf ganz normal über Browser
http://www.domain.de/suche.php?q=tom
<?php
require_once("config.php");
require_once("include.php");
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $bd);
$sql = mysql_query("SELECT * FROM {$prefix}suche WHERE suchtext = $q");
if (mysql_num_rows($sql) == 0){
$eintrag = "INSERT INTO {$prefix}suche (suchtext) VALUES ('$q')";
mysql_query($eintrag) or die(mysql_error().'<hr />'.$eintrag.'<hr />');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" >
<head>
....
url-erkennung ausgeschaltet by TobiaZ
:rofl:
DU bist lustig! *lol* (http://www.php-resource.de/forum/showthread.php?threadid=50454) Jetzt aber Zack den Quelltext wieder raus, sonst muss ich dein Posting gemäß den Forenregeln zensieren...
JR-EWING 14-05-2005, 18:45 Sorry,
aber ich habe da nichts besonders in dem Quellcode (Umleitung) oder so.
Also PHP am Anfang und danach ganz normale HTML Ausgabe.
Das PHP wird halt 4x durchlaufen.
Was soll ich denn Posten, damit mir da einer helfen kann.
bzw. Was soll ich mit error_log ausgeben ?
Gibt es irgendeine Request Nummer die ich ausgeben könnte ?
|