Enrico: Warnungen bzgl. mySQL, obwohl ich kein mySQL verwende

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

  1. 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.

    1. 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

      1. 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

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
        1. 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

        2. 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.

          1. 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

            --
            Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
            Terry Pratchett, "Wachen! Wachen!"
            ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
            Veranstaltungsdatenbank Vdb 0.3
      2. 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 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.

        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.

        1. 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

          1. 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.

            1. 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

              1. 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.

                1. 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

                  1. 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

                    --
                    F: Was ist eigentlich aus deinem schlimmen Durchfall geworden?
                    A: Mein Arzt hat mir Valium verschrieben.
                    F: Und das hilft?
                    A: Naja, ich mach mir immer noch in die Hose. Aber inzwischen ist es mir egal.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. 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

                      1. 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.

                        1. 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