[DEFI] Ahah ! Aux armes chevaliers du PHP !

Résolu
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   -  
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   -
Bien le bonjour preux et inconscients chevaliers ! Voici un defi qui fera trembler plus d'un !

Euuuh bon, c'est un truc sur lequel je bloque mais je cojite dessus depuis 45mn, j'en suis a mon 4e cafe depuis, et c'est pas simple =D.

Voici la consigne !
J'ai une variable stocké dans ma base MySQL.
nom de la variable : city
contenu de la variable : ceci'est une'phrase complete

Voici le bout de code qui nous interesse :

document.getElementById(id).innerHTML = " <?php $recup_data2 = mysql_query("SELECT * FROM membres WHERE name='Fricky'"); 
$data2 = mysql_fetch_array($recup_data2);
echo "<input type='hidden' name='flag' value='infos'>";
echo "<table>";
echo "<tr><td>Ma ville : </td><td><input type=text name=city value=" .$data2['city']. "></td></tr>";
echo "</table><br>";
echo "<input type='submit' value='Valider'>"
?>";


Voici donc un code PHP intégré a du JS.

voici ce qui nous interesse plus particulierement, ligne 5 :
<input type=text name=city value=" .$temp. ">


Le probleme etant le suivant :
si j'entoure la variable de ' (quotes), ce qui donnerai : value=' " .$data2['city']. " '
>> Et bien il ne m'affichera seulement ceci
Si je n'entoure pas la variable de quotes : value=" .$data2['city']. "
>> Il ne m'affiche seulement ceci'est

C'est normal dans la mesure ou le parametre Value doit etre guidé pour savoir ce qu'il doit prendre en compte. Si j'entoure de quotes, il s'arretera a la prochaine quote, et si je l'entoure pas, il s'arretera au prochain espace.

OBJECTIF : Pouvoir afficher dans la liste deroulante la variable complete ceci'est une'phrase complete !!
Voila, a vous de jouer !

Le premier prix : Un gros bisou virtuel de ma part =p.

Merci beaucoup de votre attention !
A voir également:

2 réponses

pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
Et si tu faisais une fonction qui convertit ta phrase en ceci'est_une'phrase_complete avant de la stocker dans ta base et qu'au moment de l'affichage tu utilisais une fonction inverse ? De la même manière, au lieu de modifier les espaces, tu pourrais modifier les apostrophes... Tu peux peut-être même les changer en entités html...
0
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
Mais tu es sûr qu'il s'arrête au premier espace ?
0
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   182
 
J'y ai pensé en effet.

Cependant si un mec ecrit Voici_une phrase_bien_vicieuse.

en passant par les 2 fonctions dont tu parles, j'ai a la fin :

Voici une phrase bien vicieuse. Je ne pourrais jamais avoir d'underscore a la sortie...

En gardant ta technique je pourrais remplacer les espaces par une chaine inspiré d'IKEA(=p) style : @%__SC0RE.
Je doute qu'un mec s'amuse a rentrer cette chaine dans la variable.

Cependant la technique est lourde et assez moche pour quelque chose que j'aimerais utiliser tres souvent.

Je prefererai que la solution soit lié aux quotes et doubles quotes du code cité. M'enfin je garde tout de meme cette idee en dernier recours.
0
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   182 > pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention  
 
Oui il s'arrete au premier espace.

De facon general si tu as <input type=submit value=coucou comment ca va>
il t'affiche un bouton avec ecrit coucou dessus. Ne pas entouré les contenus des parametres dans les balises c'est pas le top.
0
_will Messages postés 133 Date d'inscription   Statut Membre Dernière intervention   17 > Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Est-tu vraiment sur que sur ta base de données, la chaine y est insérée correctement ?
As tu pensé à l'utilisation de fonctions PHP tel que addslashes ?
https://www.php.net/manual/fr/function.addslashes.php

Voir aussi

    * stripcslashes()
    * stripslashes()
    * addcslashes()
    * htmlspecialchars()
    * quotemeta()
    * get_magic_quotes_gpc()


0
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   182 > _will Messages postés 133 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, dans la db la variable est bien celle attendu.

L'utilisation de addslashes et stripslashes j'ai testé oui, mais cela revient exactement au meme. De plus selon certaines sources sur le net, c'est moins secure que mysql_real_escape_string() (ce que j'utilise).

0
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   182
 
Oulala si je change la variable city en inserant des "(doublequotes) c'est encore pire (bah ui la chaine echo "" est coupée en plein milieu !)

Donc a mon avis, finalement, la solution ne se trouverait pas dans l'utilisation des quotes et doubles quotes dans le code, mais leurs inhibitions dans la variable.

Je test des trucs selon cette idee. Et je vous tient au courant.
0
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135
 
Sinon, à la place d'un input txt, tu peux mettre un input textarea...
0
Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   182 > pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention  
 
Ouarf En effet... C'est con mais fallait y penser, et vu que la valeur est entouré de balise, osef des quotes et dblquotes, espaces et tout le tralala.

C'est cool je te remercie. Tiens, SMAAAACK.

Bonne aprem !
=).
0
pyschopathe Messages postés 1974 Date d'inscription   Statut Membre Dernière intervention   135 > Fricky42 Messages postés 466 Date d'inscription   Statut Membre Dernière intervention  
 
Chouette, content d'avoir eu cette idée, j'ai droit à un bisou virtuel bien baveux ^^ !
0