probleme avec formulaire de petites annonces

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 : probleme avec formulaire de petites annonces

par charabia » 20 avr. 2007, 21:44

C'est sûr je te comprend je suis passé par là aussi :langue:

Mais si tu cherches de toi même la satisfaction ne sera que plus grande ! C'est si seulement après avoir bien cogité que tu ne trouves pas, viens nous voir ;)

Bon courage !

par poete » 20 avr. 2007, 21:38

Tu as tout a fait raison charabia. désolé de vous avoir pris la tête, mais je voulais tellement reussir ce premier script de A à Z car je sais une fois que je l'aurai fini et tout compris, je saurai faire pleins d'autres script en php!

sinon, pour mon probleme cela venait effectivement du type de champs utilisé dans ma table, j'ai utilisé "tinyint" et je viens de le remplacer par un varchar(10) et ça marche :wink: j'ai déjà compris que tinyint affiche apparemment que des nombres :lol: merci bien pour votre aide


je vais me renseigner sur le $_FILES et bricoler un truc en php et si ça marche pas je reviendrai vous embêtez encore :oops:

bonne soirée à tous et bon week-end

p.s: je mettrai pas encore "Résolu" car le script n'est pas fini

par charabia » 20 avr. 2007, 21:21

Qand tu programmes il te faut être logique. Lorsque tu as une erreur essaie de voir à la source. Cherches avant de venir demander de l'aide.

Pour le sexe tu as "0" au lieu de "homme". Pourquoi ? Regardes le type de ton champ.

Pour la photo renseignes toi sur $_FILES et les déclarations de tes variables à ce niveau : http://www.phpdebutant.org/article113.php

par poete » 20 avr. 2007, 21:14

superrrrrrrrrrrrr maintenant ça fonctionne :lol: merci beaucoup à tous les deux.

mais je ne vais pas vous lâcher tout de suite, il faut que vous m'aidiez à faire en sorte que la photo soit sauvegardé dans un répertoire (.../images) et non pas dans la base de donnée afin de ne pas trop la surcharger.

je viens de regarder ma table profile et dans le champs "photo", il y a un truc bizarre qui est écrit : ARRAY (alors que moi ce que je voulais c'est un lien vers la photo)
et la 2ème bizarrerie se trouve dans le champs "sexe", quand j'ai rempli le formulaire j'ai coché le bouton "homme" mais dans la table ce n'est pas écrit "homme" mais "O" je ne comprend pas pourquoi.

regardez par vous même :

Image

par charabia » 20 avr. 2007, 20:51

Et malgré ça tu as toujours cette erreur ? C'est étonnant étant donné que l'erreur indiqué se trouve exactement au niveau de la taille.

Corriges ta requête comme Cyrano t'as conseillé.

par poete » 20 avr. 2007, 20:50

Heu...c'est pas une blague au moins ?

Voici ce que je vois dans ta requête corrigée...
 '$taille, '$physique'

:oops: non non j'ai copié le mauvais fichier, mais la vrai requête $taille est entre 2 apostrophes :wink:

par Cyrano » 20 avr. 2007, 20:37

J'ajouterais quand même un détail : lorsqu'on met des variables dans une chaine de caractère, c'est un des meilleurs moyens pour faire ce type d'erreur d'inattention. Avec la coloration syntaxique en plus, ça devient d'autant plus évident. Proposition de corrigé :
$sql = "INSERT  INTO profile (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()) " ;

par charabia » 20 avr. 2007, 20:15

Heu...c'est pas une blague au moins ?

Voici ce que je vois dans ta requête corrigée...
 '$taille, '$physique'

par poete » 20 avr. 2007, 19:51

       
// Ensuite on enregistre l'annonce


  $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()) " ;


j'ai fais un essai sur le serveur de free et voila ce que j'ai eu :


votre sexe : homme
votre pseudo : moimoi
votre mot de passe : 4523132
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 : 18
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 : pffffffffff ça fonctionne pas!


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5 sur 10', 'Autre', 'Autre', 'pffffffffff ça fonctionne pas!', NOW())' at line 2


et en local j'ai ça :

votre sexe : homme
votre pseudo : moimoi
votre mot de passe : 54351.21
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 : 18
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 : ça ne fonctionne pas!!!!


Erreur de syntaxe près de '5 sur 10', 'Autre', 'Autre', 'ça ne fonctionne pas!!!!', NOW())' à la ligne 2



c'est une erreur de syntaxe et je ne sais pas comment la corriger!

par charabia » 20 avr. 2007, 19:24

Montres nous ta requête corrigée.

As-tu fais ce que je t'ai dis à savoir exécuter ta requête sous phpMyAdmin ?

par poete » 20 avr. 2007, 19:03

pour NOW() j'ai fais un essai avec des apostrophes et sans apostrophes et cela n'a rien donné, quand je regarde ma table profile il y a rien dedans!
vas comprendre pourquoi :roll:

par charabia » 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 ?

par poete » 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:

par Ryle » 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() :)

par poete » 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!