Aller au contenu

Ajout d'un caractère vide (espace)


Sujets conseillés

Posté (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 :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
Posté

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.

Posté

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

Posté

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:

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
Posté

Bonjour,

Tu peux utiliser la fonction trim() pour supprimer les caractères superflus en début et fin de chaîne.

Posté

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++

Posté

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 ;))?

Posté

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

Posté

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

Posté

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.

Posté

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 ...

Posté

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.

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
Posté

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.

Veuillez vous connecter pour commenter

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



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