probleme avec formulaire de petites annonces

Eléphanteau du PHP | 29 Messages

16 avr. 2007, 20:23

Bonjour

je tiens à vous précisez que je suis vraiment un débutant en php, mais j'aime bien ce langage et pour mon 1er script je voulais faire un script de petites annonces de rencontre ;) et je vous demande de bien vouloir me guider


voici déjà mon formulaire html, mais il fonctionne pas quand je cliques sur envoyer il ne se passe rien (mais je crois savoir pourquoi! je pense qu'il y a un problème dans le code de l'uplead d'image), je vous prie de me dire comment le corriger

Code : Tout sélectionner

<form method="post" action="profile.php"> <p> Votre sexe : <label> <input type="radio" name="sexe" value="homme" />Homme</label> <label> <input type="radio" name="sexe" value="femme" />Femme</label> <br /> <br /> <label> Votre pseudo : <input type="text" name="pseudo" value="" /> </label> <br /> <br /> <label> Mot de passe : <input type="password" name="pass" /> </label> <br /> <br /> <label> Votre e-mail : <input type="text" name="email" value="" /></label> <br /> <br /> <label> <form enctype="multipart/form-data" action="profile.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="200000" /> Votre photo <input type="file" name="photo" /> </form> <br /> <label> Votre âge : <select name="age"> <option value="18">18 ans</option> <option value="19">19 ans</option> <option value="20">20 ans</option> <option value="21">21 ans</option> <option value="22">22 ans</option> <option value="23">23 ans</option> <option value="24">24 ans</option> <option value="25">25 ans</option> <option value="26">26 ans</option> <option value="27">27 ans</option> <option value="28">28 ans</option> <option value="29">29 ans</option> <option value="30">30 ans</option> <option value="31">31 ans</option> <option value="32">32 ans</option> <option value="33">33 ans</option> <option value="34">34 ans</option> <option value="35">35 ans</option> <option value="36">36 ans</option> <option value="37">37 ans</option> <option value="38">38 ans</option> <option value="39">39 ans</option> <option value="40">40 ans</option> <option value="41">41 ans</option> <option value="42">42 ans</option> <option value="43">43 ans</option> <option value="44">44 ans</option> <option value="45">45 ans</option> <option value="46">46 ans</option> <option value="47">47 ans</option> <option value="48">48 ans</option> <option value="49">49 ans</option> <option value="50">50 ans</option> <option value="51">19 ans</option> <option value="52">20 ans</option> <option value="53">21 ans</option> <option value="54">22 ans</option> <option value="55">23 ans</option> <option value="56">24 ans</option> <option value="57">25 ans</option> <option value="58">26 ans</option> <option value="59">27 ans</option> <option value="60">28 ans</option> <option value="61">29 ans</option> <option value="62">30 ans</option> <option value="63">31 ans</option> <option value="64">32 ans</option> <option value="65">33 ans</option> <option value="66">34 ans</option> <option value="67">35 ans</option> <option value="68">36 ans</option> <option value="69">37 ans</option> <option value="70">38 ans</option> <option value="71">39 ans</option> <option value="72">40 ans</option> <option value="73">41 ans</option> <option value="74">42 ans</option> <option value="75">43 ans</option> <option value="76">44 ans</option> <option value="77">45 ans</option> <option value="78">46 ans</option> <option value="79">47 ans</option> <option value="80">48 ans</option> <option value="plus-de-80">plus de 80 ans</option> </select> </label> <br /> <br /> <label> Votre Etat civil : <select name="etatcivil"> <option value="Célibataire">Célibataire</option> <option value="Divorcé">Divorcé</option> <option value="Mariée">Marié</option> <option value="Separé">Separé</option> <option value="Veuf">Veuf</option> </select> </label> <br /> <br /> <label> Vous fumez : <select name="fumeur"> <option value="Je ne fume pas">Non</option> <option value="je fume rarement">Rarement</option> <option value="Souvent">je fume souvent</option> <option value="je fume très souvent">Très souvent</option> </select> </label> <br /> <br /> <label> Vous buvez : <select name="buveur"> <option value="je ne bois pas">Non</option> <option value="je bois rarement">Rarement</option> <option value="je bois souvent">Souvent</option> <option value="je bois très souvent">Très souvent</option> </select> </label> <br /> <br /> <label> Education : <select name="education"> <option value="College">Collège</option> <option value="Lycee">Lycée</option> <option value="Bac">Bac</option> <option value="Bac+2">Bac+2</option> <option value="Licence">licence</option> <option value="bac+4">Bac+4</option> <option value="Bac+5">Bac+5</option> <option value="Doctorat">Doctorat</option> </select> </label> <br /> <br /> <label> Dans quel pays habitez-vous ? <select name="pays"> <optgroup label="Afrique"> <option value="Algerie">Algérie</option> <option value="Maroc">Maroc</option> <option value="Tunisie">Tunisie</option> <option value="Autre pays d'afrique">autre pays d'afrique</option> </optgroup> <optgroup label="Europe"> <option value="France">France</option> <option value="Espagne">Espagne</option> <option value="Italie">Italie</option> <option value="Belgique">Belgique</option> <option value="Autre pays d'europe">autre pays d'europe</option> </optgroup> <optgroup label="Amérique"> <option value="Canada">Canada</option> <option value="Etats-unis">Etats-Unis</option> <option value="Amerique du sud">amérique du sud</option> </optgroup> <optgroup label="Asie"> <option value="Chine">Chine</option> <option value="Japon">Japon</option> <option value="Russie">Russie</option> <option value="Autre pays d'asie">autre pays d'asie</option> </optgroup> </select> </label> <br /> <br /> Avez-vous des enfants ? : <label> <input type="radio" name="avoirenfant" value="oui j'ai des enfants" />Oui</label> <label> <input type="radio" name="avoirenfant" value="non je n'ai pas d'enfants" />Non</label> <br /> <br /> Voulez-vous des enfants ? : <label> <input type="radio" name="vouloirenfant" value="oui je veux des enfants" />Oui</label> <label> <input type="radio" name="vouloirenfant" value="non je ne veux pas d'enfants" />Non</label> <label> <input type="radio" name="vouloirenfant" value="Peut être" />peut être</label> <br /> <br /> <label> Votre taille : <select name="taille"> <option value="moinde 140 cm">moin de 140 cm</option> <option value="141 à 150 cm">141-150 cm</option> <option value="151 à 155 cm">151-155 cm</option> <option value="156 à 160 cm">156-160 cm</option> <option value="161 à 165 cm">161-165 cm</option> <option value="166 à 170 cm">166-170 cm</option> <option value="171 à 175 cm">171-175 cm</option> <option value="176 à 180 cm">176-180 cm</option> <option value="181 à 185 ">181-185 cm</option> <option value="186 à 190 cm">186-190 cm</option> <option value="plus de 190 cm">plus de 190 cm</option> </select> </label> <br /> <br /> <label> Une note pour votre physique : <select name="physique"> <option value="0 sur 10">0 sur 10</option> <option value="1 sur 10">1 sur 10</option> <option value="2 sur 10">2 sur 10</option> <option value="3 sur 10">3 sur 10</option> <option value="4 sur 10">4 sur 10</option> <option value="5 sur 10">5 sur 10</option> <option value="6 sur 10">6 sur 10</option> <option value="7 sur 10">7 sur 10</option> <option value="8 sur 10">8 sur 10</option> <option value="9 sur 10">9 sur 10</option> <option value="10 sur 10">10 sur 10</option> <option value="pas de note">pas de note</option> </select> </label> <br /> <br /> <label> Votre apparence : <select name="apparence"> <option value="Africaine">Africaine</option> <option value="Afroamericaine">Afro Américaine</option> <option value="Asiatique">Asiatique</option> <option value="Caucasienne">Caucasienne</option> <option value="Europeenne">européenne</option> <option value="Maghrebine">Maghrebine</option> <option value="Indienne">Indienne</option> <option value="Autre">Autre</option> </select> </label> <br /> <br /> <label> Votre religion : <select name="religion"> <option value="Bouddiste">Bouddiste</option> <option value="Catholique">Catholique</option> <option value="Chretienne">Chretienne</option> <option value="Hindouiste">Hindouiste</option> <option value="Juive">Juive</option> <option value="Musulmane">Musulmane</option> <option value="Orthodoxe">Orthodoxe</option> <option value="Protestante">Protestante</option> <option value="Shintoïste">Shintoïste</option> <option value="Spiritualiste">Spiritualiste</option> <option value="Taoïsme">Taoïsme</option> <option value="Autre">Autre</option> </select> </label> <br /> <br /> <label> Votre annonce : <br /> <textarea name="annonce" rows="10" cols="50"></textarea> </label> <br /> </p> <p> <input type="submit" /> <input type="reset" /> </p> </form>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

16 avr. 2007, 23:55

Tu ne dois pas imbriquer les formulaires. Il ne faut faire qu'un seul formulaire contenant tous tes champs et avec l'enctype permettant l'upload de fichier
<form method="post" action="profile.php" enctype="multipart/form-data"> 
   <p>Votre sexe : 
...
<!-- <form enctype="multipart/form-data" action="profile.php" method="post"> -->
            <input type="hidden" name="MAX_FILE_SIZE" value="200000" /> 
            Votre photo <input type="file" name="photo" /> 
<!-- </form> -->
...
</form>
Attention à ton select sur les ages, il y a un loupé sur l'affichage des + de 50 ans, les valeurs ne corresponent pas :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 29 Messages

17 avr. 2007, 13:19

Merci beaucoup Ryle :wink:


p.s: je ne marque pas encore resolu, parce que je suis entrain de faire la page profile.php (c'est la que ça va vraiment chauffer :oops: )

je posterai le code dans la semaine, + le table mysql


a+

Eléphanteau du PHP | 29 Messages

17 avr. 2007, 20:20

rebonjour

voila la ma table dont le nom est profile :

Code : Tout sélectionner

-- Structure de la table `profile` -- CREATE TABLE `profile` ( `id` int(50) NOT NULL auto_increment, `sexe` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `pseudo` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `pass` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `email` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `photo` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `age` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `etatcivil` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `fumeur` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `buveur` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `education` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `pays` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `avoirenfant` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `vouloirenfant` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `taille` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `physique` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `apparence` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `religion` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `annonce` text character set latin1 collate latin1_general_ci NOT NULL, `date` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


et voila mon fichier profile.php que j'ai bricolé :oops:


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>profil du membre</title>
</head>

<body>


<?php



$sexe = $_POST['sexe'];
$pseudo = $_POST['pseudo'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$photo = $_POST['photo'];
$age = $_POST['age'];
$etatcivil = $_POST['etatcivil'];
$fumeur = $_POST['fumeur'];
$buveur = $_POST['buveur'];
$education = $_POST['education'];
$pays = $_POST['pays'];
$avoirenfant = $_POST['avoirenfant'];
$vouloirenfant = $_POST['vouloirenfant'];
$taille = $_POST['taille'];
$physique = $_POST['physique'];
$apparence = $_POST['apparence'];
$religion = $_POST['religion'];
$annonce = $_POST['annonce'];
$tailleMax = $_POST['taille_max'];


$nomFichier    = $_FILES['photo']['name'] ;
$tailleFichier = $_FILES['photo']['size'] ;;
$typeFichier   = $_FILES['photo']['type'] ;






print("votre sexe : $sexe <br /> ");

print("votre pseudo : $pseudo <br /> ");

print("votre mot de passe : $pass <br /> ");

print("votre adresse email : $email <br /> ");

print("Voilà les données de votre image: <br>\n nom => <b>".$nomFichier.
	                         "</b><br>\n taille => <b>".$tailleFichier.
	                         "</b><br>\n type de l'image => <b>".$typeFichier."</b><br>\n);




print("Taille maximale de l'image: <b>".$tailleMax."</b> octets</b>\n  <br /> " );

print("votre âge : $age <br /> ");

print("Votre état civil : $etatcivil <br /> ");

print("vous êtes fumeur : $fumeur <br /> ");

print("vous buvez : $buveur <br /> ");

print("votre éducation : $education <br /> ");

print("votre pays : $pays <br /> ");

print("vous voulez avoir des enfants : $avoirenfant <br /> ");

print("vous voulez avoir des enfants : $vouloirenfant <br /> ");

print("votre taille : $taille <br /> ");

print("la note que vous avez donné à votre physique : $physique <br /> ");

print("votre apparence : $apparence <br /> ");

print("votre religion : $religion <br /> ");

print("votre annonce : $annonce <br /> ");



?>




<?php

if (isset($_POST['pseudo']) AND isset($_POST['email'])) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['email'] != NULL) // Si on a quelque chose à enregistrer
    {
        
// D'abord, on se connecte à MySQL

        $cnx = mysql_connect("localhost", "root", "");
        $db  = mysql_select_db("rencontre");

        

       
// Ensuite on enregistre l'annonce


  $sql = "INSERT  INTO profile (id, prenom, sexe, pseudo, pass, email, photo, age, etatcivil, fumeur, buveur, education, pays, avoirenfant, vouloirenfant, taille, physique, apparence, religion, annonce, date)
          VALUES ( '', '$sexe', '$pseudo', '$pass', '$email', '$photo', '$age', '$etatcivil', '$fumeur', '$buveur', '$education', '$pays', '$avoirenfant', '$vouloirenfant', '$taille, '$physique', '$apparence', '$religion', '$annonce', 'NOW()) " ;


//exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;



// On se déconnecte de MySQL
        mysql_close();
    }
}



?>


</body>

</html>






et voici l'erreur que j'ai quand je clique sur le bouton "envoyer" du formulaire :

Code : Tout sélectionner

Notice: Undefined index: photo in c:\documents and settings\oula\mes documents\rencontre\test\profile.php on line 19 Notice: Undefined index: fichier in c:\documents and settings\oula\mes documents\rencontre\test\profile.php on line 39 votre sexe : homme votre pseudo : moimoi votre mot de passe : votre adresse email : [email protected] Voilà les données de votre image: nom => moi.jpg taille => 56283 type de l'image => image/jpeg code de l'erreur => Taille maximale de l'image: 200000 octets votre âge : 27 Votre état civil : Célibataire vous êtes fumeur : Je ne fume pas vous buvez : je bois rarement votre éducation : Licence votre pays : France vous voulez avoir des enfants : non vous voulez avoir des enfants : oui je veux des enfants votre taille : 161 à 165 cm la note que vous avez donné à votre physique : 5 sur 10 votre apparence : Autre votre religion : Autre votre annonce : je cherche à comprendre le php!!!!! Erreur de syntaxe près de '5 sur 10', 'Autre', 'Autre', 'je cherche à comprendre le php!!!!' à la ligne 2

et en plus de toutes ses erreurs il n' y a rien qui s'enregistre dans la base de donnée :?




Je vous prie de corriger mes erreurs, merci d'avance :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 avr. 2007, 01:14

Notice: Undefined index: photo in c:\documents and settings\oula\mes documents\rencontre\test\profile.php on line 19
Ce message d'erreur signifie que tu fais appel à une variable qui n'existe pas (en l'occurence, il te dit qu'il n'y a pas d'index nommé "photo" dans ton tableau). La ligne 19 c'est celle ci : $photo = $_POST['photo']; et effectivement, l'index "photo" est définie dans $_FILE et pas dans $_POST :)
Erreur de syntaxe près de '5 sur 10', 'Autre', 'Autre', 'je cherche à comprendre le php!!!!' à la ligne 2
Tu as également une erreur dans la syntaxe de ta requête SQL.. peut être un problème d'apostrophe mal équilibré ?
Si tu regardes attentivement, tu verras aussi que le nombre de champs inséré n'est pas le même que celui des valeurs, il te manque le prénom.

Enfin concernant ta table, il faudrait adapter les types de champs à leur contenu. L'age devrait juste contenir un nombre, il n'excédera jamais 128 ans, tu peux donc utiliser un tinyint plutôt qu'un varchar de 255 caractères. Idem, retailler les chaines en fonction de leurs contenu, pas besoin de 255 char pour écrire juste "homme" ou "femme", une taille de 5, voire un type enum est peut être plus approprié :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 29 Messages

18 avr. 2007, 19:06

merci pour tes conseils Ryle, donc j'ai fais ce que tu m'as demander de faire cela a corrigé certaines erreurs:

voici ce que j'ai maintenant :
votre sexe : homme
votre pseudo : moi
votre mot de passe : 123456
votre adresse email : [email protected]
Voilà les données de votre image:
nom => moi.jpg
taille => 56283
type de l'image => image/jpeg
code de l'erreur => 0
Taille maximale de l'image: 200000 octets
votre âge : 27
Votre état civil : Célibataire
vous êtes fumeur : Je ne fume pas
vous buvez : je bois rarement
votre éducation : Licence
votre pays : France
vous voulez avoir des enfants : non
vous voulez avoir des enfants : oui je veux des enfants
votre taille : 161 à 165 cm
la note que vous avez donné à votre physique : 5 sur 10
votre apparence : Europeenne
votre religion : Spiritualiste
votre annonce : ...mais tu vas fonctionner oui!!!!!

Erreur de syntaxe près de '5 sur 10', 'Europeenne', 'Spiritualiste', '...mais tu vas foncti' à la ligne 2

toujours l'erreur de syntaxe et je ne sais pas comment corriger cela!! et toujours pas d'enregistrement dans la base de donnée, la table profile est vide :roll: (je travaille en local)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

19 avr. 2007, 09:27

Tu as corrigé le souci du prénom ?

Sinon pour mieux voir le problème, tu peux exécuter ta requête directement sous phpMyAdmin. Là il te dira de suite quel est le souci à corriger.

Eléphanteau du PHP | 29 Messages

19 avr. 2007, 18:49

oui je l'ai corrigé mais ça ne fonctionne pas!

je reposte tout mon script (le formulaire, la table mysql, la page php)


le code de mon formulaire (inscription.html) :

Code : Tout sélectionner

<form enctype="multipart/form-data" action="profile.php" method="post"> <p> Votre sexe : <label> <input type="radio" name="sexe" value="homme" />Homme</label> <label> <input type="radio" name="sexe" value="femme" />Femme</label> <br /> <br /> <label> Votre pseudo : <input type="text" name="pseudo" value="" /> </label> <br /> <br /> <label> Mot de passe : <input type="password" name="pass" /> </label> <br /> <br /> <label> Votre e-mail : <input type="text" name="email" value="" /></label> <br /> <br /> <label> <input type="hidden" name="MAX_FILE_SIZE" value="200000" /> Votre photo <input type="file" name="photo" /> <br /> <label> Votre âge : <select name="age"> <option value="18">18 ans</option> <option value="19">19 ans</option> <option value="20">20 ans</option> <option value="21">21 ans</option> <option value="22">22 ans</option> <option value="23">23 ans</option> <option value="24">24 ans</option> <option value="25">25 ans</option> <option value="26">26 ans</option> <option value="27">27 ans</option> <option value="28">28 ans</option> <option value="29">29 ans</option> <option value="30">30 ans</option> <option value="31">31 ans</option> <option value="32">32 ans</option> <option value="33">33 ans</option> <option value="34">34 ans</option> <option value="35">35 ans</option> <option value="36">36 ans</option> <option value="37">37 ans</option> <option value="38">38 ans</option> <option value="39">39 ans</option> <option value="40">40 ans</option> <option value="41">41 ans</option> <option value="42">42 ans</option> <option value="43">43 ans</option> <option value="44">44 ans</option> <option value="45">45 ans</option> <option value="46">46 ans</option> <option value="47">47 ans</option> <option value="48">48 ans</option> <option value="49">49 ans</option> <option value="50">50 ans</option> <option value="51">51 ans</option> <option value="52">52 ans</option> <option value="53">53 ans</option> <option value="54">54 ans</option> <option value="55">55 ans</option> <option value="56">56 ans</option> <option value="57">57 ans</option> <option value="58">58 ans</option> <option value="59">59 ans</option> <option value="60">60 ans</option> <option value="61">61 ans</option> <option value="62">62 ans</option> <option value="63">63 ans</option> <option value="64">64 ans</option> <option value="65">65 ans</option> <option value="66">66 ans</option> <option value="67">67 ans</option> <option value="68">68 ans</option> <option value="69">69 ans</option> <option value="70">70 ans</option> <option value="71">71 ans</option> <option value="72">72 ans</option> <option value="73">73 ans</option> <option value="74">74 ans</option> <option value="75">75 ans</option> <option value="76">76 ans</option> <option value="77">77 ans</option> <option value="78">78 ans</option> <option value="79">79 ans</option> <option value="80">80 ans</option> <option value="plus de 80 ans ">+80 ans</option> </select> </label> <br /> <br /> <label> Votre Etat civil : <select name="etatcivil"> <option value="Célibataire">Célibataire</option> <option value="Divorcé">Divorcé</option> <option value="Mariée">Marié</option> <option value="Separé">Separé</option> <option value="Veuf">Veuf</option> </select> </label> <br /> <br /> <label> Vous fumez : <select name="fumeur"> <option value="Je ne fume pas">Non</option> <option value="je fume rarement">Rarement</option> <option value="Souvent">je fume souvent</option> <option value="je fume très souvent">Très souvent</option> </select> </label> <br /> <br /> <label> Vous buvez : <select name="buveur"> <option value="je ne bois pas">Non</option> <option value="je bois rarement">Rarement</option> <option value="je bois souvent">Souvent</option> <option value="je bois très souvent">Très souvent</option> </select> </label> <br /> <br /> <label> Education : <select name="education"> <option value="College">Collège</option> <option value="Lycee">Lycée</option> <option value="Bac">Bac</option> <option value="Bac+2">Bac+2</option> <option value="Licence">licence</option> <option value="bac+4">Bac+4</option> <option value="Bac+5">Bac+5</option> <option value="Doctorat">Doctorat</option> </select> </label> <br /> <br /> <label> Dans quel pays habitez-vous ? <select name="pays"> <optgroup label="Afrique"> <option value="Algerie">Algérie</option> <option value="Maroc">Maroc</option> <option value="Tunisie">Tunisie</option> <option value="Autre pays d'afrique">autre pays d'afrique</option> </optgroup> <optgroup label="Europe"> <option value="France">France</option> <option value="Espagne">Espagne</option> <option value="Italie">Italie</option> <option value="Belgique">Belgique</option> <option value="Autre pays d'europe">autre pays d'europe</option> </optgroup> <optgroup label="Amérique"> <option value="Canada">Canada</option> <option value="Etats-unis">Etats-Unis</option> <option value="Amerique du sud">amérique du sud</option> </optgroup> <optgroup label="Asie"> <option value="Chine">Chine</option> <option value="Japon">Japon</option> <option value="Russie">Russie</option> <option value="Autre pays d'asie">autre pays d'asie</option> </optgroup> </select> </label> <br /> <br /> Avez-vous des enfants ? : <label> <input type="radio" name="avoirenfant" value="oui" />Oui</label> <label> <input type="radio" name="avoirenfant" value="non" />Non</label> <br /> <br /> Voulez-vous des enfants ? : <label> <input type="radio" name="vouloirenfant" value="oui je veux des enfants" />Oui</label> <label> <input type="radio" name="vouloirenfant" value="non je ne veux pas d'enfants" />Non</label> <label> <input type="radio" name="vouloirenfant" value="Peut être" />peut être</label> <br /> <br /> <label> Votre taille : <select name="taille"> <option value="moinde 140 cm">moin de 140 cm</option> <option value="141 à 150 cm">141-150 cm</option> <option value="151 à 155 cm">151-155 cm</option> <option value="156 à 160 cm">156-160 cm</option> <option value="161 à 165 cm">161-165 cm</option> <option value="166 à 170 cm">166-170 cm</option> <option value="171 à 175 cm">171-175 cm</option> <option value="176 à 180 cm">176-180 cm</option> <option value="181 à 185 ">181-185 cm</option> <option value="186 à 190 cm">186-190 cm</option> <option value="plus de 190 cm">plus de 190 cm</option> </select> </label> <br /> <br /> <label> Une note pour votre physique : <select name="physique"> <option value="0 sur 10">0 sur 10</option> <option value="1 sur 10">1 sur 10</option> <option value="2 sur 10">2 sur 10</option> <option value="3 sur 10">3 sur 10</option> <option value="4 sur 10">4 sur 10</option> <option value="5 sur 10">5 sur 10</option> <option value="6 sur 10">6 sur 10</option> <option value="7 sur 10">7 sur 10</option> <option value="8 sur 10">8 sur 10</option> <option value="9 sur 10">9 sur 10</option> <option value="10 sur 10">10 sur 10</option> <option value="pas de note">pas de note</option> </select> </label> <br /> <br /> <label> Votre apparence : <select name="apparence"> <option value="Africaine">Africaine</option> <option value="Afroamericaine">Afro Américaine</option> <option value="Asiatique">Asiatique</option> <option value="Caucasienne">Caucasienne</option> <option value="Europeenne">européenne</option> <option value="Maghrebine">Maghrebine</option> <option value="Indienne">Indienne</option> <option value="Autre">Autre</option> </select> </label> <br /> <br /> <label> Votre religion : <select name="religion"> <option value="Bouddiste">Bouddiste</option> <option value="Catholique">Catholique</option> <option value="Chretienne">Chretienne</option> <option value="Hindouiste">Hindouiste</option> <option value="Juive">Juive</option> <option value="Musulmane">Musulmane</option> <option value="Orthodoxe">Orthodoxe</option> <option value="Protestante">Protestante</option> <option value="Shintoïste">Shintoïste</option> <option value="Spiritualiste">Spiritualiste</option> <option value="Taoïsme">Taoïsme</option> <option value="Autre">Autre</option> </select> </label> <br /> <br /> <label> Votre annonce : <br /> <textarea name="annonce" rows="10" cols="50"></textarea> </label> <br /> </p> <p> <input type="submit" /> <input type="reset" /> </p> </form>


le code de ma table profile :

Code : Tout sélectionner

-- phpMyAdmin SQL Dump -- version 2.6.1 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Jeudi 19 Avril 2007 à 18:46 -- Version du serveur: 4.1.9 -- Version de PHP: 4.3.10 -- -- Base de données: `rencontre` -- -- -------------------------------------------------------- -- -- Structure de la table `profile` -- CREATE TABLE `profile` ( `id` int(50) NOT NULL auto_increment, `sexe` tinyint(10) NOT NULL default '0', `pseudo` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default '', `pass` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default '', `email` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default '', `photo` varchar(255) character set latin1 collate latin1_general_ci NOT NULL default '', `age` tinyint(128) NOT NULL default '0', `etatcivil` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default '', `fumeur` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default '', `buveur` varchar(30) character set latin1 collate latin1_general_ci NOT NULL default '', `education` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `pays` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `avoirenfant` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `vouloirenfant` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `taille` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `physique` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `apparence` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `religion` varchar(50) character set latin1 collate latin1_general_ci NOT NULL default '', `annonce` text character set latin1 collate latin1_general_ci NOT NULL, `date` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- -- Contenu de la table `profile` --


et voici enfin ma page php (profile.php) :

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>profil du membre</title>
</head>

<body>


<?php



$sexe = $_POST['sexe'];
$pseudo = $_POST['pseudo'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$photo = $_FILES['photo'];
$age = $_POST['age'];
$etatcivil = $_POST['etatcivil'];
$fumeur = $_POST['fumeur'];
$buveur = $_POST['buveur'];
$education = $_POST['education'];
$pays = $_POST['pays'];
$avoirenfant = $_POST['avoirenfant'];
$vouloirenfant = $_POST['vouloirenfant'];
$taille = $_POST['taille'];
$physique = $_POST['physique'];
$apparence = $_POST['apparence'];
$religion = $_POST['religion'];
$annonce = $_POST['annonce'];
$MAX_FILE_SIZE = $_POST['MAX_FILE_SIZE'];


$nomFichier = $_FILES['photo']['name'] ;
$tailleFichier = $_FILES['photo']['size'] ;
$typeFichier = $_FILES['photo']['type'] ;
$error = $_FILES['photo']['error'] ;






print("votre sexe : $sexe <br /> ");

print("votre pseudo : $pseudo <br /> ");

print("votre mot de passe : $pass <br /> ");

print("votre adresse email : $email <br /> ");

print( "Voilà les données de votre image: <br>\n nom => <b>".$nomFichier.
	  "</b><br>\n taille => <b>".$tailleFichier.
	  "</b> <br>\n type de l'image => <b>".$typeFichier.
          "</b><br>\n code de l'erreur => <b>".$error."</b><br>") ;



print("Taille maximale de l'image: <b>".$MAX_FILE_SIZE."</b> octets</b>\n  <br /> " );

print("votre âge : $age <br /> ");

print("Votre état civil : $etatcivil <br /> ");

print("vous êtes fumeur : $fumeur <br /> ");

print("vous buvez : $buveur <br /> ");

print("votre éducation : $education <br /> ");

print("votre pays : $pays <br /> ");

print("vous voulez avoir des enfants : $avoirenfant <br /> ");

print("vous voulez avoir des enfants : $vouloirenfant <br /> ");

print("votre taille : $taille <br /> ");

print("la note que vous avez donné à votre physique : $physique <br /> ");

print("votre apparence : $apparence <br /> ");

print("votre religion : $religion <br /> ");

print("votre annonce : $annonce <br /> ");



?>




<?php

if (isset($_POST['pseudo']) AND isset($_POST['email'])) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['email'] != NULL) // Si on a quelque chose à enregistrer
    {
        
// D'abord, on se connecte à MySQL

        $cnx = mysql_connect("localhost", "root", "");
        $db  = mysql_select_db("rencontre");

        

       
// Ensuite on enregistre l'annonce


  $sql = "INSERT  INTO profile (id, pseudo, sexe, pass, email, photo, age, etatcivil, fumeur, buveur, education, pays, avoirenfant, vouloirenfant, taille, physique, apparence, religion, annonce, date)
          VALUES ( '', '$pseudo', '$sexe', '$pass', '$email', '$photo', '$age', '$etatcivil', '$fumeur', '$buveur', '$education', '$pays', '$avoirenfant', '$vouloirenfant', '$taille, '$physique', '$apparence', '$religion', '$annonce', 'NOW()) " ;


//exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;



// On se déconnecte de MySQL
        mysql_close();
    }
}



?>


</body>

</html>



franchement je ne sais pas pourquoi ça fonctionne pas!!!! :roll:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

19 avr. 2007, 21:55

J'imagine que tu n'as pas affiché ta requête comme je te l'ai dit ? Ton erreur est flagrante.
$sql = "INSERT  INTO profile (id, pseudo, sexe, pass, email, photo, age, etatcivil, fumeur, buveur, education, pays, avoirenfant, vouloirenfant, taille, physique, apparence, religion, annonce, date) 
          VALUES ( '', '$pseudo', '$sexe', '$pass', '$email', '$photo', '$age', '$etatcivil', '$fumeur', '$buveur', '$education', '$pays', '$avoirenfant', '$vouloirenfant', '$taille, '$physique', '$apparence', '$religion', '$annonce', 'NOW()) " ;
Regardes attentivement ta requête et tu verras de suite. Tu as 2 erreurs.

Eléphanteau du PHP | 29 Messages

19 avr. 2007, 22:38

j'ai remarqué une erreur, les champs ne se suivent pas! après "id" il ya "sexe" et non pas "pseudo" sinon pour le reste je ne sais pas du tout! je suis un débutant je ne sais pas où se trouve la 2ème erreur! à mon avis c'est dans "NOW()" et je ne sais pas comment la corriger:?



Code : Tout sélectionner

$sql = "INSERT INTO profile (id, sexe, pseudo, pass, email, photo, age, etatcivil, fumeur, buveur, education, pays, avoirenfant, vouloirenfant, taille, physique, apparence, religion, annonce, date) VALUES ( '', '$sexe', '$pseudo', '$pass', '$email', '$photo', '$age', '$etatcivil', '$fumeur', '$buveur', '$education', '$pays', '$avoirenfant', '$vouloirenfant', '$taille, '$physique', '$apparence', '$religion', '$annonce', 'NOW()) " ;

Avatar du membre
ViPHP
ViPHP | 3008 Messages

19 avr. 2007, 23:03

L'erreur qui t'es sortie est une erreur de quote.
...,'$taille, '$physique',...
...,'NOW()) " ;
Quelque chose ne te semble pas louche dans ces deux morceaux au niveau des quotes ?

Eléphanteau du PHP | 29 Messages

19 avr. 2007, 23:40

L'erreur qui t'es sortie est une erreur de quote.
...,'$taille, '$physique',...
...,'NOW()) " ;

la je remarque que j'ai oublié un apostrophe pour $taille et je corrige par '$taille'


pour NOW() je ne sais pas si je dois le mettre entre 2 apostrophe comme dans $taille :roll: (je ne sais pas!!!)

quant à $physique je ne vois pas d'erreur!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 avr. 2007, 08:59

Pour le NOW() Le plus simple aurait été de tester les deux pour voir la différence, mais pour te faire gagner du temps, en fait les apostrophes ne sont nécessaire que pour délimiter des chaines en SQL (varchar, date, etc.). Puisqu'il s'agit ici d'une fonction, pas d'apostrophes autour (sans quoi tu aurais sans doute NOW() en toute lettre dans ton enregistrement ;))

Et ne t'embête pas pour $physique, c'était juste pour illustrer le fait qu'il en manquait une au champ précédent ;)

Par contre fais attention, comme je le disais plus haut, si l'un de tes champs contient une apostrophe, sql ne parviendra pas à savoir ou se termine la chaine et génerera une erreur. Il te faut donc protéger les apostrophes éventuelles contenues dans tes variables (pas dans toutes, juste là ou l'utilisateur pourrait en saisir) en mettant un antislash devant. Il existe des fonctions qui font ça pour toi, jette un coup d'oeil à la doc de celle-ci par exemple : mysql_real_escape_string() :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 29 Messages

20 avr. 2007, 18:30

....je laisse tomber je n'arrive pas à enregistrer quoi que ce soit dans la table je ne vois pas où est le problème :cry:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

20 avr. 2007, 18:42

Pour taille tu as trouvé. Comme l'a dit Ryle, physique était juste là pour te montrer qu'il manquait une quote avant.

Tu n'as pas vu le souci au niveau de NOW ? Toujours avec les quotes ?