Formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formulaire

par guilt92 » 01 juil. 2008, 14:52

Erreur SQL !INSERT INTO critere(idwebcam,nom_critere) VALUES('','0','Mer')
Tu essayes de mettre 3 valeurs dans seulement 2 champs...
Pour l'id si elle est auto incrémenté laisse '' et met une valeur pour le nom_critère, mais 3 valeurs dans deux variables ca peut pas marcher ;)

par Invité » 01 juil. 2008, 14:50

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

par katagoto » 01 juil. 2008, 12:21

Je viens de te donner le principe :) à toi d'extrapoller :lol:

par Invité » 01 juil. 2008, 11:37

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

par katagoto » 01 juil. 2008, 11:32

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";

par Invité » 01 juil. 2008, 11:20

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

par Invité » 01 juil. 2008, 11:09

Merci beaucoup,
ça marche

par sadeq » 01 juil. 2008, 11:02

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>

par Invité » 01 juil. 2008, 10:53

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>

par Invité » 01 juil. 2008, 10:27

J'ai saisie ça :
if(isset($_POST['continent'])) $continent=$_POST['continent'];
else $continent="" input name="continent" type="hidden" value="$continent";

par Invité » 01 juil. 2008, 10:24

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

par sadeq » 01 juil. 2008, 09:35

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.

par Invité » 01 juil. 2008, 09:16

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&eacute;rique">Am&eacute;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&eacute;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

par mcorgnet » 01 juil. 2008, 08:21

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.

par katagoto » 30 juin 2008, 16:57

Oui


On pourrait voir ton script ?