page blanche et base de donnée non completée

Eléphanteau du PHP | 41 Messages

25 mai 2012, 12:03

Bonjour!
Je suis nouveau dans le PHP et nouveau sur ce site donc soyez indulgent.
mon but est de créer une page html capable d'enregistrer les informations tapées dans la base de donnée(easyPHP).
J'ai donc créer une page HTML simple et un formulaire.php
cependant lorsque j'envoi les informations que j'ai tapé, cela me dirige sur une page blanche sans erreurs et la base de donnée reste vide.
j'ai déjà regarder plusieurs tutoriel, forum sans trouver de réponse.
Si quelqu'un pouvait m'aider ce serait simpa! Merci d'avance.

page.HTML:

<html>
<form method="post" action="formulaire.php">
<center>
<p>
code du client <input type="text" name="CODE_CLIENT"><br>
nom du client <input type="text" name="NOM_CLIENT"><br>
code postal du client <input type="text" name="CODE_POSTAL"><br>
adresse du client <input type="text" name="ADD_CLIENT"><br>
ville du client <input type="text" name="VILLE_CLIENT"><br>
<input type="submit" value="Envoyer" name="envoyer">
</p>
</center>
</form>
</html>


formulaire.php:

<HTML><BODY>
<?php
if(isset($_POST['CODE_CLIENT']))
$CODE_CLIENT=$_POST['CODE_CLIENT'];
else
$CODE_CLIENT="";


if(isset($_POST['NOM_CLIENT']))
$NOM_CLIENT=$_POST['NOM_CLIENT'];
else
$NOM_CLIENT="";


if(isset($_POST['CODE_POSTAL']))
$CODE_POSTAL=$_POST['CODE_POSTAL'];
else
$CODE_POSTAL="";


if(isset($_POST['ADD_CLIENT']))
$ADD_CLIENT=$_POST['ADD_CLIENT'];
else
$ADD_CLIENT="";


if(isset($_POST['VILLE_CLIENT']))
$VILLE_CLIENT=$_POST['VILLE_CLIENT'];
else
$VILLE_CLIENT="";

$db = mysql_connect("localhost:3306", "root", '') or die('Erreur de connexion '.mysql_error());

mysql_select_db('db1',$db) or die('Erreur de selection '.mysql_error());

$sql = "INSERT INTO client( CODE_CLIENT, NOM_CLIENT, CODE_POSTAL, ADD_CLIENT, VILLE_CLIENT) VALUES('$CODE_CLIENT', '$NOM_CLIENT', '$CODE_POSTAL', '$ADD_CLIENT', '$VILLE_CLIENT')";

mysql_query($sql)

mysql_close();
}

?>
</BODY></HTML>

ViPHP
xTG
ViPHP | 7331 Messages

25 mai 2012, 12:19

Il te manque un point virgule après le mysql_query() donc erreur de syntaxe.
Actives l'affichage des erreurs dans le php.ini ou au moins regardes le fichier de log dans ces cas là. ;)

Eléphanteau du PHP | 41 Messages

25 mai 2012, 13:36

Merci j'avais pas fait attention! mais a priori c'est pas ça.
comme je l'ai dit je m'y connai pas encore beaucoup en PHP. le fichier log en question c'est EasyPHP.log? il ne renseigne pas sur mon erreur apparemment. et le fichier ini est assez grand tu peux me dire ce que je dois modifier? j'ai regardé un peu et le peu que j'ai vu où était marqué "erreur" est en "ON".
et ça n'explique pas la page blanche :/

ViPHP
ViPHP | 2577 Messages

25 mai 2012, 13:59

Normal que la page soit vide, tu n'affiches rien dans ton script à part <html><body></body></html>.
Regarde le source de la page dans le navigateur, tu dois voir les balises ci-dessus.

Eléphanteau du PHP | 41 Messages

25 mai 2012, 14:04

D'accord ! je n'étais pas sûr de ce que ça devait afficher donc j'ai préféré préciser ^^
Je m'y connais pas trop encore! Merci!
mais je ne comprends toujours pourquoi la base de donnée ne se remplit-elle pas..?

Eléphanteau du PHP | 41 Messages

25 mai 2012, 14:25

Lorsque je lance le fichier php depuis easyphp directement, ça me rajoute une ligne vide dans ma table client. Ce qui me semble logique!
Le probleme ne viendrait donc pas du fichier php..?

ViPHP
xTG
ViPHP | 7331 Messages

25 mai 2012, 14:27

Pour vérifier qu'une erreur SQL ne se produit pas :
mysql_query($sql) or die(mysql_error());
Quand on injecte des variables dans une requête il faut toujours les échapper (les protéger), tu as pour cela la fonction mysq_real_escape_string().

Concernant la ligne dans le php.ini pour les erreurs c'est error_reporting et display_errors : http://fr2.php.net/manual/fr/errorfunc. ... -reporting

Concernant ta ligne vide, c'est que ton formulaire n'envoie aucune donnée. :)

Eléphanteau du PHP | 41 Messages

25 mai 2012, 14:54

euh si j'ai bien compris ça donnerait ça:

mysql_query(mysql_real_escape_string($sql)) or die(mysql_error());

si j'ai bien compris ça protége ce qu'on insère dans la base de donnée..?
mon fichier php.ini a l'air bien configurer j'ai l'impression.
Donc.. je sais toujours pas ce que je dois faire :?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 mai 2012, 15:21

Salut,

Non tu utilise mal cette fonction.
Il faut l'utiliser sur les variables que tu utilise dans la requête.

Donc
<?php
$truc = mysql_real_escape_string($truc);
$sql = 'select machin from chose  where truc=\''.$truc.'\';
?>
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 41 Messages

25 mai 2012, 15:36

D'accord! Du coup.. est-ce correct à présent?
par exemple:
$CODE_CLIENT=mysql_real_escape_string($CODE_CLIENT);

ViPHP
xTG
ViPHP | 7331 Messages

25 mai 2012, 16:49

Oui ton utilisation est correcte.
Pour le php.ini error_reporting doit être à E_ALL et display_errors à 1.

Eléphanteau du PHP | 41 Messages

27 mai 2012, 10:22

C'est écrit "E_ALL | E_script"
Un truc dans le genre.
et display est sur "on" par défaut.
Y a t-il une configuration spéciale pour faire des formulaires? du style une version d'EasyPHP spéciale ou quelque chose comme ça?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 mai 2012, 10:45

non.

si php fonction et que ta page est en .php y a pas de raison que tu n'y arrive pas.

ajoute un test sur le retour de mysql_query() pour voir s'il y aune erreur (si === false affiche le retour de mysql_error()).

ton code va toujours insérer une ligne même quand le formulaire n'est pas posté.

Ajout un test sur le post du formulaire avant utilisation du mysql_query().

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 41 Messages

27 mai 2012, 14:34

Quel genre de test je peux mettre avant mysql_query..?
Pour tester mysql_query ca devrait aller en revanche!
merci :)

ViPHP
xTG
ViPHP | 7331 Messages

27 mai 2012, 14:52

On met généralement un test englobant tout le bloc de traitement du formulaire.
Et ce test c'est la réception des valeurs. :)
if( isSet($_POST['.....']) ){
  // données du formulaire reçues et à traiter
}