ouarzazat Posté 2 Mai 2006 Partager Posté 2 Mai 2006 (modifié) Bonjour, j'ai comme qui dirait un petit problème. Explication: sur un formulaire de saisie, quand je coche la case à cocher 'truc', $truc ='truc'; (sinon $truc='' puis j'écris $truc dans le champ voulu dans ma table à la soumission du formulaire. Mais voilà, au lieu d'écrire 'truc' il va écrire 'truc '. Et ça ça me plait pas J'ai beau chercher je ne vois pas d'où cela vient, d'autant que j'ai une bonne vingtaine d'autre cases à cocher qui fonctionnent avec le même principe et pas de problème. Et le petit plus qui agace, dans phpmyadmin, je vais pour modifier l'enregistrement en question (avec 'truc '), je ne touche à rien je lui dis juste de me le réenregister tel quel, et boum il me supprime cet espace de malheur... C'est à n'y rien comprendre ! Vous y comprenez quelque chose vous?? Modifié 2 Mai 2006 par ouarzazat Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sarc Posté 2 Mai 2006 Partager Posté 2 Mai 2006 Bonjour, Je pense que si on avait le code du formulaire, ainsi que celui de l'exécution (juste ce qui concerne ce champ), on pourrait davantage t'aider. Il doit y avoir un problème dans le code, je doute que l'ordinateur se rebelle contre toi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 2 Mai 2006 Auteur Partager Posté 2 Mai 2006 Lol c'est qu'on peut devenir parano avec ces machines ! Voilà les bouts de code: Dans le formulaire de saisie: <input name="partenaire_oi" type="checkbox" id="partenaire_oi" /> Dans la page d'enregistrement: if (ISSET ($_POST['partenaire_oi'])) {$partenaire_oi = 'partenaire_oi';else {$partenaire_oi = '';} Puis: mysql_query("INSERT INTO tab_service_site VALUES ('', '$cible', '$crea_entreprise', '$crea_site', '$generaliste', '$institutionnel', '$internet_ntic', '$m_interim', '$m_travail', '$newsletter', '$presse', '$reseau_entreprise', '$stats', '$radio', '$tv', '$specificite', '$autre_domaine', '$online', '$offline', '$concurrent', '$p_annonces', '$site_emploi', '$autre_concurrence', '$avec_interim', '$sans_interim', '$dedie_interim', /*c'est là*/'$partenaire_oi',/**/ '$annuaire', '$forum', '$liste_liens', '$moteur', '$portail', '$meta', '$echange', '$gratuite', '$payante', '$commentaire_indexation', '$departement_id', '$region_id', '$national', '$local', '$commentaire_localisation', '$promotion', '$referencement', '$nom_service_site', '$url', '$nom_societe', '$raison_sociale', '$description_service', '$dernier_adresse_id', '$timestamp')"); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sarc Posté 2 Mai 2006 Partager Posté 2 Mai 2006 Tu utilises d'une drôle de manière les input checkbox on dirait. Pourquoi ne pas mettre directement : <input name="partenaire_oi" type="checkbox" id="partenaire_oi" value="partenaire_oi" /> Le code ensuite est directement $partenaire_oi = $_POST['partenaire_oi']; Qui prendra la valeur vide si la case n'a pas été cochée, et qui prendra la valeur partenaire_oi si la case a été cochée... Mis à part ça, je sais pas d'où peut venir ton espace moi non plus Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 2 Mai 2006 Auteur Partager Posté 2 Mai 2006 (modifié) Bon sang y'a rien à faire !! J'ai testé avec la simplification que tu m'as donné... a marche pas. Encore plus fort: ensuite j'utilise mon formulaire de recherche avec comme argument: partenaire_oi='partenaire_oi' ... ça trouve rien. puis j'utilise partenaire_oi='partenaire_oi ' ... ça trouve rien non plus !! C'est complètement dingue... Modifié 2 Mai 2006 par ouarzazat Lien vers le commentaire Partager sur d’autres sites More sharing options...
NorSeb Posté 2 Mai 2006 Partager Posté 2 Mai 2006 Bonjour, Tu peux utiliser la fonction trim() pour supprimer les caractères superflus en début et fin de chaîne. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 2 Mai 2006 Auteur Partager Posté 2 Mai 2006 C'est juste! Pour supprimer un espace: rtrim($var," "); Ceci fait l'affaire? Lien vers le commentaire Partager sur d’autres sites More sharing options...
NorSeb Posté 2 Mai 2006 Partager Posté 2 Mai 2006 oui ou tout simplement : $var = trim($var); Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 2 Mai 2006 Auteur Partager Posté 2 Mai 2006 Bon je crois avoir trouvé d'où venait le pblm... J'ai mis cette superbe requête sur une seule ligne: mysql_query("INSERT INTO tab_service_site VALUES ('', '$cible', '$crea_entreprise', '$crea_site', '$generaliste', '$institutionnel', '$internet_ntic', '$m_interim', '$m_travail', '$newsletter', '$presse', '$reseau_entreprise', '$stats', '$radio', '$tv', '$specificite', '$autre_domaine', '$online', '$offline', '$concurrent', '$p_annonces', '$site_emploi', '$autre_concurrence', '$avec_interim', '$sans_interim', '$dedie_interim', /*c'est là*/'$partenaire_oi',/**/ '$annuaire', '$forum', '$liste_liens', '$moteur', '$portail', '$meta', '$echange', '$gratuite', '$payante', '$commentaire_indexation', '$departement_id', '$region_id', '$national', '$local', '$commentaire_localisation', '$promotion', '$referencement', '$nom_service_site', '$url', '$nom_societe', '$raison_sociale', '$description_service', '$dernier_adresse_id', '$timestamp')"); et ça lui plait, ma foi tant mieux, dse fois je crois qu'il ne vaut mieux pas aller chercher trop loin... Toujours est il que je vous remercie bien tous pour votre aide !!! a++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 2 Mai 2006 Auteur Partager Posté 2 Mai 2006 D'ailleurs j'en profite pour vous poser une question de plus: ce genre de requête à rallonge, vous les écrivez sur une même ligne ou vous faites des retour à la ligne (sans espace avt le retour biensur )? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kalt Posté 4 Mai 2006 Partager Posté 4 Mai 2006 Tu as plusieurs solutions : $requete = "SELECT trucFROM machin WHERE bidule = 'chouette'"; Ou celle que je préfère : $requete = "SELECT truc ";$requete .= "FROM machin ";$requete .= "WHERE bidule = 'chouette'"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 4 Mai 2006 Auteur Partager Posté 4 Mai 2006 Oui il me semble qu'il soit très répandu de mettre la requête dans une/des variables. Je crois que la plupart des dévelopeurs utilisent cette méthode, et que je vais m'y coller également Merci pour ta participation Lien vers le commentaire Partager sur d’autres sites More sharing options...
NorSeb Posté 4 Mai 2006 Partager Posté 4 Mai 2006 L'avantage (entre autres) de cette solution est que tu peux ré-afficher la requète en cas d'erreur lorsque tu teste ton script. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 4 Mai 2006 Auteur Partager Posté 4 Mai 2006 Ca c'est un gros point fort c'est clair! Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 4 Mai 2006 Partager Posté 4 Mai 2006 Personnellement, je m'organise de la manière suivante : $sql_var = "SELECT *FROM TABLE...";$req_var = mysql_query($sql_var) or die(mysql_error().'Dans la requête :<br>'.$sql_var);etc ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kalt Posté 5 Mai 2006 Partager Posté 5 Mai 2006 En réponse à Captain Torche, pensez à n'utiliser cette méthode que lors du développement et ne pas la laisser en ligne : en effet, l'affichage d'une erreur donne des indices à un pirate sur la structure de ta base, le nom des tables et des champs. Ces indices peuvent ensuite être utilisés pour une attaque par injection SQL. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouarzazat Posté 6 Mai 2006 Auteur Partager Posté 6 Mai 2006 (modifié) Et pour éviter ces injections sql, est-il judicieux de spécifier une plage d'argument? A la manière d'une plage ip vous voyez? Par exemple, pour une page liste_resultat?num_page=... Est-il judicieux de spécifier que $_POST['num_page'] est un nombre compris entre x et y? Ou bien pour une autre page dire qu'il ne doit pas y avoir tel ou tel caractère dans le $_POST? Faudrait-il faire cela pour chacune de nos pages? Bon on dévie un peu du sujet initial, mais puisqu-on est lancé.. (Peut-être devrais-je ouvrir un nouveau sujet, avis aux modos!) Modifié 6 Mai 2006 par ouarzazat Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 6 Mai 2006 Partager Posté 6 Mai 2006 Kalt : ne t'inquiètes pas, je ne laisse pas ça en prod Sinon, ouarzazat, je pense qu'une simple vérification du caractère numérique de l'argument (page), est suffisant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant