Erreur mémoire Apache

Erreur mémoire Apache - HTML/CSS - Programmation

Marsh Posté le 17-01-2010 à 00:32:44    

Bonjour bonjour,
 
Je poste ce message après quelques heures à me gratter la tête au sujet d'un bug qui reste pour moi très mystérieux, même si j'ai une petite idée.
 
Voila j'ai fais un 'site' local pour faire mes comptes avec une base de donnée en php, le soucis c'est pour rentrer mes dépenses. Au début je l'ai rentrés directement dans la base de donnée sans réfléchir, maintenant j'ai fais une page pour rentré ces données, mais là malheur, j'ai une erreur mémoire d'apache :
 

Citation :

apache.exe - Erreur d'application
 
L'instruction à "0x003772072" emploie l'adresse mémoire "0x00000000". La mémoire ne peut pas être "read".
 
Cliquez sur OK pour terminer le programme.
Cliquez sur Annuler pour déboguer le programme.


 
Ceci me gêne car je comprends pas totalement d'où peut venir le soucis voici le code de la première page :  
 

Citation :

<fieldset>
 <legend align="left">
 <font face="arial black" size=16> Dépense effectué </font>
 </legend>
     <TABLE width="100%" height="5%" border=0>
        <TR>
            <TD width="50%" align="center">
                        <form method="get" action="depenseok.php">
                        <BR>
                        <BR>
                        <font face="comic sans ms" size=6>Montant :  </font><BR><BR><BR><BR>
                        <font face="comic sans ms" size=6>La raison :  </font><BR><BR><BR><BR>
                        <font face="comic sans ms" size=6>Le commentaire :  </font><BR><BR><BR><BR>
            </TD>
            <TD valign="BOTTOM">
            <BR><BR>
            <input type="text" name="argent" id="argent" /><BR><BR><BR><BR><BR>
            <input type="text" name="raison" id="raison" /><BR><BR><BR><BR><BR><BR>
            <TEXTAREA cols=50 rows=4 value="" name="commentaire" id="commentaire" /></Textarea>
            </TD>
        </TR>
     </table>
      </fieldset>
      <TABLE align="center">
      <TR>
      <TD>
      <BR><BR><BR>
      <input type="submit" value="accepter" />
      </form>


 
Et voici la 2ème page qui me sert à rentré mes données dans la base de donnée :
 

Citation :

<BODY>
<?php
$argent = $_GET['argent'];     #récupération des données
$com = $_GET['commentaire'];
$raison = $_GET['raison'];
$annees = date ("Y" );
$mois = date ("m" );
$jour = date ("d" );
$date = ("$annees-$mois-$jour" ); #variable pour rentré la date dans ma bdd
$moisch = date("m" );            #Cette variable me permet de choisir la table où je vais rentré les données, les tables me permettent de rangé mes        données par mois
 
IF ($moisch == 01)               #Ici je selectionne la table en changeant la variable $moisch en chiffre et je la transforme en mot.
                     {
                         $moisch = ("janvierdepense" );
                     }
                   ELSEIF ($moisch == 02)
                     {
                         $moisch = ("fevrierdepense" );
                     }
                     ELSEIF ($moisch == 03)
                     {
                         $moisch = ("marsdepense" );
                     }
                     ELSEIF ($moisch == 04)
                     {
                         $moisch = ("avrildepense" );
                     }
                     ELSEIF ($moisch == 05)
                     {
                         $moisch = ("maidepense" );
                     }
                     ELSEIF ($moisch == 06)
                     {
                         $moisch = ("juindepense" );
                     }
                     ELSEIF ($moisch == 07)
                     {
                         $moisch = ("juilletdepense" );
                     }
                     ELSEIF ($moisch == 08)
                     {
                         $moisch = ("aoutdepense" );
                     }
                     ELSEIF ($moisch == 09)
                     {
                         $moisch = ("septembredepense" );
                     }
                     ELSEIF ($moisch == 10)
                     {
                         $moisch = ("octobredepense" );
                     }
                     ELSEIF ($moisch == 11)
                     {
                         $moisch = ("novembredepense" );
                     }
                     ELSEIF ($moisch == 12)
                     {
                         $moisch = ("decembredepense" );
                     }
                     ELSEIF ($moisch < 0)             #Mon défaut à moins de 0
                     {
                       echo "bug1"; ?><BR><?php
                       echo $moisch; ?><BR><?php
                     }
                     ELSEIF ($moisch > 12)           #Mon défaut à plus de 0
                     {
                          echo "bug2";?><BR><?php
                          echo $moisch; ?><BR><?php
                     };
mysql_connect("XX", "XX", "XX" );                  #Insertion des données dans ma bdd
mysql_select_db("comptetest" );
mysql_query("INSERT INTO $moisch VALUES ('', '$raison', '$argent', '$date', '$com'" );
mysql_close();
?>


 
Je pensais peut être que c'était la forme de poste que j'utilisais qui n'étais pas bonne, mon formulaire est envoyé grâce à la méthode "Get", peut être y a t'il une autre solution plus "propre"?
 
Le bug apparait lorsque je soumets mon <form></form>, une fois soumit la page se fige et apache me fait l'erreur plus haut.
 
Merci de m'indiquer vos idées, et peut être de nouvelle solution pour améliorer mon script ^^.
 
Ps : J'ai quelque peu couper mon script, en laissant les balises inutiles genre <HTML> etc....
 
Twist

Reply

Marsh Posté le 17-01-2010 à 00:32:44   

Reply

Marsh Posté le 17-01-2010 à 08:50:10    

Tu pourrais le passer en POST.
À part ça, ta longue chaine de "elseif" pourrait être remplacée par un tableau ayant comme index le mois "en nombre" et en valeur le mois "en lettres".
 
C'est quelle version de Apache ça?
 
Ce genre de bug, il faut le remonter directement aux dev de Apache, parce que chez toi c'est chiant mais pas trop grave, maintenant si ça arrivait sur le site d'une banque ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 17-01-2010 à 21:45:17    

Essayer en remplaçant $moisch par deux variables distinctes, une pour le numéro du mois, et une pour la chaine de caractère du mois :  

$moisch_num = date("m" );      
if ($moisch_num == 01) {
     $moisch = "janvierdepense";  
...

Par la même occasion, j'ai enlevé les parenthèses inutiles autour des noms des mois.
 
Ou en utilisant un table :

$tab_mois_lib = array();
$tab_mois_lib[1] = "janvier"; $tab_mois_lib[2] = "fevrier";  $tab_mois_lib[3] = "mars";
$tab_mois_lib[4] = "avril";   $tab_mois_lib[5] = "mai";      $tab_mois_lib[6] = "juin";
$tab_mois_lib[7] = "juillet"; $tab_mois_lib[8] = "aout";     $tab_mois_lib[9] = "septembre";
$tab_mois_lib[10] = "octobre";$tab_mois_lib[11] = "novembre";$tab_mois_lib[12] = "decembre";
 
$moisch_num = date("m" );
if ($moisch_num >=1 && $moisch_num <= 12)
   $moisch = $tab_mois_lib[$moisch_num]."depense";
else {
  echo "Erreur";
  echo $moisch;
}

Reply

Marsh Posté le 18-01-2010 à 12:30:08    

Oki, merci pour le conseil pour mon script, la version d'apache est 2.2 je pense (selon le httpd.conf il parle de See <URL:http://httpd.apache.org/docs/2.2> for detailed information. ).
Au pire je vais essayer d'installer une nouvelle version de easyphp (oublié de le signaler), si y en a une plus récente.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed