IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Insérer une certaine chaîne de caractères dans MySQL


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut Insérer une certaine chaîne de caractères dans MySQL
    Bonjour,

    je tente d'insérer la chaîne de caractères suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="mailto:mon_adresse@aol.com">mon_adresse@aol.com</a>
    , mais quand je le fais, j'ai la réponse suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mailto:smon_adresse@aol.com">mon_adresse@aol.com","lolo","2009-12-05-12:11")' at line 1
    Peut-on me dire ce qu'il faudrait faire pour que ça marche ?

  2. #2
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Salut,

    Le fait que tu utilise les " a la fois pour séparer tes données dans ta requete et dans tes données elle même...

    Ca te parrait pas un peu optimiste sur le résultat final ?

    Ta requete complète actuellement ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ma_requete='INSERT INTO ma_table (mon_mail, mon_nom, date) VALUES ("href="mailto:mon_adresse@aol.com">mon_adresse@aol.com","lolo","2009-12-05-12:11")';
    Et il te met une belle erreur car pour lui mon_mail vaut : href=
    et que mailto:mon_adresse@aol.com est tout sauf une virgule de séparation.

    Alors 2 petit conseils qui t'éviteront 2 gros problèmes :

    1) Les requetes se formules de cette façon (de préférence, c'est pas obligé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ma_requete="INSERT INTO ma_table (mon_mail, mon_nom, date) VALUES ('href="mailto:mon_adresse@aol.com">mon_adresse@aol.com','lolo','2009-12-05-12:11')"';
    Les doubles quotes " entourent la requete et les simples quotes ' séparent les infos.

    2) Si tu rentre du code html dans ta base utilise htmlentities() avant de l'inclure à ta requete et html_entity_decode() pour l'afficher (echo )

    Va voir ici si t'as des problèmes :
    http://fr.php.net/manual/fr/function.htmlentities.php


    Donc il faudrait que tu fasse comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $mon_mail=htmlentities(<a href="mailto:mon_adresse@aol.com">mon_adresse@aol.com</a>);
     
    $ma_requete="INSERT INTO ma_table (mon_mail, mon_nom, date) VALUES ('".$mon_mail."','lolo','2009-12-05-12:11')"';
    Petit EDIT :

    N'oublie jamais d'échapper tes apostrophes ' de cette façon \' dans tes script.

    Sinon t'auras des surprises...

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    J'ai essayé de faire ce que tu dis, mais j'ai encore des problèmes. Voici mon code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /*construction de la string (les éléments de texte2 qui contiennent une adresse 
    mail, ont justement été produits ainsi : $texte2[$j++]='<a href =\"mailto:'.$texte1[$i].'\">'.$texte1[$i].'</a>';*/
    $texte=$texte2[0];
    for ($i=1;$i<$ltexte1;$i++) $texte.= $texte2[$i]; 
    echo "texte=".$texte."<br>";
    $texte=addslashes($texte);
    $texte=htmlentities($texte);
     
    $sql="INSERT into `forum_vhs` (`text`, `auteur`,`date`) VALUES (\"".$texte."\",\"".$auteur."\",\"".$date."\")";
     
    $sql = stripslashes($sql);
     
    $result = mysql_query($sql) or die(mysql_error());
    Et ce code marche tant que je ne mets pas d'adresse mail dans le texte. Saurais-tu ce qu'il faut que je fasse pour qu'il marche aussi avec les adresses mail ?

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut
    Essaye cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $sql= 'INSERT into `forum_vhs` (`text`, `auteur`,`date`) VALUES ("'.$texte.'","'.$auteur.'","'.$date.'")';

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Les {} pour le for ne sont pas nécessaires, s'il y a une seule instruction (comme ici). D'ailleurs, le echo du texte me montre que c'est bon.
    Sinon, le ltexte1 au lieu de texte1 est justiié : il s'agit de la longueur du tableau.
    J'ai viré les échappements dans la construction de texte2, mais ça ne change rien.

    Je l'ai fait, ce qui supprime l'erreur SQL, mais au lieu d'avoir le lien, il m'en affiche le code html, et si je supprime la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte=htmlentities($texte);
    , j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mailto:mon_adresse@aol.com">mon_adresse@aol.com","lolo","2009-12-05-15:06")' at line 1
    Donc ça ne va pas encore...

  6. #6
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    C'est quoi ton code d'affichage ?

    parce que sans ça :

    echo html_entity_decode($le_résultat_de_ma_requete);

    il va effectivement te sortir le code

  7. #7
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Salut,

    Pourquoi échappe tu les " dans le lien puisque tu utilise des ' pour encadrer :
    $texte2[$j++]='<a href =\"mailto:'.$texte1[$i].'\">'.$texte1[$i].'</a>';

    attention dans ton for $ltexte1 au lieu de $texte1.
    Et, tu parait être point niveau prog, mais un for il faut pas mettre les instructions entre {} ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $texte=$texte2[0];
    for ($i=1;$i<$ltexte1;$i++) $texte.= $texte2[$i]; // ça marche ça ?
    echo "texte=".$texte."<br>";
    $texte=addslashes($texte);
    $texte=htmlentities($texte);
     
    $sql="INSERT into `forum_vhs` (`text`, `auteur`,`date`) VALUES (\"".$texte."\",\"".$auteur."\",\"".$date."\")";
     
    $sql = stripslashes($sql);
     
    $result = mysql_query($sql) or die(mysql_error());
    et si au lieu de stripper les slashes t'utilisait des ' pour séparer tes données ?

    VALUES (\"".$texte."\",\"".$auteur."\",\"".$date."\")"; = VALUES ('".$texte."','".$auteur."','".$date."')";

    Les ` ne servent à rien, inutile de copier les requetes de PhpMyAdmin

    `forum_vhs` (`text`, `auteur`,`date`) = forum_vhs (text, auteur,date)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une seule chaîne de caractères dans l'adresse au lieu de deux
    Par mihelicjm dans le forum APIs Google
    Réponses: 12
    Dernier message: 31/10/2014, 17h02
  2. [XL-2010] Recherche d'une sous-chaîne de caractères dans une cellule
    Par StephThai dans le forum Excel
    Réponses: 7
    Dernier message: 13/01/2014, 04h21
  3. Recherche une sous chaîne de caractères dans un Vector
    Par brino1987 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/06/2013, 14h31
  4. Réponses: 7
    Dernier message: 30/06/2011, 00h40
  5. Réponses: 7
    Dernier message: 27/04/2007, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo