Insertion de donnée Mysql avec des espace....

Résolu
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011 - 25 sept. 2009 à 14:23
cs_ninas Messages postés 5 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 28 juin 2010 - 28 juin 2010 à 17:40
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

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
25 sept. 2009 à 14:40
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
3
heliburn Messages postés 14 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 10 décembre 2009
25 sept. 2009 à 14:56
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
3
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
25 sept. 2009 à 14:32
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.
0
heliburn Messages postés 14 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 10 décembre 2009
25 sept. 2009 à 14:39
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
heliburn Messages postés 14 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 10 décembre 2009
25 sept. 2009 à 14:43
Très mauvaise idée le str_replace :/ utilise plutot stripslashes qui est beaucoup mieux pour ça.
0
heliburn Messages postés 14 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 10 décembre 2009
25 sept. 2009 à 14:45
a non tu ajoutes un slashes autant pour moi utilise donc addslashes
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
25 sept. 2009 à 14:50
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 ?
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
25 sept. 2009 à 14:59
Merci à vous pour ces super réponses !
0
heliburn Messages postés 14 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 10 décembre 2009
25 sept. 2009 à 15:06
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
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
25 sept. 2009 à 15:11
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
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 sept. 2009 à 13:31
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 -
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
27 sept. 2009 à 17:25
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.
0
cs_ninas Messages postés 5 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 28 juin 2010
28 juin 2010 à 17:40
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.
0
Rejoignez-nous