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
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
A voir également:
- Envoie des données au chargement de page.
- Supprimer une page word - Guide
- Page d'accueil iphone - Guide
- Traduire une page web - Guide
- Word numéro de page 1/2 - Guide
- Créer une page facebook - Guide
6 réponses
Utilisateur anonyme
2 oct. 2013 à 08:00
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.
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>
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
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
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
Utilisateur anonyme
Modifié par le père. le 2/10/2013 à 14:57
Modifié par le père. le 2/10/2013 à 14:57
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.
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.
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
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>
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>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
2 oct. 2013 à 18:20
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
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>
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
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 !
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 !