Page 1 sur 2
Formulaire
Posté : 30 juin 2008, 16:35
par Romuald63
Bonjour à tous !
Novice en PHP je parviens à réaliser un formulaire pour remplir ma BD.
Jusque là tout va bien.
Maintenant je voudrai remplir mon formulaire, et ouvrir une page qui récapitule les éléments saisis.
Jusque là j'y arrive mais au moment de valider les infos ça coince !!!
C'est vrai que je suis parti d'un exemple où tous les champs sont obligatoires, et là ça me met 3tous les champs sont obligatoires"
Merci de votre aide
Posté : 30 juin 2008, 16:57
par katagoto
Oui
On pourrait voir ton script ?
Posté : 01 juil. 2008, 08:21
par mcorgnet
Pour chaque élément dans ton formulaire, tu dois avoir un "name" associé.
<input type="text" name="user" />
Ce "name" est l'identifiant que PHP récupère. Donc, si tu veux le traiter, quand une personne poste le formulaire, tu as deux solutions :
soit tu utilises la méthode de formulaire GET :
<?php
echo $_GET['user'];
?>
soit tu utilises la méthode de formulaire POST :
<?php
echo $_POST['user'];
?>
Sachant que POST est conseillé dans quasiment tous les cas ou il est applicable.
Posté : 01 juil. 2008, 09:16
par Invité
Voici mon code :
Page se saisie 1
Code : Tout sélectionner
<html>
<form action="recap_ajout_webcam.php" method="POST">
<center>
<p>Choisissez un Continent :
<select name="continent" size="1">
<option value="Europe">Europe</option>
<option value="Amérique">Amérique</option>
</select>
<br>
Choisissez un Sous-continent :
<select name="sous_continent" size="1">
<option value="Europe nord">Europe du Nord</option>
<option value="Europe ouest">Europe de l'Ouest</option>
</select>
<img src="../video_on_line/aide.gif" border="0"> <font size="2">Aide ?</font><br>
Choisissez un Pays :
<select name="pays">
<option value="Afrique du Sud">Afrique du Sud</option>
<option value="Afghanistan">Afghanistan</option>
<option value="Albanie">Albanie</option>
</select>
<br>
Situation de la webcam :
<input type="text" name="ville" size="60" value="" maxlength="70">
ex : Paris<br>
Nom de la webcam :
<input type="text" name="nom_webcam" size="60" value="" maxlength="40">
ex : Les Champs Elysées <br>
Source de l'image :
<input type="text" name="lien_webcam" size="60" value="http://" maxlength="250">
</p>
<p></p>
<p><br>
<input type="submit" value="Envoyer" name="envoyer">
</p>
</center>
</form>
</html>
Page récapitulative :
Code : Tout sélectionner
<form method="POST" action="ajout_webcam.php">
<p>
Continent : <?php echo $_POST['continent']; ?><br>
Sous-continent : <?php echo $_POST['sous_continent']; ?><br>
Pays : <?php echo $_POST['pays']; ?><br>
Ville : <?php echo $_POST['ville']; ?><br>
Titre : <?php echo $_POST['nom_webcam']; ?><br>
URL : <?php echo $_POST['lien_webcam']; ?></p>
<input type="submit" value="Valider" name="envoyer">
</form>
Et enfin la page qui remplie ma BD :
// On commence par récupérer les champs
if(isset($_POST['continent'])) $continent=$_POST['continent'];
else $continent="";
if(isset($_POST['pays'])) $pays=$_POST['pays'];
else $pays="";
if(isset($_POST['sous_continent'])) $sous_continent=$_POST['sous_continent'];
else $sous_continent="";
if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";
if(isset($_POST['nom_webcam'])) $nom_webcam=$_POST['nom_webcam'];
else $nom_webcam="";
if(isset($_POST['lien_webcam'])) $lien_webcam=$_POST['lien_webcam'];
else $lien_webcam="";
// Aucun champ n'est vide, on peut enregistrer dans la table
$db = mysql_connect('localhost', 'romuald', 'e4fxrccv') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('vol_webcam',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO webcam(idwebcam,continent,pays,sous_continent,ville,nom_webcam,lien_webcam,stat_visite,note_webcam) VALUES('','$continent','$pays','$sous_continent','$ville','$nom_webcam','$lien_webcam','','')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// on affiche le résultat pour le visiteur
echo 'Votre webcam a été enregistrée';
mysql_close(); // on ferme la connexion
?>
Voilà j'espère que vous pourrez m'aider
Merci d'avance
Posté : 01 juil. 2008, 09:35
par sadeq
Bonjour,
L'erreur est logique, car le premier formulaire envoi bien les données au formulaire de récap, mais, malheureusement, ce dernier ne renvoi rien du tout au programme final qui doit ajouter dans la base.
Pour la simple raison que le formulaire de récap se contente d'afficher les POST reçus et ne contient aucun champs de formulaire pourtant nécessaires pour que le programme PHP final recoive des données à ajouter dans la base.
Je te conseille d'ajouter dans le formulaire récap des champs cachés (<input type="hidden" .... />) pour chaque donnée à renvoyer au programme d'ajout.
Posté : 01 juil. 2008, 10:24
par Invité
Bonjour,
Merci pour ta réponse, mais comme je l'ai précisé avant, je suis novice.
Mon <imput hidden...> j'ai pas bien compris où le mettre et surtout quoi mettre à l'intérieur !
Est-ce un truc dans le genre
<input name="continent" type="hidden" value="$continent">
Merci
Posté : 01 juil. 2008, 10:27
par Invité
J'ai saisie ça :
if(isset($_POST['continent'])) $continent=$_POST['continent'];
else $continent="" input name="continent" type="hidden" value="$continent";
Posté : 01 juil. 2008, 10:53
par Invité
Dans mon formulaire de recap j'ai ecrit ça :
Est-ce-que c'est bon
<form method="POST" action="ajout_webcam.php">
<p>
Continent : <?php echo $_POST['continent']; ?><input type="hidden" name="continent" value="$continent" /><br>
Sous-continent : <?php echo $_POST['sous_continent']; ?><input type="hidden" name="sous_continent" value="$sous_continent" /><br>
Pays : <?php echo $_POST['pays']; ?><input type="hidden" name="pays" value="$pays" /><br>
Ville : <?php echo $_POST['ville']; ?><input type="hidden" name="ville" value="$ville" /><br>
Titre : <?php echo $_POST['nom_webcam']; ?><input type="hidden" name="nom_webcam" value="$nom_webcam" /><br>
URL :<br><img src="<?php echo $_POST['lien_webcam']; ?>" width="320" height="240"><input type="hidden" name="lin_webcam" value="$lien_webcam" /></p>
<input type="submit" value="Validez votre saisie" name="envoyer">
</form>
Posté : 01 juil. 2008, 11:02
par sadeq
C'est très bien, tu te débrouille pas mal. Je te corrige simplement quelque trucs:
Correction:
<?php
//Données recues
$continent = $_POST['continent'];
$sous_continent = $_POST['sous_continent'];
$pays= $_POST['pays'];
$ville= $_POST['ville'];
$nom_webcam= $_POST['nom_webcam'];
$lien_webcam= $_POST['lien_webcam'];
?>
<form method="POST" action="ajout_webcam.php">
<p>
Continent : <?php echo $continent; ?><input type="hidden" name="continent" value="<?php echo $continent; ?>" /><br>
Sous-continent : <?php echo $sous_continent; ?><input type="hidden" name="sous_continent" value="<?php echo $sous_continent; ?>" /><br>
Pays : <?php echo $pays; ?><input type="hidden" name="pays" value="<?php echo $pays; ?>" /><br>
Ville : <?php echo $ville; ?><input type="hidden" name="ville" value="<?php echo $ville; ?>" /><br>
Titre : <?php echo $nom_webcam; ?><input type="hidden" name="nom_webcam" value="<?php echo $nom_webcam; ?>" /><br>
URL :<br><img src="<?php echo $lien_webcam; ?>" width="320" height="240"><input type="hidden" name="lien_webcam" value="<?php echo $lien_webcam; ?>" /></p>
<input type="submit" value="Validez votre saisie" name="envoyer">
</form>
Posté : 01 juil. 2008, 11:09
par Invité
Merci beaucoup,
ça marche
Posté : 01 juil. 2008, 11:20
par Invité
Nouvelle demande :
Comment faire pour que l'internaute ne saisisse pas n'importe quoi ?
Je m'explique : sur mon site je veux éviter que quelqu'un rajoute une webcam sur le mauvais continent par exemple, comme je le vois sur certains sites (ex Toulon en Algérie !!!)
Est-ce que l'on peut mettre de lAjax, dans du PHP ou de l'HTML
Et surtout est-ce difficile à mettre en place
Merci
Posté : 01 juil. 2008, 11:32
par katagoto
C'est pas complex, c'est juste un peu long, exemple :
$tab=array();
$tab['France']=array("Lyon", "Paris", "Bordeau", "Marseiile"); // etc.
$tab['Belgique']=array("Bruxelle", "Liège"); // etc.
//etc.
if(array_key_exists($_POST['pays'], $tab) AND array_key_exists($_POST['ville'], $tab[$_POST['pays']))
echo "la ville correspon au pays";
else echo "non, le ville ne correspond pas au pays";
Posté : 01 juil. 2008, 11:37
par Invité
Dans mon cas précis l'internaute sélectionne un continent (ex : Europe), et je voudrais que dans la sélection du sous-continent il ne puisse choisi que les sous-continent européens (ex : Europe du Nord, Europe du Sud...).
Actuellement j'ai tous les sous continents qui apparaissent, d'où d'éventuelles erreurs ou anêries sur certains sites !
Merci
Posté : 01 juil. 2008, 12:21
par katagoto
Je viens de te donner le principe

à toi d'extrapoller

Posté : 01 juil. 2008, 14:50
par Invité
Bonjour,
je corse le problème parceque je veux modifier deux tables dans ma BD
Voilà le code que j'ai mis :
<?php
// On commence par récupérer les champs
if(isset($_POST['continent'])) $continent=$_POST['continent'];
else $continent="";
if(isset($_POST['pays'])) $pays=$_POST['pays'];
else $pays="";
if(isset($_POST['sous_continent'])) $sous_continent=$_POST['sous_continent'];
else $sous_continent="";
if(isset($_POST['ville'])) $ville=$_POST['ville'];
else $ville="";
if(isset($_POST['nom_webcam'])) $nom_webcam=$_POST['nom_webcam'];
else $nom_webcam="";
if(isset($_POST['lien_webcam'])) $lien_webcam=$_POST['lien_webcam'];
else $lien_webcam="";
if(isset($_POST['nom_critere'])) $nom_critere=$_POST['nom_critere'];
else $nom_critere="";
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('vol',$db) or die('Erreur de selection '.mysql_error());
$sql = "INSERT INTO webcam(idwebcam,continent,pays,sous_continent,ville,nom_webcam,lien_webcam,stat_visite,note_webcam) VALUES('','$continent','$pays','$sous_continent','$ville','$nom_webcam','$lien_webcam','','')";
$idwebcam = mysql_insert_id();
$sql = "INSERT INTO critere(idwebcam,nom_critere) VALUES('','$idwebcam','$nom_critere')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_close($db); // on ferme la connexion
?>
Et voilà le résultat :
Erreur SQL !INSERT INTO critere(idwebcam,nom_critere) VALUES('','0','Mer')
Column count doesn't match value count at row 1
Merci