Erreur mysql_query("INSERT INTO ... Smiley

speedy -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Quand j'installe mon script avec un bout de code pour smiley tout s'installe correctement dans ma base phpMyAdmin 3.1.5 (Chez free).
Mais quand je tape mon code smiley j'obtient une ligne de code au lieu d'un image (Smiley).

Erreur dans mon <textarea> </textarea> :
IMAGE.gif<img src=\"$fullurl/smilies/01.gif\" alt=\"\" border=\"0\" />')");

Au lien de 01.gif Texte ou autre

Code dans .php (Installation)
mysql_query("INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES(':'(','<img src=\"$fullurl/smilies/01.gif\" alt=\"\" border=\"0\" />')");
mysql_query("INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES(':$:','<img src=\"$fullurl/smilies/02.gif\" alt=\"\" border=\"0\" />')");
mysql_query("INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES(':/:','<img src=\"$fullurl/smilies/03.gif\" alt=\"\" border=\"0\" />')");
mysql_query("INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES('^^','<img src=\"$fullurl/smilies/04.gif\" alt=\"\" border=\"0\" />')");


Code représentation des smileys :
Smiley 01.gif = :'(
Smiley 02.gif = :$
Smiley 03.gif = :/
Smiley 04.gif = ^^


Cordialement,

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

1 - Attention, l'extension mysql était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

À la place, tu peux (<gras DOIS </gras> ) utiliser l'extension MySQLi ou l'extension PDO_MySQL
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli

Si tu choisis PDO, pense à activer la gestion des erreurs : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

2 - Regarde bien tes requêtes
par exemple la première
mysql_query("INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES(':'(','<img src=\"$fullurl/smilies/01.gif\" alt=\"\" border=\"0\" />')"); 

Du moins juste le sql :
INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES(':'(','<img src=\"$fullurl/smilies/01.gif\" alt=\"\" border=\"0\" />')


Ne vois tu pas le souci ? ( un indice .... regarde les apostrophes )

NB: Si tu passes à mysqli ou pdo ... tu pourras utiliser ce qu'on appelle les requêtes préparées. Ca évite ce genre de souci.

NB² : En BDD .. tu n'as pas besoin de stocker les balises IMG ....
Seuls le "nom" du fichier importe.
Moi je ne mettrai que :
INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES(':\'(','$fullurl/smilies/01.gif')

2
speedy
 
Bonjour jordane45,
Merci pour toutes ces informations je vais lire attentivement tes liens malgré que je ne comprends rien à y mysqli ou à PDO.
Il faut juste supprimer mysql_query et mettre juste mysqli ?

Remarque : je vais lire attentivement tes liens :)

Pour ce qui est de l'apostrophe dans le smiley j'avais remarqué j'ai mis un anti-slash \ rien n'a changé.

là où je ne comprends pas c'est que ça ne fonctionne pas uniquement pour ces 4 smileys avec l'anti slash ou sans anti slash (\) :: => :$ => :/ => ^^ et :'( avec ou sans :\'(

Ces les seules 4 smileys qui ne fonctionne pas les 12 autres aucun souci.


Cordialement,
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > speedy
 
Place la requête dans une variable et fais en un echo.
Ensuite... tu prends le résultat du echo ... et tu le colles directement dans phpmyadmin pour tester la requête... tu verras le message d'erreur.

$sql = "INSERT INTO ".$so_prefix."_smilies (code,smilie) VALUES(':'(','".$fullurl."/smilies/01.gif' ) ";
echo " La requete est : ".$sql;
mysql_query($sql);

0