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 :

Afficher un texte INFOS de ma bdd au clic sur une valeur d'un tableau html rempli par la même bdd


Sujet :

Langage PHP

  1. #21
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Oui sabotage a raison. Je t'ai répondu d'une manière générique suite à ton dernier message mais changer d'encodage demande un travail assez conséquent surtout pour un débutant et ce n'est pas un prérequis pour utiliser javascript. Penses-y plutôt pour plus tard car c'est quand même un gage d'évolution de ton site (par exemple si tu voulais utiliser jquery et ses nombreux modules pour diaporamas, slideshow ou autres effets visuels, de même pour ajax).


    Concernant les erreurs "illegal character" il est possible qu'elles ne soient pas bloquantes. Pour éviter ce type d'erreurs (qui n'en sont pas vraiment) tu peux essayer d'encadrer ton javascript avec "/* <![CDATA[ */" et "/* ]]> */". Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script type="text/javascript">/* <![CDATA[ */
    function show_info(text) {
    	var ele = document.getElementById('infos');
    	ele.innerHTML = text;
    } 
    /* ]]> */</script>

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir Sabotage,
    Non malheureusement, il n'est pas en ligne.
    Cependant, je me permets de vous remontrer mon tout dernier fichier(RechercheInfos.php) extrèmement simplifié puisqu'il s'agit d'une simple requête qui va chercher dans ma bdd les données fournies dans le tableau html.
    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
    66
    67
    68
    69
    70
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html;  charset=UTF-8"" />
     
    <script language="javascript"> 
    function show_info(text) {
    	var ele = document.getElementById('infos');
    	ele.innerHTML = text;
    } 
    </script>
     
    </head>
     
    <body>
     
    <?php
     
    $host = 'localhost';
    $user = 'root';
     
    $pass = '';
    $db = 'clients';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass,$db) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
           $select = "SELECT selection, nom , MaPage,infos FROM coordonnees where selection ='horticulteur'";
     
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
    echo '<div id="infos"></div>'; 
     
    // si on a récupéré un résultat on l'affiche.
    if($total) {
        // debut du tableau
     
        echo '<table bgcolor="FFFFFF">'."\n";
            // on affiche 
            echo '<tr>';
     
    		echo '<td bgcolor="#669999"><b><u>selection</u></b></td>';
            echo '<td bgcolor="#669999"><b><u>nom</u></b></td>';
          	echo '<td bgcolor="#669999"><b><u>MaPage</u></b></td>';
    		echo '</tr>'."\n";
        // lecture et affichage des résultats   
        while($row = mysql_fetch_array($result)) {
            echo '<tr>';
    		;
    		echo '<td bgcolor="#CCCCCC">'.$row["selection"].'</td>';
            echo '<td bgcolor="#90EE90">'.$row["nom"].'</td>';
     
     
    		 echo'<td bgcolor="#CCCCCC" onClick="show_info(\"' . $row['infos'] . '\")">'.$row["MaPage"].'</a></td>';
     
    		echo '</tr>'."\n";
        }
        echo '</table>'."\n";
        // fin du tableau.
    }
    else echo 'Pas d\'enregistrements dans cette table...';
     
    // on libère le résultat
    mysql_free_result($result);
    ?> 
    </body>
    </html>
    Si ça peut vous aider:
    Lorsque je fais un double clic(pas un simple clic) sur la valeur oui dans une ligne du tableau(mon choix), et puis un clic droit sur code source de la sélection, il m'affiche dans la Dom de la sélection de Morzilla Firefox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td onclick="show_info(\" nous="" assurons="" la="" taille="" printani�re="" de="" vos="" arbustes\")"="" bgcolor="#CCCCCC">Oui</td>
    ce qui est exact.

    Par contre un simple clic sur oui et droite sur code source de la page donne:
    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
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html;  charset=UTF-8"" />
     
    <script language="javascript"> 
    function show_info(text) {
    	var ele = document.getElementById('infos');
    	ele.innerHTML = text;
    } 
    </script>
     
    </head>
     
    <body>
     
    <div id="infos"></div><table bgcolor="FFFFFF">
    <tr><td bgcolor="#669999"><b><u>selection</u></b></td><td bgcolor="#669999"><b><u>nom</u></b></td><td bgcolor="#669999"><b><u>MaPage</u></b></td></tr>
    <tr><td bgcolor="#CCCCCC">Horticulteur</td><td bgcolor="#90EE90">Deltour</td><td bgcolor="#CCCCCC" onClick="show_info(\"Nous assurons la taille printani�re de vos arbustes\")">Oui</a></td></tr>
    <tr><td bgcolor="#CCCCCC">Horticulteur</td><td bgcolor="#90EE90">Permann</td><td bgcolor="#CCCCCC" onClick="show_info(\"Notre specialit�: taille des haies, tondre les pelouses et am�nagement de votre jardin\")">Oui</a></td></tr>
    <tr><td bgcolor="#CCCCCC">Horticulteur</td><td bgcolor="#90EE90">Goret</td><td bgcolor="#CCCCCC" onClick="show_info(\"\")">Non</a></td></tr>
    </table>
     
    </body>
    </html>
    Tout ce qui est repris dans le tableau , se retrouve dans la div. et non pas ce que j'ai selectionné.
    Or je rappelle que j'aimerais lors du clic sur oui qu'il m'affiche dans une popin ou pop-up l'infos correspondante c'est à dire dans l'exemple ci-dessus: "Notre specialit�: taille des haies, tondre les pelouses et am�nagement de votre jardin".
    Peut-être que ces informations peuvent vous aider à cerner le problème.
    Remerciements et je reste à votre disposition pour d'autres renseignements éventuels.

    Claudine

  3. #23
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as un " de trop là UTF-8""
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Mr Sabotage,

    Aucune erreur dans le script JS.
    Apparemment, ce n'est pas aussi simple à réaliser.
    Bref, voudriez-vous tester le code en interne , il suffirait de créer une toute petite BD avec les données;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT selection, nom , MaPage,infos FROM coordonnees where selection ='horticulteur'";
    Avec valeur 'oui' pour pour 'MaPage'
    Sachant que vous êtes très sollicité, il se peut que d'autres personnes pourraient tester le code

    D'avance , à tous,je vous en remercie.
    Claudine

  5. #25
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il y avait une erreur de guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<td bgcolor="#CCCCCC" onClick="show_info(\'' . $row['infos'] . '\')">'.$row["MaPage"].'</a></td>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Sabotage,
    Désolée de ne pas répondre plus rapidement suite à des bobos.
    Je suis extrêmement heureuse de voir fonctionner ce bout de code.
    Cependant si en PHP,je peux arriver à corriger les erreurs qui s'affichent, par contre je constate qu'en jvs c'est complexe puisque pas d'erreur affichée pour les guillemets .Pouvez-vous me divulguer comment vous avez pû trouver cette erreur? Comment avez-vous procédé puisque Firefox n'a rien décelé? C'est intéressant de pouvoir progresser.
    Une dernière question:
    La phrase "info" est bien affichée au dessus du tableau html, mais je constate que lorsqu'il ya une info un peu plus conséquente(2à3 lignes),il ne s'affiche plus rien lors du clic sur 'MaPage' alors que le texte dans ma bdd colonne info(text et non varchar) est bien présent.
    Est-ce que la div a un contenu limité? ou est-ce dû à un autre problème?
    Sincères remerciements pour votre aide précieuse.
    Claudine

  7. #27
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour la détection du problème, j'ai simplement relu le code HTML obtenu et j'ai vu que l'enchainement de guillemets/apostrophes ne collait pas.

    Le deuxième problème peut être du à des apostrophes/guillemets présents dans le texte justement ; une solution est de convertir la chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<td bgcolor="#CCCCCC" onClick="show_info(\'' . htmlspecialchars($row['infos']) . '\')">'.$row["MaPage"].'</a></td>';
    Ce qu'on a fait la est une presentation très sommaire ; sur le même principe on peut faire plein de choses :
    http://javascript.developpez.com/tut...vec-jquery/#LV
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Sabotage,
    voilà 3 jours que je galère sans trouver de solutions.
    Selon vos dires:Le problème peut être du à des apostrophes/guillemets présents dans le texte justement ;C'est justement ce qui se passe, dès qu'l y a une apostrophe, il refuse d'afficher l'infosans apostrophe dans le texte ,c'est impeccable.
    Mais le code ci-dessous ne fonctionne pas, il ne convertit pas la chaîne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<td bgcolor="#CCCCCC" onClick="show_info(\'' . htmlspecialchars($row['infos']) . '\')">'.$row["MaPage"].'</a></td>';
    Voulez-vous examiner ce code?

    remerciements
    Claudine

  9. #29
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Essaies d'utiliser addslashes à la place de htmlspecialchars

  10. #30
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    saleté de fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlspecialchars($row['infos'], ENT_QUOTES)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Salut,

    Essaies d'utiliser addslashes à la place de htmlspecialchars

    Bien vu ABCIWEB , cela fonctionne à merveille et suis heureuse de pouvoir compter sur votre collaboration avec Sabotage .Sincères remerciements pour votre aide précieuse.
    Claudine

  12. #32
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par sabotage Voir le message
    saleté de fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlspecialchars($row['infos'], ENT_QUOTES)
    Désolé Sabotage, mais cela change rien .Si vous avez une autre solution, je suis preneur car grâce à vous deux, j'apprends énormément de choses que j'approfondis par recherche sur internet.
    Bref ABCIWEB a proposé la fonction addslashes et c'est parfait.

    Heureuse d'avoir pu afficher les infos et de pouvoir les modifier(j'ai réalisé un un formulaire de modification de l'infos pour les clients qui le désirent).
    Cependant, j'ai un nouveau problème que je viens de constater suite à l'introduction de nouveaux clients dans la bdd.
    En effet, mon tableau HTML est bien rempli et lorsque je clic sur ligne ma page plus bas dans le tableau, je suis obligée de remonter pour voir l'affichage de l'info qui se trouve au-dessus du tableau.
    Donc pas du tout pratique surtout que ce tableau peut être conséquent pour chaque profession et
    En conséquence, pourriez- vous m'aider pour afficher la div dans une pop-in ou autre moyen, juste au-dessus de la ligne cliquée? Car le client risque de ne pas s'apercevoir qu'il y a une info en haut du tableau.
    Grand merci Sabotage, car sans vous mon tout dernier projet ne pourrait jamais aboutir.

    Claudine

  13. #33
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Sabotage,
    je suis surprise de ne pas avoir de réponse à ma dernière discussion du 11/02/2015.
    Bref,je me permets de relancer ma dernière demande:

    En effet, mon tableau HTML est bien rempli et lorsque je clic sur une ligne ma page plus bas dans le tableau, je suis obligée de remonter pour voir l'affichage de l'info qui se trouve au-dessus du tableau.
    Donc pas du tout pratique surtout que ce tableau peut être conséquent pour chaque profession et
    En conséquence, pourriez- vous m'aider pour afficher la div dans une pop-in ou autre moyen, juste au-dessus de la ligne cliquée? Car le client risque de ne pas s'apercevoir qu'il y a une info en haut du tableau.
    Grand merci Sabotage.
    Claudine

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour à tous
    J'ai un problème de l'accentuation. Je m'explique:
    Tous les fichiers sont bien utf-8 et si je consulte la base de données, chaque colonne affiche correctement les accents,et...Mais, il n'en est pas de même lorsque j'appelle mon fichier de recherche rapide qui questionne la base de données et restitue le tout dans un tableau html ainsi que les pop-up après clic sur les différentes colonnes. Je constate que l'accentuation n'est pas correcte dans les différentes colonnes du tableau; je ne trouve pas où se trouve l'erreur dans le fichier. Pouvez-vous m'aider à résoudre ce problème? Est-ce dû au remplissage des colonnes du tableau?

    Claudine

  15. #35
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Peut-être quand tu fais ta requête tu ne dis pas de travailler en utf-8. Ou alors tu n'as pas les bonnes entêtes php. Il y a un tuto ici pour ne manquer aucune étape. Il date un peu concernant la bdd puisque aujourd'hui on utilise pdo ou mysqli.

    Pour mysqli tu peux utiliser mysqli_set_charset($connexion,'utf8'); Un exemple d'application ici

    Pour pdo tu peux passer le charset dans les options, ou après pphp 5.3.6 directement dans la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // mode d'erreurs
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
     
    // Indispensable pour ne pas avoir execute qui formate en string avec un tableau en paramètre  (incompatible avec la clause limit)
    $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;
     
    //charset reconnu dans la connexion à partir de php 5.3.6 auquel cas on peut supprimer l'option MYSQL_ATTR_INIT_COMMAND ci-dessous
    //$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";
     
    $connexion  = new PDO('mysql:host='.$hostname.';dbname='.$database.';charset=utf8', $username, $password, $pdo_options);

  16. #36
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour ABCIWEB et grand merci pour vos conseils qui m'ont permis de résoudre les 2 problèmes au niveau des fichiers.
    Cependant, j'ai malheureusement supprimer la table de ma BDD alors que je voulais la vider et un nouveau problème se pose au niveau de l'accentuation.
    Tous mes fichiers s'exécutent correctement avec la bonne accentuation.
    Par contre, au niveau de la BDD, je constate que toutes les données introduites par mon fichier INSCRIPTION ne sont pas correctement orthographiées dans la table. Je ne me souvient plus quelles étaient les caractéristiques initiales de cette table qui était correcte. Que dois-je faire au niveau de la structure, interclassement et attributs pour rectifier l'orthographe.
    claudine

  17. #37
    Invité
    Invité(e)
    Par défaut
    Bonjour Claudine ,
    Citation Envoyé par Claudine Voir le message
    au niveau de la BDD, je constate que toutes les données introduites par mon fichier INSCRIPTION ne sont pas correctement orthographiées dans la table
    1/ Un extrait de la table montrant ce problème serait bienvenu et permettrait de définir ce que tu entends par "pas correctement orthographiées" (comment se présentent les caractères accentués ?)

    2/ Montre-nous le code permettant d'enregistrer les données de ton fichier INSCRIPTION.
    Il ne faut pas utiliser htmlentities() avant l'enregistrement.

    3/ TOUT en UTF-8 signifie les tables en BdD aussi (encodage des tables et colonnes, appel de connexion,...).
    ABCIWEB t'a fourni un lien : Passez à l'UTF-8 sans manquer une étape

    fichier connexion.php, à inclure dans les pages du site avec : require('connexion.php'); :
    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
    <?php
    // ------------------------
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'clients';
    // ------------------------
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass,$db) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
    	// Encodage utf-8
    	mysql_query("SET NAMES 'utf8'"); // PHP4
    	mysql_set_charset('utf8'); 		// PHP5 et +
    // ------------------------

    ENFIN, pour éviter le désagrément de la "perte" malencontreuse d'une table ou d'une BdD entière : faire une(des) SAUVEGARDE(S) !

  18. #38
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour JREAUX62,

    Voici le code permettant d'enregistrer les données du fichier 'confirmation dans la bdd après avoir complété le formulaire 'inscription'(essaiform3listesUnIF.php'):
    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
     
    <?php
    session_start();
     
    if (isset($_POST["modif"]))
    {
    	header('Location: essaiform3listesUnIF.php'	exit;
    }
     
    if (isset($_POST["conf"]))
    {
     
    	// enregistrement des données de session en bdd
    	if (isset($_POST["conf"],$_SESSION['post_form']))
     
    {
    try
           {
    		$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    		$bdd = new PDO('mysql:host=localhost;dbname=clients', 'root', '', $pdo_options);
     
     
    		// Insertion du message à l'aide d'une requête préparée
    		$req = $bdd->prepare('INSERT INTO coordonnees (motdepasse, cat, selection, nom, prenom, numtel,ville,SiteWeb,MaPage,infos,horaire,Ouverture,adresse,mail) VALUES(?, ?, ?,?, ?, ?,?, ?, ?,?,?,?,?,?)');                  
                    $req->execute(array($_SESSION['post_form']['motdepasse'], $_SESSION['post_form']['cat'], $_SESSION['post_form']['selection'], $_SESSION['post_form']['nom'], $_SESSION['post_form']['prenom'], $_SESSION['post_form']['numtel'],  $_SESSION['post_form']['ville'],$_SESSION['post_form']['SiteWeb'], $_SESSION['post_form']['MaPage'],$_SESSION['post_form']['infos'],$_SESSION['post_form']['horaire'],$_SESSION['post_form']['Ouverture'],$_SESSION['post_form']['adresse'],$_SESSION['post_form']['mail']));
     unset($_SESSION['post_form']);
     
    		//redirection vers la page d'index
    		header('Location: Accueil.html');
    		exit;
           }
     catch(Exception $e)
           {
                    die('Erreur : '.$e->getMessage());
           }
    }
    }
    //... (Ne pas oublier le "exit;" après un header Location) 
    ?>[
    Où introduire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_set_charset('utf8');
    car je n'y arrive pas sans erreur.
    D'autre part ci-joint une copie de la bdd pour voir comment se présente les caractères accentués
    Je trouve bizarre qu'il y ait un problème au niveau des formulaires car tout été correct y compris dans la bdd jusqu'au moment où j'ai effacer par mégarde la table coordonnees de la bdd clients. Après reconstruction, elle présente des caractères bizarres, cependant le formulaire de recherche rapide qui questionne cette bdd reçoit les caractères accentués normaux.
    Je vous avoue que je ne comprends pas!

    Merci pour votre collaboration
    Claudine
    Fichiers attachés Fichiers attachés

  19. #39
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    mysql_set_charset() ne s'utilise pas avec PDO.

    ajoute une option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND]  = 'SET NAMES utf8';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #40
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et pendant que tu y es, dans les options il est conseillé de mettre $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false; pour désactiver l'émulateur pdo de php et faire appel à celui du gestionnaire de base de données. Cela évite que les données envoyées dans un tableau soient toutes formatées en string (-> bug sur les clauses limite par exemple), car le sgbdd va se renseigner sur le bon type à employer, ce que ne sait pas faire l'émulateur php.

    Pour info à partit de php 5.3.6 tu peux aussi indiquer le charset dans ta connexion new PDO('mysql:host='.$hostname.';dbname='.$database.';charset=utf8', $username, $password, $pdo_options); si tu préfère plutôt que dans une option. Niveau fonctionnel c'est pareil.

Discussions similaires

  1. [DOM] Afficher du texte après un clic sur une photo
    Par tony7000 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/01/2009, 20h17
  2. Réponses: 3
    Dernier message: 07/09/2007, 13h07
  3. afficher les corrdonnées x et y de la souris sur une image
    Par bubuche87 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/06/2007, 13h28
  4. Réponses: 1
    Dernier message: 25/03/2007, 18h20
  5. BDD double click sur une DBGrid
    Par chamamo dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/10/2006, 15h20

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