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 :

insert de Text


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut insert de Text
    Bonjour
    je souhaite envoyé un message de type ("c'est un test") à un base de donnée, avec la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO `ma_table` ('Nom','prenom','Mesage') VALUES ('$Nom', '$prenom', '$Message')
    et le probléme est qu'il n'arrive pas a comprendre Message et me dit Erreur dans le champs 'est un test' alors que si j'enleve l'envoi de message tout marche.

    je trouve ça un peu bizzare, meme que j'ai essayé de mettre des cotes , les enlever et ça ne marche pas

    merci

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour,

    Je pense que tu places ta requête dans une variable genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $query="
    INSERT INTO `ma_table` 
    (
    'Nom',
    'prenom',
    'Mesage'
    ) 
    VALUES
    (
    '$Nom',
    '$prenom',
    '$Message'
    )";
    Si c'est le cas je crois qu'il faut enlever les simples cotes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $query="
    INSERT INTO ma_table 
    (
    Nom,
    prenom,
    Mesage
    ) 
    VALUES
    (
    $Nom,
    $prenom,
    $Message
    )";
    dans ta requête tu semble aussi n'avoir mis qu'un s a ton champs mesage ...

    ++

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut
    j'avais essayé meme sans les cotes '' et juste le $Nom ça ne marchait pas et ça me met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Champ 'tarekphp' inconnu dans field list
    ya pa d'erreur dans la syntace (j'ai juste omis un s lors de la redaction du message precedent)

    voila le code au complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nouvelle page 1</title>
    </head>
     
    <body>
    <?php 
    $Nom = $_POST['Nom']; 
    $Mail = $_POST['Mail']; 
    $Tel = $_POST['TEL']; 
    $Message = $_POST['Message']; 
    $hote = "localhost";
    $utilisateur = "root";
    $mdp ="";
    $cnx = mysql_connect($hote,$utilisateur,$mdp);
    if ($cnx==0)
    		exit("erreur de connexion");
     
    $Nomdelabase = "bd_voyage";
     
    if(mysql_select_db($Nomdelabase )== 0 )
    	    echo "erreur ; impossible d'acceder a la BD";
     
     
    /*$req1 ="INSERT INTO `messagerie` (`Nom`) VALUES ($Nom)";*/
    $req1 ="
    ";
     
     
    $res = mysql_query("INSERT INTO `messagerie` (`Nom`,`Mail`,`Tel`,`Message`) VALUES ('$Nom','$Mail','$Tel', '$Message')") or die(mysql_error());
     
     
    //echo $req1;
    echo $res;
    ?> 
    </body>
     
    </html>
    le $Tel fonctionne ainsi que tous le reste apart Message (avec ou sans les cotes c kifkif)

    ma table contient 5 champ
    id integer
    Nom varchar
    Mail varchar
    Tel varchar
    Message text (et j'avais remplacé par varchar pour testé)

    donc j'ai réessayé a midi alors
    si Message = "est mon test" pas de soucis
    si message = " c'est mon test" il bug et me donne ça comme comment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur de syntaxe près de 'est mon')' à la ligne 1
    je suis sur que c'est le crochet (du c'est) mais je sais pas comment le resoudre

    merci

  4. #4
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut Redirection permanente et index
    Ton code n'est pas vraiment optimisé, déjà tu pourrais faire par exemple une fonction pour la connexion :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Connection de la DB
    function connexion_DB($name_DB) {
    // Déclaration des paramètres de connexion
    	$host = "";  
    	$user = "";
    	$bdd = $name_DB;
    	$passwd  = "";
    // Connexion au serveur
    	mysql_connect($host, $user,$passwd) or die("Erreur de connexion au serveur:".mysql_error());
    	mysql_select_db($bdd) or die("Erreur de connexion à la base de donnees:".mysql_error());
    	mysql_query("SET CHARACTER SET 'utf8'");
    }
    et une pour les requêtes :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // Exécute une requète SQL. Si la requête ne passe pas, renvoir le message d'erreur MySQL
    // Paramètres : chaine SQL -> $strSQL
    // Renvoie : enregistrements correspondants -> $result
    function requete_SQL($strSQL) {
    	$result = mysql_query($strSQL);
    	if (!$result) {
    		$message  = 'Erreur SQL : ' . mysql_error() . "<br>\n";
    		$message .= 'SQL string : ' . $strSQL . "<br>\n";
    		$message .= "Merci d'envoyer ce message au webmaster";
    		die($message);
    	}
    	else {
    		echo '<font color="red"><strong>Insertion effectuée</strong></font>';
    	}
    	return $result;
    }

    et voir ensuite ce que ça donne, parce que là c'est dur dur de te suivre...

    et pour finir :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query="INSERT INTO ma_table (Nom,prenom,Message) VALUES('$Nom','$prenom','$Message')";

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    bonjour,

    Avant d'insérer ton message est-ce que tu gère les caractères spéciaux ou elligible HTML ?

    Regarde du coté de la fonction htmlentities :

    http://fr.php.net/manual/fr/function.htmlentities.php

    Ainsi tes caractères apostrophe et autres caractères spéciaux seront transformer en caractère html avant d'être inséret dans la base .

    J'en parle dans mon post ici :

    http://www.developpez.net/forums/d62...-entites-html/

    ++

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut
    j'ai essayé la méthode proposé par blueice mais ne marche pas
    et voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nouvelle page 1</title>
    </head>
     
    <body>
    <?php 
    // Connection de la DB
    function connexion_DB($name_DB) {
    // Déclaration des paramètres de connexion
    	$host = "localhost";  
    	$user = "root";
    	$bdd = $name_DB;
    	$passwd  = "";
    // Connexion au serveur
    	mysql_connect($host, $user,$passwd) or die("Erreur de connexion au serveur:".mysql_error());
    	mysql_select_db($bdd) or die("Erreur de connexion à la base de donnees:".mysql_error());
    	mysql_query("SET CHARACTER SET 'utf8'");
    }
     
    $Nom = $_POST['Nom']; 
    $Mail = $_POST['Mail']; 
    $Tel = $_POST['TEL']; 
    $Message = $_POST['Message']; 
     
    $Nomdelabase = "bd_voyage";
     
    connexion_DB($Nomdelabase);
     
     
    // Exécute une requète SQL. Si la requête ne passe pas, renvoir le message d'erreur MySQL
    // Paramètres : chaine SQL -> $strSQL
    // Renvoie : enregistrements correspondants -> $result
    function requete_SQL($strSQL) {
    	$result = mysql_query($strSQL);
    	if (!$result) {
    		$message  = 'Erreur SQL : ' . mysql_error() . "<br>\n";
    		$message .= 'SQL string : ' . $strSQL . "<br>\n";
    		$message .= "Merci d'envoyer ce message au webmaster";
    		die($message);
    	}
    	else {
    		echo '<font color="red"><strong>Insertion effectuée</strong></font>';
    	}
    	return $result;
    }
     
     
     
    /*$req1 ="INSERT INTO `messagerie` (`Nom`) VALUES ($Nom)";*/
     
     
    $strSQL = "INSERT INTO `messagerie` (`Nom`,`Mail`,`Tel`,`Message`) VALUES ('$Nom','$Mail','$Tel', '$Message')";
    //$res = mysql_query() or die(mysql_error());
    requete_SQL($strSQL);
     
    //echo $req1;
    //echo $res;
    ?> 
    </body>
     
    </html>
    voila le resultat dans la page html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Erreur SQL : Erreur de syntaxe près de 'est un test')' à la ligne 1
    SQL string : INSERT INTO `messagerie` (`Nom`,`Mail`,`Tel`,`Message`) VALUES ('zz','zz@ii','00112233', 'c'est un test')
    Merci d'envoyer ce message au webmaster
    et sans l'apostrophe bien sur tout marche bien

  7. #7
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Ma méthode marche parfaitement...
    mais le problème n'est pas résolu par mon code mais c'est beaucoup plus clair.
    Bref utilise un anti-slash pour l'apostrophe...

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Par défaut
    Bon alors
    Blueciel merci pour ton organisation car c'est vrai qu' un code comme ça c'est mieux.
    narutobaka merci beacoup pour la solution car c'était ça (le htmlentities )
    voila la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $value=htmlentities($_POST['Message'],ENT_QUOTES);
     
    $strSQL = "INSERT INTO `messagerie` (`Nom`,`Mail`,`Tel`,`Message`) VALUES ('$Nom','$Mail','$Tel', '$value')";
     
    requete_SQL($strSQL);
    par contre une petite question ya t'il un moyen pour inverser le htmlentities lorsque je veux récupérer mon message et l'afficher ?

    merci

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour

    Oui il existe la fonction inverse : html_entity_decode().

    http://de3.php.net/manual/fr/functio...ity-decode.php

    ++

  10. #10
    Membre confirmé Avatar de Addict`
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 148
    Par défaut
    Lorsque tu as une chaine de caractères qui contient un apostrophe, utilises la fonction addslashes(chaine).

    Ca permet de rajouter un salsh devant tous les apostrophes...

    Bye

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

Discussions similaires

  1. insertion de texte dans word via vb
    Par godik dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/05/2006, 13h07
  2. [VBA-E] Insertion de texte dans word
    Par malhivertman1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/05/2006, 16h17
  3. insertion du text dans un champs d'une page internet
    Par lassmust dans le forum Web & réseau
    Réponses: 1
    Dernier message: 24/04/2006, 10h55
  4. Norme d'insertion/affichage texte dans une DB ?
    Par kiwikiller dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/12/2005, 11h53
  5. [web] [Perl/Tk] Pas d'insertion de texte !
    Par GLDavid dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 08/07/2004, 22h00

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