Warnungen bzgl. mySQL, obwohl ich kein mySQL verwende
Enrico
- php
Hallo,
tut mir leid, euch schon wieder bemühen zu müssen, aber ich hänge an einem seltsamen Problem.
Ich lese über die eingebundene Datei "Sortiment.php" (Quelltext in vollem Umfang nachfolgend eingefügt), je nach der im Hauptmenü getroffenen Auswahl, die spezifische Textdatei ein, um unser Sortiment auszugeben.
Hierbei verwende ich kein mySQL, sondern greife auf Textdateien zurück.
Für mich absolut nicht nachvollziehbar ist jetzt die Ausgabe, die ich in meinem Browser bekomme:
Products
Warning: mysql_query() [function.mysql-query]: [2002] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte. (trying to connect via tcp://localhost:3306) in C:\xampp\htdocs\WEBSHOP\SEITEN\Sortiment.php on line 40
Warning: mysql_query() [function.mysql-query]: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte. in C:\xampp\htdocs\WEBSHOP\SEITEN\Sortiment.php on line 40
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\WEBSHOP\SEITEN\Sortiment.php on line 40
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\WEBSHOP\SEITEN\Sortiment.php on line 41
Ich habe bei mir kein mySQL eingerichtet, folglich den Service über das Admin-Panel von XAMPP auch nicht aktiviert und weder in dieser Datei noch in der einbindenden Datei weder die Ausgabe "Products" noch irgendwelche mySQL-Anweisungen festgelegt:
function DateiEinlesen ($Datei)
{
if (file_exists ($Datei))
{
if ($Zeiger = fopen ($Datei, 'r'))
{
if (flock ($Zeiger, LOCK_SH))
{
if (is_readable ($Datei))
{
$Inhalt = fread ($Zeiger, filesize ($Datei));
flock ($Zeiger, LOCK_UN);
$Rückgabe = array ('', $Inhalt);
return $Rückgabe;
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht gelesen werden', '');
return $Rückgabe;
}
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht verriegelt werden', '');
return $Rückgabe;
}
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht geöffnet werden', '');
return $Rückgabe;
}
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht gefunden werden', '');
return $Rückgabe;
}
}
$NeueZeile = "ja";
list ($Meldung, $Inhalt) = DateiEinlesen ('../SORTIMENT/' . $AuswahlRubrik . $AuswahlSeite . '.txt');
if ($Meldung == '')
{
$Zeilen = explode ("[ENDE]", $Inhalt);
$Ausgabe = '<table class="Sortiment" cellpadding="0" cellspacing="0">';
for ($i = 0; $i < count ($Zeilen); $i++)
{
list ($IdBezeichnungBeschreibung, $GroessenPreiskategorien) = explode ("[G]", $Zeilen [$i]);
list ($ID, $Bezeichnung, $Beschreibung) = explode ("|", $IdBezeichnungBeschreibung [$i]);
list ($Groesse, $Preiskategorie) = explode ("|", $GroessenPreiskategorien [$i]);
if ($NeueZeile == "ja")
{
$Ausgabe .= '<tr>';
$NeueZeile = "nein";
}
$Ausgabe .= '<td class="Artikel">';
$Ausgabe .= '<img src="../GRAFIKEN/SORTIMENT/' . $AuswahlRubrik . $AuswahlSeite . ($i + 1) . 'Klein.png"><br>';
$Ausgabe .= $Bezeichnung;
$Ausgabe .= $Preis . '*';
$Ausgabe .= '</td>';
if (($i + 1 % 3) == 1)
{
$Ausgabe .= '</tr>';
$NeueZeile = "ja";
}
}
$Ausgabe .= '</table>';
echo $Ausgabe;
}
else
{
/*
* Meldung ausgeben
*/
}
Woran liegt dieses Verhalten?
Danke und Gruß
Enrico
Tach!
Ich lese über die eingebundene Datei "Sortiment.php" (Quelltext in vollem Umfang nachfolgend eingefügt), je nach der im Hauptmenü getroffenen Auswahl, die spezifische Textdatei ein, um unser Sortiment auszugeben.
Ich glaube nicht, dass das der volle Umfang ist. Da fehlt mindestens noch ein <?php.
Warning: mysql_query() [function.mysql-query]: [2002] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte. (trying to connect via tcp://localhost:3306) in C:\xampp\htdocs\WEBSHOP\SEITEN\Sortiment.php on line 40
Seit wann schreibt denn PHP Fehlermeldungstexte auf Deutsch?
Der Meldungstext passt jedenfalls nicht zum gezeigten Code. Um Zeile 40/41 steht nur else und Klammern und eine Zuweisung eines Arrays mit zwei Strings zu einer Variablen.
Woran liegt dieses Verhalten?
Am wirklich ausgeführten Code.
dedlfix.
Hallo dedlfix,
Ich glaube nicht, dass das der volle Umfang ist. Da fehlt mindestens noch ein <?php
Die öffnende Anweisung <?php
und die schliessende Anweisung ?>
habe ich in meiner Datei natürlich angegeben und nur hier weggelassen, wobei es auf diese Angaben hier auch nicht mehr angekommen wäre
Seit wann schreibt denn PHP Fehlermeldungstexte auf Deutsch?
Ich habe die Anweisungen nur aus meinem Browser rauskopiert
Um Zeile 40/41 steht nur else und Klammern und eine Zuweisung eines Arrays mit zwei Strings zu einer Variablen
Das ist es eben, was ich nicht verstehe. Die Einbindung der Datei erfolgt nur über einen einfachen include
-Befehl (include ("Sortiment.php");
). Vor dieser Anweisung binde ich auf gleiche Weise auch nur die Datei "Sidebar.php" ein, die die Navigation aufbaut.
In keiner Datei verwende ich irgendeinen mySQL-Befehl oder baue eine Verbindung zu einer Datenbank auf.
Ich verstehe es nicht.
Enrico
Hallo
Um Zeile 40/41 steht nur else und Klammern und eine Zuweisung eines Arrays mit zwei Strings zu einer Variablen
Das ist es eben, was ich nicht verstehe. Die Einbindung der Datei erfolgt nur über einen einfachen
include
-Befehl (include ("Sortiment.php");
). Vor dieser Anweisung binde ich auf gleiche Weise auch nur die Datei "Sidebar.php" ein, die die Navigation aufbaut.In keiner Datei verwende ich irgendeinen mySQL-Befehl oder baue eine Verbindung zu einer Datenbank auf.
Kannst du hier bitte mal den Quelltext der Funktion DateiEinlesen
angeben. Da der bisher gezeigt Quelltext nichts hergibt, bleibt vermutlich nur diese Funktion als Ursache übrig.
Tschö, Auge
Hallo Auge,
gerne. Ich füge mal den kompletten Code ein:
<?php
function DateiEinlesen ($Datei)
{
if (file_exists ($Datei))
{
if ($Zeiger = fopen ($Datei, 'r'))
{
if (flock ($Zeiger, LOCK_SH))
{
if (is_readable ($Datei))
{
$Inhalt = fread ($Zeiger, filesize ($Datei));
flock ($Zeiger, LOCK_UN);
$Rückgabe = array ('', $Inhalt);
return $Rückgabe;
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht gelesen werden', '');
return $Rückgabe;
}
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht verriegelt werden', '');
return $Rückgabe;
}
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht geöffnet werden', '');
return $Rückgabe;
}
}
else
{
$Rückgabe = array ('Die Datei "' . $Datei . '" konnte nicht gefunden werden', '');
return $Rückgabe;
}
}
$NeueZeile = "ja";
list ($Meldung, $Inhalt) = DateiEinlesen ('../SORTIMENT/' . $AuswahlRubrik . $AuswahlSeite . '.txt');
if ($Meldung == '')
{
$Zeilen = explode ("[ENDE]", $Inhalt);
$Ausgabe = '<table class="Sortiment" cellpadding="0" cellspacing="0">';
for ($i = 0; $i < count ($Zeilen); $i++)
{
list ($IdBezeichnungBeschreibung, $GroessenPreiskategorien) = explode ("[G]", $Zeilen [$i]);
list ($ID, $Bezeichnung, $Beschreibung) = explode ("|", $IdBezeichnungBeschreibung [$i]);
list ($Groesse, $Preiskategorie) = explode ("|", $GroessenPreiskategorien [$i]);
if ($NeueZeile == "ja")
{
$Ausgabe .= '<tr>';
$NeueZeile = "nein";
}
$Ausgabe .= '<td class="Artikel">';
$Ausgabe .= '<img src="../GRAFIKEN/SORTIMENT/' . $AuswahlRubrik . $AuswahlSeite . ($i + 1) . 'Klein.png"><br>';
$Ausgabe .= $Bezeichnung;
$Ausgabe .= $Preis . '*';
$Ausgabe .= '</td>';
if (($i + 1 % 3) == 1)
{
$Ausgabe .= '</tr>';
$NeueZeile = "ja";
}
}
$Ausgabe .= '</table>';
echo $Ausgabe;
}
else
{
/*
* Meldung ausgeben
*/
}
?>
Gruß
Enrico
Tach!
Kannst du hier bitte mal den Quelltext der Funktion
DateiEinlesen
angeben. Da der bisher gezeigt Quelltext nichts hergibt, bleibt vermutlich nur diese Funktion als Ursache übrig.
Hat er doch. Zeile 40/41 befinden sich in dieser Funktion.
dedlfix.
Hallo
Kannst du hier bitte mal den Quelltext der Funktion
DateiEinlesen
angeben. Da der bisher gezeigt Quelltext nichts hergibt, bleibt vermutlich nur diese Funktion als Ursache übrig.Hat er doch. Zeile 40/41 befinden sich in dieser Funktion.
Das ist mir jetzt, in Enricos Antwort auf mein Posting, auch aufgefallen.
Tschö, Auge
Tach!
Bitte lass die Zitatzeichen so stehen, wie sie sind. Danke.
Ich glaube nicht, dass das der volle Umfang ist. Da fehlt mindestens noch ein <?php
Die öffnende Anweisung<?php
und die schliessende Anweisung?>
habe ich in meiner Datei natürlich angegeben und nur hier weggelassen, wobei es auf diese Angaben hier auch nicht mehr angekommen wäre
Wer weiß, was du sonst noch alles weggelassen hast. Wenn man Code und eine Fehlermeldung dazu nachvollziehen können soll, muss beides zueinander passen.
Um Zeile 40/41 steht nur else und Klammern und eine Zuweisung eines Arrays mit zwei Strings zu einer Variablen
Das ist es eben, was ich nicht verstehe. Die Einbindung der Datei erfolgt nur über einen einfacheninclude
-Befehl (include ("Sortiment.php");
). Vor dieser Anweisung binde ich auf gleiche Weise auch nur die Datei "Sidebar.php" ein, die die Navigation aufbaut.
Die Klammern um das Argument von include sind überflüssig. Wie sieht der include_path aus?
In keiner Datei verwende ich irgendeinen mySQL-Befehl oder baue eine Verbindung zu einer Datenbank auf.
Ich verstehe es nicht.
Und du bist dir sicher, dass du dir das was ausgeführt wird anschaust und nicht auf dem Server und in deiner Entwicklungsumgebung verschiedene Dateien hast?
dedlfix.
Hallo dedlfix,
Bitte lass die Zitatzeichen so stehen, wie sie sind. Danke.
Ok
Wie sieht der include_path aus?
Ich arbeite derzeit lokal nur auf meinem Rechner ohne hochgeladene Dateien.
Wie finde ich heraus, wie der include_path aussieht?
Ich habe hier nichts geändert.
und nicht auf dem Server und in deiner Entwicklungsumgebung verschiedene Dateien hast?
Ich habe nur diese einen Dateien, da ich derzeit, während der Entwicklungsphase, nur lokal programmiere, ohne Dateien hochzuladen.
Gruß
Enrico
Tach!
Wie sieht der include_path aus?
Wie finde ich heraus, wie der include_path aussieht?
Den liefert dir ini_get('include_path'), bitte an der Stelle, an der du inkludierst.
Ich arbeite derzeit lokal nur auf meinem Rechner ohne hochgeladene Dateien.
Ich habe hier nichts geändert.
Stimmen denn die Dateinamen in den Fehlermeldungen mit den Dateien überein, die du dir anschaust?
dedlfix.
Hallo dedlfix,
Wie sieht der include_path aus?
.;C:\xampp\php\PEAR
Stimmen denn die Dateinamen in den Fehlermeldungen mit den Dateien überein, die du dir anschaust?
Ja, ich habe keine Dupletten und arbeite immer nur eine Datei nach der anderen ab
Gruß
Enrico
Tach!
Wie sieht der include_path aus?
.;C:\xampp\php\PEAR
Soweit in Ordnung.
Es wird sicherlich eine Erklärung für das Verhalten geben, aber mit den gegebenen Indizien kann ich die nicht geben.
Alte Seiten in Browser- oder Proxy-Cache sind auch ausgeschlossen?
dedlfix.
Hallo dedlfix,
Es wird sicherlich eine Erklärung für das Verhalten geben
Das klingt fast schon resignierend ^^
Alte Seiten in Browser- oder Proxy-Cache sind auch ausgeschlossen?
Ja, habe den Cache geleert, den Browser geschlossen, den PC neu gestartet, aber ohne Erfolg.
Andere php-Dateien, die auch includiert werden, funktionieren hingegen einwandfrei, also muss es doch an der Datei "Sortiment.php" direkt liegen.
Aber wo, wenn ich nirgends mySQL einbinde?
Gruß
Enrico
Hallo,
Es wird sicherlich eine Erklärung für das Verhalten geben
Das klingt fast schon resignierend ^^
na, wer wird denn gleich den Korn über die Flinte kippen!
Andere php-Dateien, die auch includiert werden, funktionieren hingegen einwandfrei, also muss es doch an der Datei "Sortiment.php" direkt liegen.
Dann gibt's nur noch eins: In der Sortiment.php eine markante Ausgabe mit echo o.ä. produzieren, und die genaue Position dieser echo-Anweisung solange variieren, bis du die Stelle eingekreist hast, die die Fehlermeldung schmeißt - du siehst ja jeweils, ob deine Kontrollausgabe vor der Fehlermeldung noch kommt oder nicht. Denn eine simple öffnende oder schließende Klammer, oder auch ein harmloses else, kann nicht Ursache für *diese* Fehlermeldung sein.
Das ist natürlich Fleißarbeit, aber wenn man es systematisch angeht, kommt man mit relativ wenigen Versuchen ans Ziel.
Good luck,
Martin
Hallo MArtin,
welche markante Ausgabe mit welchem Inhalt würdest Du vorschlagen?
Was soll mir, als möglicher Rüchschluss auf die Fehlerquelle, denn ausgegeben werden?
Gruß
Enrico
Tach!
welche markante Ausgabe mit welchem Inhalt würdest Du vorschlagen?
echo 'Hasenfurz'; - irgendetwas, das du einfach wiedererkennst.
Was soll mir, als möglicher Rüchschluss auf die Fehlerquelle, denn ausgegeben werden?
Füg es "ganz oben" ein, lass das Script laufen. Siehst du die Ausgabe, ist alles in Ordnung. Setz es nun gemäß deinem vorgesehenen Programmablauf immer weiter "nach unten". Dabei kannst du es variieren (zum Beispiel eine Zahl hochzählen), damit du sicher sein kannst, dass es die neue Ausgabe ist und nichts irgendwo zwischengespeichertes. Irgendwann wirst du eine Differenz zwischen Wunsch und Wirklichkeit merken. Da musst du dann genauer hinschauen.
dedlfix.
Hallo dedlfix,
mea culpa, ich bin wirklich ein Schaf!!
Ich hatte in meinem Ordner eine Datei namens "Sortiment.php", die von einem heruntergeladenen Onlineshop stammt, mySQL-Anweisungen enthält und die, aufgrund eines mickrigen Fehlers bei der Pfadangabe, anstelle meiner eingebunden wurde.
Ich habe aber die ganze Zeit nur an meiner gleichnamigen Datei gearbeitet und hier den/die Fehler gesucht.
Schade um die vergeudete Zeit, so ein Mist aber auch!!
Danke euch und nichts für ungut :-)
Gruß
Enrico