Aller au contenu

Ajout d'un caractère vide (espace)


ouarzazat

Sujets conseillés

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 :angry:

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é par ouarzazat
Lien vers le commentaire
Partager sur d’autres sites

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

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

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 :fou:

Lien vers le commentaire
Partager sur d’autres sites

Posté (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é par ouarzazat
Lien vers le commentaire
Partager sur d’autres sites

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

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

Tu as plusieurs solutions :

$requete = "
SELECT truc
FROM 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

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

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

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

Posté (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é par ouarzazat
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...