Fehlermeldung httpd.exe

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Fehlermeldung httpd.exe

Postby ultner » 17. August 2009 16:34

Folgendes Problem taucht bei mir immer wieder auf, nachdem ich ein php-skript ausgeführt habe

"Fehler in Anwendung-Dei Anweisung in 0x019997c9 verweist auf Speicher in 0x00000000. Der Vorgang read konnte nicht auf dem Speicher ausgeführt werden."

Ich habe dann das Php-Skript abgeändert, aber bekomme diese Meldung immer noch. Ein paar Test ergaben, dass es nur bei bestimmten Kombinationen des Formulars eine Fehlermeldung gibt.

Was die Fehlermeldung bedeutet, ist mir klar, nur suche ich nach der Antwort, was diesen Fehler ausgelöst haben könnte. Programme die den Apache blokieren habe ich keine Laufen, weiters arbeite ich lokal auf dem Rechner, also ohne Internetverbindung. Als Betriebssystem habe ich (leider) Windows XP laufen mit SP3, und habe XAMPP 1.7.1 installiert.

Auf Antworten wäre ich sehr erfreut, da ich Apache noch ein paar Monate für die Schule benutzen sollte, und so leider mein Projekt nicht beenden kann.

Wenn es hilfreich ist, das PHP-Script hochzuladen, welches den Fehler verursacht, einfach danach fragen, lade ich dann hoch, ich finde das leider Momentan wenig hilfreich...

Danke für eure Antworten im voraus

~markus
-- * -- * -- * -- * -- * -- * -- * --

Projektwebseite Miniwelt

-- * -- * -- * -- * -- * -- * -- * --
User avatar
ultner
 
Posts: 6
Joined: 17. August 2009 16:14
Location: Südtirol/Italien

Re: Fehlermeldung httpd.exe

Postby Wiedmann » 17. August 2009 16:39

dass es nur bei bestimmten Kombinationen des Formulars eine Fehlermeldung gibt.

Das bedeutet genau?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Fehlermeldung httpd.exe

Postby ultner » 17. August 2009 17:01

Wiedmann wrote:Das bedeutet genau?


Also ich habe die Datenbank mit Testdaten gefüllt, und habe so 2 Personen, bei denen ich eine Note eintragen kann. Es gibt dann die Option die erste Anmerkung und das erste Datum für alle Personen zu übernehmen. Wenn ich dann beide Checkboxen aktiviere, dann wird eben dieser oben Beschriebene Fehler geworfen, egal was ich unten in die Textfelder eintrage...

Folgendes, um es zu vereinfachen
Code Formular (Variablen sind alle definiert, alle überprüft):
Code: Select all
echo "<p><table align='center'>";
   $klassenquery="SELECT * FROM klasse WHERE K_Id=".$klasse.";";
   $klassendaten=$db->query($klassenquery);
   $klassen=$klassendaten->fetch_array();
   ausgabe("<tr><td>Klasse:</td><th> ".$klassen['Stufe'].". ".$klassen['Fachbereich']." ".$klassen['Zug']."</thd></tr>");
   $fachquery="SELECT * FROM fach WHERE F_Id=".$fach.";";
   $fachdaten=$db->query($fachquery);
   $faecher=$fachdaten->fetch_array();
   ausgabe("<tr><td>Fach:</td><th>".$faecher['Beschreibung']."</th></tr>");
   echo "</table></p><br />";
   $schuelerquery="SELECT p.Vorname, p.Nachname, p.P_Id FROM personen p, klasseneinteilung k WHERE k.K_Id=".$klasse." AND F_Id IS NULL AND p.P_Id=k.P_Id ORDER BY p.Nachname, p.Vorname;";
   echo "<form action='note_eintrag.php' method='post'>";
   ?>
       <table>
       <tr><td>Das Datum des ersten Eintrages f&uuml;r alle &uuml;bernehmen</td><td><input type="checkbox" name="datum_alle" value="datum_alle" /></td></tr>
        <tr><td>Die Anmerkung des ersten Eintrages f&uuml;r alle &uuml;bernehmen</td><td><input type="checkbox" name="anmerkung_alle" value="anmerkung_alle"  /></td></tr>
        </table>
        <input type="hidden" name="klasse" value="<?  echo $klasse; ?>"  />
        <input type="hidden" name="fach" value="<? echo $fach; ?>" />
    <?
   echo "<table border='1'  align='center'>";
   echo "<tr><th>Name</th><th>Note</th><th>Datum der Vergabe</th><th>Anmerkung<br />(schriftlich, m&uuml;ndlich oder praktisch)</th></tr>";
   $schuelerdaten=$db->query($schuelerquery);
   while ($schueler=$schuelerdaten->fetch_array())
   {
      ?>
        <tr><td width="30" nowrap="nowrap"><? echo $schueler[1]." ".$schueler[0]; ?></td><td width="10" align="center"><select name="note_<? echo $schueler[2]; ?>" >
        <option value="0" selected="selected">Nicht Eintragen</option>
        <?
         for($i=1; $i <= 10; ++$i)
         {
            echo "<option value='".$i."'>".$i."</option>";
         }
      ?>
        </select></td><td width="15" align="center"><input type="text" name="datum_<? echo $schueler[2]; ?>" value="dd.mm.yyyy" width="*" /></td><td width="30%" align="center"><input name="anmerkung_<? echo $schueler[2]; ?>" width="*"/></td></tr>
       
        <?
   }
   echo "<tr><td colspan='4' align='center'><input type='submit' value='Senden' name='Senden' /><input type='reset' name='Reset' value='Zur&uuml;cksetzen'</td></tr>";
   echo "</table></form>";
}



Code auswertungsscript:
Code: Select all
$klasse=$_POST['klasse'];
   $fach=$_POST['fach'];
   $anmerkung=0;
   $datum=0;
   if (isset($_POST['datum_alle']))
   {
      $datum_alle=1;
   }
   if(isset($_POST['anmerkung_alle']))
   {
      $anmerkung_alle=1;
   }
   $schuelerquery="SELECT p.P_Id FROM  klasseneinteilung k, personen p WHERE k.K_Id=".$klasse." AND p.P_Id=k.P_Id AND k.F_Id IS NULL ORDER BY p.Nachname, p.Vorname;";
   $schuelerdaten=$db->query($schuelerquery);
   $erst_a=0;
   $erst_d=0;
   while ($schueler=$schuelerdaten->fetch_array())
   {
      $anmerkung="anmerkung_".$schueler['P_Id'];
      $datum="datum_".$schueler['P_Id'];
      $note="note_".$schueler['P_Id'];
      if ($erst_d == 0)
      {
         $datum_text=$_POST[$datum];
      }
      
      if ($erst_a == 0)
      {
         $anmerkung_text=$_POST[$anmerkung];
      }
      
      if(datum_text != "dd.mm.yyyy" && $_POST[$note] != 0)
      {
         $datum_text=explode(".", $datum_text);
         $error = 0;
         if(sizeof($datum_text) != 3)
         {
            $error=1;
         }
         else
         {
            $monat=$datum_text[1];
            $tag=$datum_text[0];
            $jahr=$datum_text[2];
            if ($monat > 12 && $monat < 1)
            {
               $error=2;
            }
            if($jahr > date("Y") && $jahr < date("Y")-1)
            {
               $error=3;
            }
            if($tag < 1)
            {
               $error=4;
            }
            switch ($monat)
            {
               case 1:
               case 3:
               case 5:
               case 7:
               case 8:
               case 10:
               case 12:
                  if($tag > 31)
                  {
                     $error=5;
                  }
                  break;
               case 4:
               case 6:
               case 9:
               case 11:
                  if($tag > 30)
                  {
                     $error=6;
                  }
                  break;
               case 2:
                  if(($jahr % 4) == 0 && $tag > 29)
                  {
                     $error=7;
                  }
                  else if ($tag > 28)
                  {
                     $error=8;
                  }
                  break;
            }
         }
         $datum_text=$datum_text[2]."-".$datum_text[1]."-".$datum_text[0];
         if($error != 0)
         {
            include("../includes_db/db_close.inc.php");
            header("Location: http://localhost/Notenverwaltung_Schule/Lehrer/index.php?id=3&error=2&klasse=".$klasse."&fach=".$fach);
         }
         $notenquery="INSERT INTO noten (Schueler, Lehrperson, Note, Datum_Eintrag, Datum_Vergabe, Anmerkung, F_Id) VALUES (".$schueler['P_Id'].", ".$_SESSION['Personennummer'].", ".$_POST[$note].", CURDATE(), DATE('".$datum_text."'), '".$anmerkung_text."', ".$fach.")";
         $db->query($notenquery);
         if($db->affected_rows > 1)
         {
            include("../includes_db/db_close.inc.php");
            header("Location: http://localhost/Notenverwaltung_Schule/Lehrer/index.php?id=3&error=3&klasse=".$klasse."&fach=".$fach);
         }
         if($anmerkung_alle == 1)
         {
            $erst_a=1;
         }
         if($datum_alle == 1)
         {
            $erst_d=1;
         }
      }
      
   }
   include("../includes_db/db_close.inc.php");
   header("Location: http://localhost/Notenverwaltung_Schule/Lehrer/index.php?id=3&error=1");
   


P.S. Bitte nicht über den Code lachen, denn ich sollt so wenig wie möglich php-funktionen verwenden...

~markus
-- * -- * -- * -- * -- * -- * -- * --

Projektwebseite Miniwelt

-- * -- * -- * -- * -- * -- * -- * --
User avatar
ultner
 
Posts: 6
Joined: 17. August 2009 16:14
Location: Südtirol/Italien

Re: Fehlermeldung httpd.exe

Postby Wiedmann » 17. August 2009 17:26

Code: Select all
$klassendaten=$db->query($klassenquery);

Welche Datenbankabstraktionsschicht mit welcher PHP-Extension benutzt du hier?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Fehlermeldung httpd.exe

Postby ultner » 17. August 2009 17:51

Wiedmann wrote:Welche Datenbankabstraktionsschicht mit welcher PHP-Extension benutzt du hier?


Was ist eine Datenbankabstraktionsschicht und PHP-Extention?

Sry, bin mit Fachsprache nicht so vertraut... :(

~markus
-- * -- * -- * -- * -- * -- * -- * --

Projektwebseite Miniwelt

-- * -- * -- * -- * -- * -- * -- * --
User avatar
ultner
 
Posts: 6
Joined: 17. August 2009 16:14
Location: Südtirol/Italien

Re: Fehlermeldung httpd.exe

Postby Wiedmann » 17. August 2009 18:03

Was ist eine Datenbankabstraktionsschicht und PHP-Extention

--> siehe Wikipedia, bzw. das PHP Manual.

Dann anders:
Was ist "$db"?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Fehlermeldung httpd.exe

Postby ultner » 17. August 2009 18:05

Wiedmann wrote:Dann anders:
Was ist "$db"?


Also $db ist ein mysqli-Objekt, erstellt mit

Code: Select all
$db=mysqli_connect("localhost", username, passwort, datenbankname);
-- * -- * -- * -- * -- * -- * -- * --

Projektwebseite Miniwelt

-- * -- * -- * -- * -- * -- * -- * --
User avatar
ultner
 
Posts: 6
Joined: 17. August 2009 16:14
Location: Südtirol/Italien

Re: Fehlermeldung httpd.exe

Postby ultner » 17. August 2009 20:09

Ich habe jetzt die Zeile gefunden, habe aber noch nicht verstanden, ob es ein Problem mit Apache gibt, oder ob es mit PHP zusammenhängt.

In diesem Quellcode:

Code: Select all
<?
   session_start();
   if ($_SESSION['Login'] != "Herbst")
   {
      session_destroy();
      header("Location:http://localhost/Notenverwaltung_Schule/index.php?id=1");
   }
   if ($_SESSION['Rolle'] != "Lehrer")
   {
      session_destroy();
      header("Location:http://localhost/Notenverwaltung_Schule/index.php?id=2");
   }
   if(!isset($_POST['klasse']) || ! isset($_POST['fach']))
   {
      session_destroy();
      header("Location: http://localhost/Notenverwaltung_Schule/index.php?id=2");
   }
   include("../includes_db/db_open.inc.php");
   $klasse=$_POST['klasse'];
   $fach=$_POST['fach'];
   $anmerkung=0;
   $datum=0;
   if (isset($_POST['datum_alle']))
   {
      $datum_alle=1;
   }
   if(isset($_POST['anmerkung_alle']))
   {
      $anmerkung_alle=1;
   }
   $schuelerquery="SELECT p.P_Id FROM  klasseneinteilung k, personen p WHERE k.K_Id=".$klasse." AND p.P_Id=k.P_Id AND k.F_Id IS NULL ORDER BY p.Nachname, p.Vorname;";
   $schuelerdaten=$db->query($schuelerquery);
   $erst_a=0;
   $erst_d=0;
   while ($schueler=$schuelerdaten->fetch_array())
   {
      $anmerkung="anmerkung_".$schueler['P_Id'];
      $datum="datum_".$schueler['P_Id'];
      $note="note_".$schueler['P_Id'];
      if ($erst_d == 0)
      {
         $datum_text=$_POST[$datum];
      }
      
      if ($erst_a == 0)
      {
         $anmerkung_text=$_POST[$anmerkung];
      }
      
      if(datum_text != "dd.mm.yyyy" && $_POST[$note] != 0)
      {
         $datum_text=explode(".", $datum_text);
         $error = 0;
         if(sizeof($datum_text) != 3)
         {
            $error=1;
         }
         else
         {
            $monat=$datum_text[1];
            $tag=$datum_text[0];
            $jahr=$datum_text[2];
            if ($monat > 12 && $monat < 1)
            {
               $error=2;
            }
            if($jahr > date("Y") && $jahr < date("Y")-1)
            {
               $error=3;
            }
            if($tag < 1)
            {
               $error=4;
            }
            switch ($monat)
            {
               case 1:
               case 3:
               case 5:
               case 7:
               case 8:
               case 10:
               case 12:
                  if($tag > 31)
                  {
                     $error=5;
                  }
                  break;
               case 4:
               case 6:
               case 9:
               case 11:
                  if($tag > 30)
                  {
                     $error=6;
                  }
                  break;
               case 2:
                  if(($jahr % 4) == 0 && $tag > 29)
                  {
                     $error=7;
                  }
                  else if ($tag > 28)
                  {
                     $error=8;
                  }
                  break;
            }
         }
         $datum_text=$datum_text[2]."-".$datum_text[1]."-".$datum_text[0];
         if($error != 0)
         {
            include("../includes_db/db_close.inc.php");
            header("Location: http://localhost/Notenverwaltung_Schule/Lehrer/index.php?id=3&error=2&klasse=".$klasse."&fach=".$fach);
         }
         $notenquery="INSERT INTO noten (Schueler, Lehrperson, Note, Datum_Eintrag, Datum_Vergabe, Anmerkung, F_Id) VALUES (".$schueler['P_Id'].", ".$_SESSION['Personennummer'].", ".$_POST[$note].", CURDATE(), DATE('".$datum_text."'), '".$anmerkung_text."', ".$fach.");";
         
         $db->query($notenquery);
         if($db->affected_rows > 1)
         {
            include("../includes_db/db_close.inc.php");
            header("Location: http://localhost/Notenverwaltung_Schule/Lehrer/index.php?id=3&error=3&klasse=".$klasse."&fach=".$fach);
         }
         if($anmerkung_alle == 1)
         {
            $erst_a=1;
         }
         if($datum_alle == 1)
         {
            $erst_d=1;
         }
      }
      
   }
   include("../includes_db/db_close.inc.php");
   header("Location: http://localhost/Notenverwaltung_Schule/Lehrer/index.php?id=3&error=1");
   
?>



Funktioniert folgendes nicht:

nach der Query im unterem Teil

Code: Select all
...
$notenquery="INSERT INTO noten (Schueler, Lehrperson, Note, Datum_Eintrag, Datum_Vergabe, Anmerkung, F_Id) VALUES (".$schueler['P_Id'].", ".$_SESSION['Personennummer'].", ".$_POST[$note].", CURDATE(), DATE('".$datum_text."'), '".$anmerkung_text."', ".$fach.");";
         
         $db->query($notenquery);
         if($db->affected_rows > 1)
         {
            include("../includes_db/db_close.inc.php");
            header("Location: http://localhost/Notenverwaltung_Schule/Lehrer/index.php?id=3&error=3&klasse=".$klasse."&fach=".$fach);
         }
...


kann ich nicht $db-affected_rows ausführen. Diese Eigenschaft benutze ich in fast jedem Script, aber hier bei diesem Zugriff will der Speicher nicht mitmachen, was ich nicht ganz verstehe...

ich hoffe dass mein problem jetzt soweit verstanden wurde.

p.s. habe xampp neu installiert, hat keine Veränderung mit sich gebracht. Bin gerade dabei, in Linux zu versuchen, ob es auch da Probleme gibt mit dem Script.

~markus
-- * -- * -- * -- * -- * -- * -- * --

Projektwebseite Miniwelt

-- * -- * -- * -- * -- * -- * -- * --
User avatar
ultner
 
Posts: 6
Joined: 17. August 2009 16:14
Location: Südtirol/Italien

Fehlermeldung httpd.exe

Postby ultner » 19. August 2009 17:56

wenn das object $db diese eigenschaft nicht besitzen würde in diesem moment, dann müsste apache diesen fehler doch abfangen, und nicht die anfrage an das system weiterleiten, oder?


:?: :?: :?: :?: :?: :?: :?: :?: :?: :?:
-- * -- * -- * -- * -- * -- * -- * --

Projektwebseite Miniwelt

-- * -- * -- * -- * -- * -- * -- * --
User avatar
ultner
 
Posts: 6
Joined: 17. August 2009 16:14
Location: Südtirol/Italien


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 4 guests