Prob enregistrer données après vérif

Signaler
Messages postés
85
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
19 mars 2007
-
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
-
Bonjour,

J'ai de nouveau un petit problème.
J'ai un formulaire pour enregistrer des données, en bas, un bouton d'action qui renvoit vers une page pour récapituler les données transmises afin de revenir en arrière pour corriger, ou pour valider les données.
Bon mon problème viens pour la page pour envoyer les données une fois récapitulé.
Il me dit qu'il y a des cases vides alors que les cases nécessaire sont remplies.

Voici les codes:
Formulaire:
<form method="post" action="index.php?page=recapfiche">
Formuliare d'enregistrement d'un lieu en France,

----

Remplissez ce formulaire (attention tous les champs suivi d'un * sont obligatoire et vous devez &ecirc;tre connect&eacute;).

Information sur le lieu :

Département * :
<select name="Departement">
<option selected>S&eacute;lectionnez votre département</option>
<option value="01 - Ain">01 - Ain</option>
.....
</select>

Ville (ou lieu dit) * :

Petit nom du lieu :

Type de coin * :
<select name="Typecoin">
<option selected>Sélectionnez le type de coin</option>
<option value="1">1</option>
</select>

Domaine (privé ou public) * :

Profondeur * :

Nature * :
<select name="Nature">
<option selected>Sélectionnez la nature</option>
<option value="1">1</option>
....
</select>

Relief * :
<select name="Relief">
<option selected>Sélectionnez le relief</option>
<option value="1">1</option>
....
</select>

Espèces présentent * :

Conseil :

Technique préconisée * :
<select name="Technique">
<option selected>Sélectionnez la technique</option>
<option value="1">1</option>
......
</select>

Amour * :
<select name="Amour">
<option selected>Sélectionnez l'amour</option>
<option value="1">1</option>
....
</select>

Amour précision :
<textarea cols="27" rows="4" name="Amoursuite"></textarea>

Exemple* :
<select name="Exemple">
<option selected>Sélectionnez</option>
<option value="1">1</option>
.....
</select>

Divers sur le lieu :

Commentaire sur le lieu: <textarea rows="4" name="Commentaire" cols="52"></textarea>

Un bon détaillant dans le coin :
<textarea cols="23" rows="3" name="Detaillant"></textarea>

Site internet du lieu :

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

</form>

le fichier de récap:
<?php
if(!isset($_SESSION['Pseudo']))
{
header("location:index.php?page=desole");
}
else
{
$Pseudo=$_SESSION['Pseudo'];
}
?>


V&eacute;rification des donn&eacute;es,
----
Bonjour <?php echo $Pseudo=$_SESSION['Pseudo']; ?>, nous allons r&eacute;capituler les informations que vous nous avez transmises :

Information sur le lieu
Pays : <?php echo $_POST['Pays']; ?>.

D&eacute;partement : <?php echo $_POST['Departement']; ?>.

Ville (ou lieu dit) : <?php echo $_POST['Ville']; ?>.

Petit nom du lieu : <?php echo $_POST['Nom']; ?>.

Type de coin : <?php echo $_POST['Typecoin']; ?>.

Domaine : <?php echo $_POST['Domaine']; ?>.

Profondeur : <?php echo $_POST['Profondeur']; ?>.

Nature : <?php echo $_POST['Nature']; ?>.

Relief : <?php echo $_POST['Relief']; ?>.

Esp&egrave;ces pr&eacute;sentent : <?php echo $_POST['Especes']; ?>.

Conseil :
Technique pr&eacute;conis&eacute;e : <?php echo $_POST['Technique']; ?>.

Amour pr&eacute;conis&eacute;e : <?php echo $_POST['Amour']; ?>.

Amour pr&eacute;cision :<?php echo $_POST['Amoursuite']; ?>.

Exemple :<?php echo $_POST['Exemple']; ?>.

Diverses informations :
Commentaire : <?php echo $_POST['Commentaire']; ?>.

D&eacute;taillant : <?php echo $_POST['Detaillant']; ?>.

Site internet : <?php echo $_POST['Site']; ?>.

<?php
// On commence par repérer les champs
if(isset($_SESSION['Pseudo'])) $Pseudo=$_SESSION['Pseudo'];
else $Pseudo="";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

echo "<form name='form' method='post' action='index.php?page=enregfiche'>";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "";
echo "<center></center>";
echo ""
?>

et le ficheir pour enregistrer:
V&eacute;rification des donn&eacute;es,
----
<center>
<?php
// On commence par récupérer les champs
if(isset($_SESSION['$Pseudo'])) $Pseudo=$_SESSION['$Pseudo'];

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//on récupère la date
$date = date("y-m-d");

// On vérifie si les champs sont vides
if(empty($Pseudo) OR empty($Pays) OR empty($Departement) OR empty($Ville) OR empty($Typecoin) OR empty($Domaine) OR empty($Profondeur) OR empty($Nature) OR empty($Relief) OR empty($Especes) OR empty($Technique) OR empty($Amour) OR empty($Exemple))
{
echo 'Attention, seul les champs Petit nom du lieu, Amour suite, Commentaire, Détaillant et Site peuvent rester vide !';
}

// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

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

// on écrit la requête sql
$sql = "INSERT INTO coin(Pseudo,Pays,Departement,Ville,Nom,Typecoin,Domaine,Profondeur,Nature,Relief,Especes,Technique,Amour,Amoursuite,Exemple,Commentaire,Detaillant,Site,date) VALUES('$Pseudo','$Pays','$Departement','$Ville','$Nom','$Typecoin','$Domaine','$Profondeur','$Nature','$Relief','$Especes','$Technique','$Amour','$Amoursuite','$Exemple','$Commentaire','$Detaillant','$Site','$date')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

mysql_close(); // on ferme la connexion
}
?>
</center>

je ne vois pas trop d'ou peut venir cette erreur, peut etre le passage du Pseudo de session.

Merci et @+.

7 réponses

Messages postés
112
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
11 octobre 2006

hello,

bon , la je sais bien que t'as marqué debutant, mais la avant de corriger toute erreur,
il faut corriger tout ton code :

if(isset($_SESSION['Pseudo'])) $Pseudo=$_SESSION['Pseudo'];
else $Pseudo="";

a remplacer par :

$Pseudo = isset($_SESSION['Pseudo']) ? $_SESSION['Pseudo'] : "";

*tous les trucs du type :

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

a remplacer par :

foreach ($HTTP_POST_VARS as $clé => $valeur)
{
tes instructions... echo " ... ";
}

*toutes ces lignes ...

echo "";

ca sert a rien...

au debut, faut que tu fasse un $vars = array("pseudo", "nom", "ville", .... );

for($i=0; $i<$nb_vars; $i++) {
echo "$vars[$i]
<select name="Typecoin">
<option selected>Sélectionnez le type de coin</option>
<option value="1">1</option>
</select>

";
}

fin bon voila 2 , 3 pistes, mais faut tout changer de la ligne 1 a la x = fin doc
tu peux l'ecrire avec 10 fois moins de lignes...

bon, voila bonne pogression à toi.
je cherche pas à te critiquer mais à aider les gens

stepiboum
Messages postés
85
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
19 mars 2007

ok, merci, toujours bon d'apprendre des choses nouvelles.
Je vais essayer de corriger, et je poserais des questions après.
Merci.
@+.
Messages postés
85
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
19 mars 2007

dans l'expression suivante :

foreach ($HTTP_POST_VARS as $clé => $valeur)

a quoi correspond $clé ?

Merci
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Bonsoir,

deja c'est $_POST et non $HTTP_POST_VARS.

si :

$var = Array (

[0] => 'blabla',

['ca'] => 'ceci',

);



foreach( $var as $key=>$val ) {

echo $var, ' = ', $val, '
';

}




retournera :

0 = blalba

ca = ceci


$key, c'et la key

$val, c'est la valeur



Sinon http://fr.php.net/manual/fr/control-structures.foreach.php
<hr size="2" width="100%">
Si ma reponse te convient, merci de l'accepter !
Messages postés
85
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
19 mars 2007

désolé mais je comprend pas trop.

Dc j'ai fais ainsi dans le fichier de recapitulation :
<?php
if(!isset($_SESSION['Pseudo']))
{
header("location:index.php?page= desole");
}
else
{
$Pseudo=$_SESSION['Pseudo'];
}
?>
<table border="0" style="border-collapse: collapse; border: 3px double #0066FF" bordercolor="#111111" width="100%">
<tr>
<td width="100%" height="20" class="fondtitre">
V&eacute;rification des donn&eacute;es </td></tr>
<tr><td class ="fondmilieu">
<?php
$vars = array("Pseudo", "Pays", "Departement", "ville", "Nom", "Typecoin", ........);
$Pseudo = isset($_SESSION['Pseudo']) ? $_SESSION['Pseudo'] : "";
echo "Bonjour ".$Pseudo.", nous allons r&eacute;capituler les informations que vous nous avez transmises :

";
echo " Information sur le lieu : ";
foreach ($_POST as $clé => $Pays)
{
echo "Pays : ".$Pays.".

";
}
.......

Par contre je ne vois pas comment modifier le formulaire
Je dois mettre pour les listes déroulantes :
$vars = array("Pseudo", "Pays", "Departement", "ville", "Nom", "Typecoin", "Domaine","Profondeur", "Nature", "Relief", "Especes", "Techinque", "Amorcage", "Amorcesuite", "Esche","Commentaire", "Detaillant", "Site");
for($i=0; $i<$nb_vars; $i++)
{
echo "$vars[$i]
Département * :
<select name="Departement">
<option selected>S&eacute;lectionnez votre département</option>
<option value="01 - Ain">01 - Ain</option>
</select>

";
}
et pour les champs texte :
echo "Ville (ou lieu dit) * :

";
ou
for($i=0; $i<$nb_vars; $i++)
{
echo "Ville (ou lieu dit) * :

";
}
ensuite toutes les lignes:
echo "";
j'ai supprimé.
Mais comment faire pour passer les information à la page de validation, donc la page apres la recapitulation ?
Vraiment désolé mais je vois vraiment pas.

Merci.
@+.
Messages postés
112
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
11 octobre 2006

je me demande si t'as ecrit 16 ko et apres tu t'es dis, à on va essyer si ca marche? !!!

je tente de t'aider une derniere fois :

conserve ton formulaire c trop compliqué oublie array
<form method="post" action="index.php?page=recapfiche">


</form>


le fichier de récap:
<?php
if(!isset($_SESSION['Pseudo']))
{
header("location:index.php?page=desole");
}
else
{
$Pseudo=$_SESSION['Pseudo'];
}
?>


V&eacute;rification des donn&eacute;es,
----
Bonjour <?php echo $Pseudo=$_SESSION['Pseudo']; ?>, nous allons r&eacute;capituler les informations que vous nous avez transmises :

Information sur le lieu
Pays : <?php echo $_POST['Pays']; ?>.

<?php
foreach ($HTTP_POST_VARS as $clé => $valeur) {
echo "$clé : $valeur

";
}
?>

<?php
// On commence par repérer les champs
$Pseudo = isset($_SESSION['Pseudo']) ? $_SESSION['Pseudo'] : "";
// et la pareille

foreach ($HTTP_POST_VARS as $clé => $valeur) {
$clé = isset($valeur) ? $valeur : "";
} // ca doit marcher mais je suis pas sure

//et la regarde deja si ca marche !!!!
?>


et le ficheir pour enregistrer: pourquoi tu fais pas ton fichier enregistrer dans ton fichier precedent
c la meme chose, tu fais deux fois, fait pas de hidden!!!
V&eacute;rification des donn&eacute;es,
----
<center>
<?php
// On commence par récupérer les champs

//on récupère la date
$date = date("y-m-d");

// On vérifie si les champs sont vides
if(empty($Pseudo) OR empty($Pays) OR empty($Departement) OR empty($Ville) OR empty($Typecoin) OR empty($Domaine) OR empty($Profondeur) OR empty($Nature) OR empty($Relief) OR empty($Especes) OR empty($Technique) OR empty($Amour) OR empty($Exemple))
{
echo 'Attention, seul les champs Petit nom du lieu, Amour suite, Commentaire, Détaillant et Site peuvent rester vide !';
}

// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base

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

// on écrit la requête sql
$sql = "INSERT INTO coin('$Pseudo','$Pays','$Departement','$Ville','$Nom','$Typecoin','$Domaine','$Profondeur','$Nature','$Relief','$Especes','$Technique','$Amour','$Amoursuite','$Exemple','$Commentaire','$Detaillant','$Site','$date')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';

mysql_close(); // on ferme la connexion
}
?>
</center>

la pareil quand tu ecrit dans ta table, c'est pas la peine de lui rapeler ses champs
t'ecrit directement les values...


<?php // tu ecrit ca , c horrible, et totallement incorrecte
echo "Ville (ou lieu dit) * :

";
//si ton echo commence par " , tu doit mettre des \ devant les " et non ' de tes balises html !!!
//et inversement ' \ ' et non "
//mais la ca s'utilise pas pour le html, car les balise html sont toujours avec " .
//plus pour dujavascript ou autre
?>

voila conseil : commence par des programes simples ...
essaye toujours de faire des boucles partout ou t'as plus de 3 syntaxes pareil

bonne journée à toi...

stepiboum
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Salut,
Pour des questionsq de rapidité et/ou de normes il faut faire :


<LI>style="height: ??px; width: ??%; text-align: center; border: 0px; ..."</LI>
<LI>priviligié les ' a la place des ". Sauf dans les balises X/Html</LI>
<LI>Les inputs : </LI>
<LI> à la place de </LI>
<LI> à la place de </LI>
<LI>Ls balises :
<hr /></LI>
<LI>$_POST à la place de $HTTP_POST_VARS</LI>
<LI>$val '', a la place de $val "";</LI>
<LI>echo ' ', ' ', ' '; à la place de echo ' ' . ' ' . ' ';</LI>
... Il y a encore des choses à faire ...



<HR width="100%" SIZE=2>


Si ma reponse te convient, merci de l'accepter !