Problème de PHP + Mysql : ajout de variables

Fermé
SinBert Messages postés 10 Date d'inscription samedi 2 mai 2009 Statut Membre Dernière intervention 24 septembre 2009 - 2 mai 2009 à 21:58
SinBert Messages postés 10 Date d'inscription samedi 2 mai 2009 Statut Membre Dernière intervention 24 septembre 2009 - 5 mai 2009 à 17:08
Bonjour,
J'ai encore un problème avec mon PHP T T

<?php
$forumname = $_POST['forumname'];
$ign = $_POST['ign'];
$commentaire = $_POST['commentaire'];
$reglement = $_POST['reglement'];

if (isset($reglement) && $_POST["reglement"] == "false" ) {

echo("Vous devez accepter le reglement pour vous ajouté au classement" );
}
if($forumname == "") {
print("Veuillez saisir votre nom de forum<BR>\n");
}
if($ign == ""){
print("Veuillez saisir un IGN<BR>\n");
}
if($reglement == "false"){
print("Veuillez lire le règlement<BR>\n");
}

else {

include("connexion.php");

mysql_query("INSERT INTO dragotaka_ranking(id, forumname, ign, commentaire) VALUES('', '$forumname', '$ign', '$commentaire')");


mysql_close();
 
header("Location: http://PAGEDUCLASSEMENT.php");

}
?>


En sachant que la variable $reglement a été générée par une checkbox, que le fichier "connection.php" est correct et que le header(location:) a été volontairement modifier :

1er problème : La vérification des variables

Que je remplisse les champs que se soit même en cochant ou non la checkbox, le header marche quand même.
Une suggestion?

2ème problème : les variable ne sont pas ajoutée a ma BDD

Après quelque vérification (notamment le Nb. enr. = 0) j'ai pu voir que les variables ne s'ajoutaient pas a ma BDD.
Des suggestions?

Merci d'avance!

PS : aucune erreur n'est générée par PHP ou Mysql, j'ai juste constater.

6 réponses

Bonjour

Je soupçonne que le champ de ton formulaire ne s'appelle pas reglement ou que sa valeur n'est pas "false". Peut-on voir le formulaire ?

aucune erreur n'est générée par PHP ou Mysql, j'ai juste constater Même quand tu ajoutes or die(mysql_error()) :
mysql_query("INSERT INTO dragotaka_ranking(id, forumname, ign, commentaire) VALUES('', '$forumname', '$ign', '$commentaire')") or die(mysql_error());
0
SinBert Messages postés 10 Date d'inscription samedi 2 mai 2009 Statut Membre Dernière intervention 24 septembre 2009
3 mai 2009 à 10:27
Voici le formulaire :
<html>
<head>
<title>S'ajouter au Classement</title>
<body bgcolor="#2f1d0f">

<center>
<font size="7" color="#e9c054">S'ajouter au classement</font>
               <br>
</center>
   <p align="left">
         <form method="post" action="ajout.php">
<font color="#e9c054">Nom de forum :</font><br><input type="text" name="forumname">
<br>
<font color="#e9c054">IGN : </font><br><input type="text" name="ign">
<br>
<br>
<font color="#e9c054">Commentaire :</font> <br>


<TEXTAREA NAME="commentaire" COLS=25 ROWS=5></TEXTAREA><br>

<br><br>
<font color="#e9c054">J'ai lu et j'accepte le règlement : <input type="checkbox" name="reglement"></font><br><br>

 <input type="submit" value="Envoyer">
</form> 
</p>
<center>
<textarea cols="50" rows="10" wrap="hard" disabled="yes">
Ceci est un classement qui va regrouper les joueurs francophone de Dragonica.
Aucun joueur non francophone ne pourra participer a celui-ci sous peine d'y être supprimer.
Aucun joueur en double ne sera tolérer dans ce classement sous peine de voir les deux joueurs supprimer de celui-ci.
Cochez la case si vous avez lui et compris ces deux règles
</textarea></center>


</body>
</html>


Maintenant si j'ajoute ce que tu m'as dit, 4 erreurs sont générées et il y a "Veuillez saisir votre nom de forum
Veuillez saisir un IGN" qui apparaît. (je n'avais rempli aucune champ du formulaire)

Les erreurs :
Warning: include(connexion.php) [function.include]: failed to open stream: No such file or directory in /www/sites/1/ifrance.com/b/e/bert0204/site/ajout.php on line 23

Warning: include() [function.include]: Failed opening 'connexion.php' for inclusion (include_path='.:/www/usr/lib/php') in /www/sites/1/ifrance.com/b/e/bert0204/site/ajout.php on line 23

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /www/sites/1/ifrance.com/b/e/bert0204/site/ajout.php on line 25

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /www/sites/1/ifrance.com/b/e/bert0204/site/ajout.php on line 25
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


Je vais déjà virer la fonction include pour résoudre le 1er problème.

EDIT : Quand je met les deux lignes de connections, les variables s'ajoutent bien dans la BDD vu que
Nb. enr. = 3
Bref, mes variable s'ajoutent bien a ma BDD (1er problème), cependant, j'arrive toujours a passer le formulaire sans remplir tous les champs.
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
3 mai 2009 à 11:09
Avec un print_r($_POST), tu comprendras ton erreur.

Et avant d'insérer des valeurs utilisateurs dans une table, on controle et on protège ces valeurs.
0
SinBert Messages postés 10 Date d'inscription samedi 2 mai 2009 Statut Membre Dernière intervention 24 septembre 2009
3 mai 2009 à 11:22
J'ai compris que les variables ajoutées a la BDD sont vides vu que la fonction me retourne :
Array ( )


Cependant je n'ai toujours pas compris comment y remédier ...

J'ai aussi protéger les valeurs de mes variable avec la fonction htmlentities()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
C'est bien ce que je soupçonnais, reglement ne vaut pas "false". Il n'y a nulle part dans ton formulaire de value="false" dans le <input reglement>, par quelle magie cette valeur apparaîtrait-elle ?
Quant aux messages concernant le fichier connexion.php, ils indiquent clairement que ce fichier n'existe pas. S'appelle-t-il connexion ou connection ? Est-il dans le même répertoire que ce script, ou dans un autre

aucune erreur n'est générée par PHP ou Mysql Ben si il y en avait bien... C'est juste que tu ne les voyais pas parce que la plupart des hébergeurs les cachent par défaut, parce que les messages d'erreurs peuvent donner des informations aux pirates.

Aucun joueur non francophone ne pourra participer a celui-ci sous peine d'y être supprimer. Si ton site est plein de gags comme celui-ci, il faudra que tu me donnes le lien, il doit être très drôle !
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
3 mai 2009 à 11:39
Il faut remplir le form et le soumettre et regrader avec print_r()

C'est normal que $_POST est vide si tu ne le soumets pas.

htmlentities() ne sert qu'à l'affichage.
0
SinBert Messages postés 10 Date d'inscription samedi 2 mai 2009 Statut Membre Dernière intervention 24 septembre 2009
5 mai 2009 à 17:08
Mmh, j'ai tout essayer et sa ne marche toujours pas...

Je ne saisi pas se que tu veux dire par "soumettre" le formulaire =S

PS : J'ai aussi protégé sans contre les Mysql injection.
0