Envoie des données au chargement de page.
Résolu
Sakag
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
Sakag Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
Sakag Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Envoie des données au chargement de page.
- Impossible de supprimer une page word - Guide
- Trier des données excel - Guide
- Supprimer les données de navigation - Guide
- Sauvegarde des données - Guide
- Numéro de page word - Guide
6 réponses
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>
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
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.
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
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>