Insertion de donnée Mysql avec des espace.... [Résolu]

Signaler
Messages postés
63
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011
-
Messages postés
5
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
28 juin 2010
-
Re bonjour à tous, me re voila avec un nouveau problème que je vient de découvrir à l'instant.

J'ai une liste déroulante avec les info d'une table :
http://www.phpcs.com/forum/sujet-VALEUR-DEFAUT-DEPUIS-MYSQL-SUR-LISTE-DEROULANTE_1360445.aspx

Etc....

Quand je choisis un fabricant qui dans son "nom" possède un ou plusieurs "espaces", mysql m'enregistre que le début du "nom", c'est à dire tous se qui se trouve avant le 1er espace, le reste est totalement ignoré.

Exemple :
Je choisi : "Blabli blo" dans ma listbox, je valide mon formulaire, tous se passe bien.
Mais quand je vais vérifier sur mon fichier php ou il y a mon "echo $fabricant", et dans la BDD via phpmyadmin,
je me retrouve avec "Blabli" et le "espace blo" n'a pas été inscrit......

Une petite idée de se "bug" ?

Merci beaucoup à tous

13 réponses

Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
rebonjour,
dans echo "<option value=$fabricants ...
mets plutôt des cotes (value='$fabricants' ... ) et attention à celles qui pourraient être déjà dans la chaine


thip
Messages postés
14
Date d'inscription
vendredi 25 septembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

Si tu n'utilises pas la POO le mieux c'est un mysql_escape_string car tu es plus sûr. En fait c'est plus qu'une recommandation lol il faut l'utiliser sur toutes les données que l'utilisateur va transmettre

Pour la différence entre str_replace et addslashes c'est simple. addslashes va "slasher" plus de choses donc tu auras une meilleure protection de tes données. mais perso j'prefere mysql_escape_string qui est la fonction dédiée à mysql pour protèger les données
Messages postés
63
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011

Re, petite précision, j'utilise également des textarea avec tinymce, et lors de l'ajout dans la BDD les espaces sont bien ajoutés correctement, j'ai du mettre un str_replace dnas la page de traitement de mon form pour le caractère ' car cela me créait une erreur Mysql :
$mon_textarea = str_replace("'", "\'",$mon_textarea);


Merci pour votre aide.
Messages postés
14
Date d'inscription
vendredi 25 septembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

Bonjours,
A tu essayé d'afficher ta variable avec un echo avant insertion histoire de voir si elle est bien transmise correctement ?
Car il y a peut etre un problème dans tes tests préliminaires avant insertion dans la base de données.
C'est peut etre aussi une question de longueur de champ dans mysql
ex : si t'as un champ de type char qui fait 5 caractères il ne va prendre que les 5 premiers caractères.

une dernière possibilité tu as mal escapées tes données.
j'espère que ça va t'aider
Messages postés
14
Date d'inscription
vendredi 25 septembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

Très mauvaise idée le str_replace :/ utilise plutot stripslashes qui est beaucoup mieux pour ça.
Messages postés
14
Date d'inscription
vendredi 25 septembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

a non tu ajoutes un slashes autant pour moi utilise donc addslashes
Messages postés
63
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011

Woua, temps de réponse, sa fait vraiment plaisir de trouvé de l'aide aussi rapidement, merci à vous tous
Bon je pense passé pour un C*n, c'était les cotes manquantes qui me posait problème.....

Très mauvaise idée le str_replace :/ utilise plutôt stripslashes qui est beaucoup mieux pour ça.

Quelle est la différence exactement ?
Messages postés
63
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011

Merci à vous pour ces super réponses !
Messages postés
14
Date d'inscription
vendredi 25 septembre 2009
Statut
Membre
Dernière intervention
10 décembre 2009

Perso j'aime pas ça lol
echo "<option value=$fabricants

ça fait mal aux yeux

Utilises plutot

echo '<option value="'.$fabricants.'">'; c'est mieux et plus joli pour relire le code. La variable saute aux yeux
Messages postés
63
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011

Ok c'est pris, voici du coup mon code final :
<?php

echo "<select name=fabricants>";

$requete=mysql_query("SELECT * FROM fabricant");

$nombrelignes = mysql_numrows($requete);

for ($i=0;$i<$nombrelignes;$i++) {

$fabric = mysql_result($requete,$i,"nom");



echo '<option value="'.$fabric.'"';
if ( !strcmp($fabric, $fabricants) ) echo " selected";

echo "> $fabric </option>";

}

?></select>


Franchement merci encore
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
le mieux c'est un mysql_escape_string car tu es plus sûr

Attention, mysql_escape_string est déprécié, il faut utiliser mysql_real_escape_string.

echo "<select name=fabricants>";

>
echo '<select name"'.fabricants>.'"';

La valeur d'un argument HTML doit être en double quotes


if ( !strcmp($fabric, $fabricants) ) echo " selected";

Que fais tu exactement avec ça ? Que vaut $fabricants ?
... tu ne risques pas de te retrouver avec plusieurs selected ??


Cordialement,

Kohntark -
Messages postés
63
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
27 février 2011

Bonjour,
echo "<select name=fabricants>";


Ceci est simplement le nom de ma liste déroulante, pour l'insertion mysql.

$frabic, affiche les options de ma liste déroulante, et la variable $fabricants, me récupère celui enregistrée dans l'autre table, et qui me sélectionne le bon résultat de la requête dans ma liste déroulante.
Messages postés
5
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
28 juin 2010

bonjour,

J'ai un probléme similaire.
J'ai des input type="text" qui comportent des espace en début de texte.
Lorsque je valide le formulaire, les espace sont élimininés en partie.
Exemple, si j'ai deux espace en début du texte à l'insertion, il n'en reste qu'un seul.
Des Solution ????
Merci d'avance.