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

PHP & Base de données Discussion :

Insérer résultat d'une requête : problème de quote


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Insérer résultat d'une requête : problème de quote
    Bonjour,

    J'ai une page sur mon site qui effectue une requete sur ma BDD et remplis ensuite un formulaire (C'est une page pour modifier les données entrées). Voici le code 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
     
    $nb = $_POST['nbtrans'];
     
     
     
     
    	// on se connecte à MySQL
     
     
    // on sélectionne la base
     
     
     
    // on crée la requête SQL
    $sql = "SELECT nombre, nomdupro, lienimage, liensite, longueur, hauteur, type FROM mediation WHERE nombre='".$nb."'"; 
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    $nbreLignes = mysql_num_rows($req);
    if(!($nbreLignes ==0)){
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
        {
        // on affiche les informations de l'enregistrement en cours
     
       echo '<form   method="post" action="updatePro.php" ><p align="center"><a href="', $data['liensite'],'"><img src="', $data['lienimage'],'" width="', $data['longueur'],'" height="', $data['hauteur'],'"></a></p> <table width="460" align="center">   
    <tr><td>Nom</td><td align="center" width="250" valign="center" ><font color="#091243" face="Times New Roman" front-weighy="bold"><span
     style="font-size: 14pt;"><b> &nbsp;&nbsp;<input type="text" name="nomdupro" value=\'',$data['nomdupro'],'\' size="20"></b></span></font> </td></tr>
    <tr><td>Lien site</td><td align="center" width="250" valign="center" ><font color="#091243" face="Times New Roman" front-weighy="bold"><span
     style="font-size: 14pt;"><b> &nbsp;&nbsp;<input type="text" name="liensite" value=\'',$data['liensite'],'\' size="20"></b></span></font> </td></tr>
    <tr><td>Lien Image</td><td align="center" width="250" valign="center" ><font color="#091243" face="Times New Roman" front-weighy="bold"><span
     style="font-size: 14pt;"><b> &nbsp;&nbsp;<input type="text" name="lienimage" value=\'',$data['lienimage'],'\' size="20"></b></span></font> </td></tr>
    <tr><td>Longueur (px)</td><td align="center" width="250" valign="center" ><font color="#091243" face="Times New Roman" front-weighy="bold"><span
     style="font-size: 14pt;"><b> &nbsp;&nbsp;<input type="text" name="longueur" value=\'',$data['longueur'],'\' size="20"></b></span></font> </td></tr>
    <tr><td>Hauteur (px)</td><td align="center" width="250" valign="center" ><font color="#091243" face="Times New Roman" front-weighy="bold"><span
     style="font-size: 14pt;"><b> &nbsp;&nbsp;<input type="text" name="hauteur" value=\'',$data['hauteur'],'\' size="20"></b></span></font> </td></tr>
    <tr><td>Type (c pour cybermarchand, f pour FAI, t pour téléphonie)</td><td align="center" width="250" valign="center" ><font color="#091243" face="Times New Roman" front-weighy="bold"><span
     style="font-size: 14pt;"><b> &nbsp;&nbsp;<input type="text" name="type" value=\'',$data['type'],'\' size="20"></b></span></font> </td></tr>
    
      </tr> <table  align="center">  
    <tr><td height="30" align="center" valign="bottom"><input type="submit" value="Valider modification" name="envoyer"><input type="hidden"  name=nbtrans value=', $data['nombre'],' size="12"></form></td></tr>
    </table>';
     
     
    }
    }
    else{
    echo '<p> Erreur : Requete SQL non effectuée. Merci de contacter le webmaster.  </p>';
    }
    // on ferme la connexion à mysql
    mysql_close(); 
     
    ?>
    Lorsque le texte "nomdupro" contient une apostrophe, le texte affiché dans le formulaire est tronqué (on ne voit pas la partie après ' ).

    Exemple : Si nomdupro = test d'avril dans ma base de do. Lorsque j'appelle la page modifier, il y aura dans la case du formulaire : test d

    Lorsque le texte présent dans nomdupro ne contient pas d'apostrophe, tout fonctionne bien.

    Comment puis-je corriger ce problème ?

    Merci de votre aide.

  2. #2
    Inscrit
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Points : 96
    Points
    96
    Par défaut
    l'apostrophe est un caractère d'échappement.
    addslashes est une fonction permettant de ne pas les prendre en compte


    Exemple #1 Exemple avec addslashes()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $str = "Votre nom est-il O'reilly ?";
     
    // Affiche : Votre nom est-il O\'reilly ?
    echo addslashes($str);
    ?>
    Après faudra sans doute utiliser stripslashes pour retirer le caractère "\"...

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Salut,

    Avant toute chose je me demande si tu as testé ton code . Une virgule comme opérateur de concaténation en PHP je connaissais pas et ça m'étonne que ça fonctionne. Il doit avoir des tonnes de parse error à l'exécution de ton code.
    Ensuite, je regarde ton code HTML et là il y a certaine incohérence (que j'ai pas modifié car ce serait trop long). Par exemple, je vois front-weighy="bold". Je connaissais pas et je dois pas être le seul vu que tu utilises après des balises <b> pour pouvoir mettre en gras. Puis, un table peut être contenu dans un form mais le mélange <form><table></form></table> non.
    Enfin pour tout ce qui est HTML/CSS, je connais pas ton Doctype mais il faudrait certainement revoir certaines choses. Si tu veux de l'aide, il faudrait passer sur les forum HTML / DHTML / XHTML et CSS et on se fera un plaisir de t'aider.

    Revenons à la modification de ton code. Moi j'aimerai comprendre pourquoi utiliser un simple quote pour délimiter ton attribut value (c'est surtout ça la source d'erreur)s. Pourquoi ne pas faire ainsi :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    <?php
        $nb = $_POST['nbtrans'];
        // on se connecte à MySQL
     
     
        // on sélectionne la base
     
     
     
        // on crée la requête SQL
        $sql = "SELECT nombre, nomdupro, lienimage, liensite, longueur, hauteur, type FROM mediation WHERE nombre='".$nb."'";
     
        // on envoie la requête
        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        $nbreLignes = mysql_num_rows($req);
        if(!($nbreLignes ==0))
        {
            // on fait une boucle qui va faire un tour pour chaque enregistrement
            while($data = mysql_fetch_assoc($req))
            {
            ?>
    <form method="post" action="updatePro.php">
        <p align="center">
            <a href="<?php echo $data['liensite']; ?>"><img src="<?php echo $data['lienimage']; ?>" width="<?php echo $data['longueur']; ?>" height="<?php echo $data['hauteur']; ?>"></a>
        </p>
        <table width="460" align="center">
            <tr>
                <td>Nom</td>
                <td align="center" width="250" valign="center">
                    <font color="#091243" face="Times New Roman" front-weighy="bold">
                        <span style="font-size: 14pt;">
                            <b> &nbsp;&nbsp;<input type="text" name="nomdupro" value="<?php echo $data['nomdupro']; ?>" size="20"></b>
                        </span>
                    </font>
                </td>
            </tr>
            <tr>
                <td>Lien site</td>
                <td align="center" width="250" valign="center">
                    <font color="#091243" face="Times New Roman" front-weighy="bold">
                        <span style="font-size: 14pt;">
                            <b> &nbsp;&nbsp;<input type="text" name="liensite" value="<?php echo $data['liensite']; ?>" size="20"></b>
                        </span>
                    </font>
                </td>
            </tr>
            <tr>
                <td>Lien Image</td>
                <td align="center" width="250" valign="center">
                    <font color="#091243" face="Times New Roman" front-weighy="bold">
                        <span style="font-size: 14pt;">
                            <b> &nbsp;&nbsp;<input type="text" name="lienimage" value="<?php echo $data['lienimage']; ?>" size="20"></b>
                        </span>
                    </font>
                </td>
            </tr>
            <tr>
                <td>Longueur (px)</td>
                <td align="center" width="250" valign="center">
                    <font color="#091243" face="Times New Roman" front-weighy="bold">
                        <span style="font-size: 14pt;">
                            <b> &nbsp;&nbsp;<input type="text" name="longueur" value="<?php echo $data['longueur']; ?>" size="20"></b>
                        </span>
                    </font>
                </td>
            </tr>
            <tr>
                <td>Hauteur (px)</td>
                <td align="center" width="250" valign="center">
                    <font color="#091243" face="Times New Roman" front-weighy="bold">
                        <span style="font-size: 14pt;">
                            <b> &nbsp;&nbsp;<input type="text" name="hauteur" value="<?php echo $data['hauteur']; ?>" size="20"></b>
                        </span>
                    </font>
                </td>
            </tr>
            <tr>
                <td>Type (c pour cybermarchand, f pour FAI, t pour téléphonie)</td>
                <td align="center" width="250" valign="center">
                    <font color="#091243" face="Times New Roman" front-weighy="bold">
                        <span style="font-size: 14pt;">
                            <b> &nbsp;&nbsp;<input type="text" name="type" value="<?php echo $data['type']; ?>" size="20"></b>
                        </span>
                    </font>
                </td>
            </tr>
            <tr>
                <td height="30" align="center" valign="bottom" colspan="2">
                    <input type="submit" value="Valider modification" name="envoyer">
                    <input type="hidden"  name=nbtrans value="<?php echo $data['nombre']; ?>" size="12">
                </td>
            </tr>
        </table>
    </form>
            <?php
            }
        }
        else
        {
        ?>
    <p> Erreur : Requete SQL non effectuée. Merci de contacter le webmaster.</p>
        <?php
        }
     
        // on ferme la connexion à mysql
        mysql_close();
     
    ?>
    Pourquoi j'ai pas utilisé ton grand echo ? La réponse est ici

    Je pense que j'ai tout dit

    EDIT : Ah non. Il faudrait éventuellement utiliser un htmlentities sur chaque echo

Discussions similaires

  1. [MySQL] PHP & MySQL > insérer résultat d'une requête dans un tableau
    Par Mousshaker dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/07/2014, 17h20
  2. Insérer résultat d'une requéte
    Par ange_dragon dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/06/2007, 11h51
  3. [MySQL] problème de résultat avec une requête
    Par jexl dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/03/2006, 23h23
  4. Insérer le rsultat d'une requète dans un table
    Par MadMarc dans le forum Access
    Réponses: 4
    Dernier message: 25/01/2006, 12h09
  5. [SQL] Problème de résultat avec une requête
    Par raptorman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/01/2006, 17h16

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