Envoie des données au chargement de page.

Résolu/Fermé
Sakag Messages postés 17 Date d'inscription mercredi 2 octobre 2013 Statut Membre Dernière intervention 9 janvier 2014 - Modifié par baladur13 le 2/10/2013 à 09:41
Sakag Messages postés 17 Date d'inscription mercredi 2 octobre 2013 Statut Membre Dernière intervention 9 janvier 2014 - 3 oct. 2013 à 00:14
Bonjour à tous,
Je me tourne vers vous car j'ai un petit problème que je n'arrive pas a comprendre...
Voilà, je suis novice en programmation mais j'ai décidé de me lancer dans le php pour tenté de créé un petit site personnelle.. bref!

Grosomodo on va dire que j'ai une page toute bête, avec dessus un formulaire à remplir (nom, prénom, email, age..Ect) le "formulaire" est bien connecter à la bdd, quand on clique sur le submit aucun problème il l'envoie. le problème c'est qu'il ne l'envoie pas que la x).. au chargement de page aussi ! il envoie systématiquement un formulaire blanc a ma bdd --'

je ne comprend pas trop le pourquoi du comment, j'avais peut etre pensé (théorie!) de créé une condition qui dit en gros " tant que le bouton n'a pas encore étais "cliquer" tu n'envoie rien..." bref comme vous le voyez j'ai grandement besoin d'aide! x)... je vous met si dessous le code source de la page en question!
Merci d'avoir au moins lu jusqu'ici !
J'attend vos réponse impatiemment !!

<HTML>
<Head>
<meta charset="UTF-8">
<TITLE>Test3</TITLE>
</head>
<Body>
<center><form method="POST" action="Test3.php">
prenom <input type="text" name="prenom"/><BR><BR>
nom <input type="text" name="nom"/><BR><BR>
age <input type="text" name="age"/><br><BR>
<input type="submit" name="valider" value="valider"/>
</form></center>


<?php
$con=mysql_connect("mysql.xxxxxx.fr","zzzzz_login","yyyyyyy");
if(!con){
die('erreur de connection '.mysql_error());
}
mysql_select_db('zzzzzz_login');

$prenom=$_POST['prenom'];
$nom=$_POST['nom'];
$age=$_POST['age'];

$sql="INSERT INTO 'Compte' SET prenom='.$prenom.', nom='.$nom.', age='.$age.'";

if(!mysql_query($sql,$con)){
die('ERREUR'.mysql_error());
}
echo "Les infos sont bien stockées !";
?>
</Body>
</HTML>

xxx, yyyy ou zzzz = identifiants supprimés Modération CCM
A voir également:

6 réponses

Utilisateur anonyme
2 oct. 2013 à 08:00
Bonjour

Erreur classique.
Tu crois probablement que, parce que tu as mis le traitement en php après le formulaire, il attend sagement que le formulaire soit rempli pour passer à la deuxième partie et qu'il exécute ensuite le PHP avec ton formulaire.
Ce n'est pas comme ça que ça marche.
En fait, TOUT ton script est exécuté sans rien attendre : l'envoi du formulaire, puis le traitement php. À ce moment-là, tu fais un insert avec des variables vides.
Ensuite seulement, quand on appuie sur le bouton valider, ton script (celui indiqué dans le 'action' du post) est appelé. Là tout recommence : affichage du formulaire, puis traitement du php, mais cette fois avec les valeurs saisies dans $_POST.

La solution, c'est de tester si le formulaire a été saisi en testant l'existence de $_POST['valider'] pour savoir s'il faut traiter le formulaire ou non.
Il est d'ailleurs préférable de mettre ce traitement AVANT l'envoi du formulaire.

<?php 
if (isset($_POST['valider'])) {
$con=mysql_connect("mysql.hostinger.fr","******","******");
...
echo "Les infos sont bien stockées !";
}
?>
<HTML>
...
</HTML>
0
Sakag Messages postés 17 Date d'inscription mercredi 2 octobre 2013 Statut Membre Dernière intervention 9 janvier 2014
2 oct. 2013 à 14:44
Bonjour,
Et merci de votre réponse! je comprend parfaitement ce que vous voulez dire,
mais je n'arrive pas vraiment a l'appliquer...

Alors j'ai tester différente choses:

N°1)

<Head>
<meta charset="UTF-8">
<TITLE>Test3</TITLE>
</head>


<HTML>
<Body>
<center><form method="POST" action="Test3.php">
prenom <input type="text" name="prenom"/><BR><BR>
nom <input type="text" name="nom"/><BR><BR>
age <input type="text" name="age"/><br><BR>
<input type="submit" name="valider" value="valider"/>
</form></center>


<?php
if (isset($_POST['valider'])) {
$con=mysql_connect("mysql.hostinger.fr","*******_login","*******");
mysql_select_db('Compte');
echo "Les infos sont bien stockées !";
}



$prenom=$_POST['prenom'];
$nom=$_POST['nom'];
$age=$_POST['age'];

$sql="INSERT INTO 'Compte' SET prenom='.$prenom.', nom='.$nom.', age='.$age.'";

?>
</Body>
</HTML>

Et n°2)

<Head>
<meta charset="UTF-8">
<TITLE>Test3</TITLE>
</head>
<?PHP
if (isset($_POST['valider'])) {
$con=mysql_connect("mysql.hostinger.fr","********_login","*******");
mysql_select_db('Compte');
echo "Les infos sont bien stockées !";
}
?>
<HTML>
<Body>
<center><form method="POST" action="Test3.php">
prenom <input type="text" name="prenom"/><BR><BR>
nom <input type="text" name="nom"/><BR><BR>
age <input type="text" name="age"/><br><BR>
<input type="submit" name="valider" value="valider"/>
</form></center>


<?php

$prenom=$_POST['prenom'];
$nom=$_POST['nom'];
$age=$_POST['age'];

$sql="INSERT INTO 'Compte' SET prenom='.$prenom.', nom='.$nom.', age='.$age.'";

?>
</Body>
</HTML>

a la limite il exécute parfaitement le script, dans le sens ou maintenant, quand on charge la page il ne nous dit plus "les infos sont bien stockées!" mais bien quand on clique sur le bouton validez.
mais maintenant le problème c'est que ma BDD ne recois rien (ou en tout cas n'affiche rien ... ) https://www.hostinger.com/free-eol?utm_source=fri&utm_medium=www&utm_campaign=free_eol
0
Je ne comprends rien aux modifications que tu as faites.

D'abord, pourquoi n'y a-t-il que la connexion à la base de données qui est soumise au if ? Ce devrait être la totalité du traitement .
Ensuite, pourquoi n'as-tu pas mis la totalité du traitement en tout début de ta page,avant l'envoi du formulaire ? Ce n'est pas vraiment une obligation, mais ça offre des avantages que je ne vais pas détailler maintenant.

Pourquoi affiches-tu "Les infos sont bien stockées !"; AVANT qu'elles le soient ?
Mais surtout ...
Pourquoi n'exécutes-tu plus ta requête (le mysql_query à disparu) ? Tu ne risques pas d'enregistrer quoi que ce soit si la requête n'est pas exécutée.
0
Sakag Messages postés 17 Date d'inscription mercredi 2 octobre 2013 Statut Membre Dernière intervention 9 janvier 2014
2 oct. 2013 à 16:56
Comme je te l'ai dit, je suis novice dans le php...

et je dois t'avouer que j'ai un peu de mal a te suivre sans explications concrètes,
pourrais tu, s'il te plait me montré le bon codage de la page que je comprenne mieux mes erreurs?

Voici mon dernier test qui ce conclu par " ERREURQuery was empty " ...


<Head>
<meta charset="UTF-8">
<TITLE>Test3</TITLE>
</head>
<?php
if (isset($_POST['valider'])) {
$con=mysql_connect("mysql.hostinger.fr","*****_login","******");
if(!con){
die('erreur de connection '.mysql_error());
}
mysql_select_db('*****_login');


if(!mysql_query($sql,$con)){
die('ERREUR'.mysql_error());
}
echo "Les infos sont bien stockées !";

}


?>


<HTML>
<Body>
<center><form method="POST" action="Test3.php">
prenom: <input type="text" name="prenom"/><BR><BR>
nom <input type="text" name="nom"/><BR><BR>
age <input type="text" name="age"/><br><BR>
<input type="submit" name="valider" value="valider"/>
</form></center>


<?php

$prenom=$_POST['prenom'];
$nom=$_POST['nom'];
$age=$_POST['age'];

$sql="INSERT INTO 'Compte' SET prenom='.$prenom.', nom='.$nom.', age='.$age.'";


?>
</Body>
</HTML>
0

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

Posez votre question
Utilisateur anonyme
2 oct. 2013 à 18:20
Je t'avais pourtant répondu dès mon premier message, tu avais juste à mettre ton propre code à la place des pointillés
Au passage, je veux bien admettre que tout ne te semble pas évident, mais dans ta dernière version tu essayes d'exécuter une requête qui est déterminée au moins 20 lignes plus loin, et le message d'erreur te dit clairement qu'elle est vide

<?php 
if (isset($_POST['valider'])) {

$con=mysql_connect("mysql.xxxxxx.fr","zzzzz_login","yyyyyyy");
if(!con){
die('erreur de connection '.mysql_error());
}
mysql_select_db('zzzzzz_login');

$prenom=$_POST['prenom'];
$nom=$_POST['nom'];
$age=$_POST['age'];

$sql="INSERT INTO 'Compte' SET prenom='.$prenom.', nom='.$nom.', age='.$age.'";

if(!mysql_query($sql,$con)){
die('ERREUR'.mysql_error());
}
echo "Les infos sont bien stockées !";
}
?>
<HTML>
<Head>
<meta charset="UTF-8">
<TITLE>Test3</TITLE>
</head>
<Body>
<center><form method="POST" action="Test3.php">
prenom <input type="text" name="prenom"/><BR><BR>
nom <input type="text" name="nom"/><BR><BR>
age <input type="text" name="age"/><br><BR>
<input type="submit" name="valider" value="valider"/>
</form></center>
</Body>
</HTML>
0
Sakag Messages postés 17 Date d'inscription mercredi 2 octobre 2013 Statut Membre Dernière intervention 9 janvier 2014
3 oct. 2013 à 00:14
Un Grand merci pour ton aide! :)
il y avait encore deux trois erreurs dans le code comme " 'compte' " qui enfaite était " 'compte' " mais tout marche nickel !

Encore une fois, super satisfait du forum Comment Ca Marche et de sa communauté !

A bientôt !
0