Le Php n'aime pas les apostrophes ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Le Php n'aime pas les apostrophes ?

par Damien » 02 mai 2005, 08:20

Remplaces
$recordID = $_GET['recordID']; 
par
$recordID = mysql_real_escape_string($_GET['recordID']); 
Et fais un fix_magic_quotes(); en haut de details.php (après avoir fais un include d'un script où il y a le code de la fonction du tutorial biensûr), pour être compatible avec les serveurs où les magic quotes sont activées.

Avant de faire appel à une variable dans une requete, il te faudra toujours faire un mysql_real_escape_string() dessus.

par Invité » 02 mai 2005, 00:13

C'est ce que j'avais fait dans mon message précédent, mais apparemment je n'avais pas sélectionné le bon code.

Code : Tout sélectionner

J'attendais pa cette partie du code et en fin de compte, je ne sais pas si ça marche ou pas ton truc ??
Alors comme je n'y connais pas grand chose, j'ai mis la totalité du code. Je sais que c'est galère, mais je ne sais pas comment faire autrement :oops: .

Adam

par pjl » 01 mai 2005, 23:46

pour le code :
1. il existe la balise PHP pour le mettre en forme, ca donne du code plus agréable à lire ;
2. est-ce que tout ce code est vraiment utile à la résolution de ton PB, les styles par ex ?

par adameteve » 01 mai 2005, 22:04

Alors je te mets le code des 2 pages :

Page Liste.php :
<?php require_once('../Connections/connexionDvdRay.php'); ?>
<?php
mysql_select_db($database_connexionDvdRay, $connexionDvdRay);
$query_rsListeSimpleDVD = "SELECT * FROM listedvd ORDER BY titre ASC";
$rsListeSimpleDVD = mysql_query($query_rsListeSimpleDVD, $connexionDvdRay) or die(mysql_error());
$row_rsListeSimpleDVD = mysql_fetch_assoc($rsListeSimpleDVD);
$totalRows_rsListeSimpleDVD = mysql_num_rows($rsListeSimpleDVD);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><!-- InstanceBegin template="/Templates/AccueilDvd.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Liste Simple DVD</title>
<!-- InstanceEndEditable --><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	background-color: #000000;
}
.Style8 {
	color: #999999;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 14px;
	font-weight: bold;
}
.Style9 {
	color: #FFFFFF;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
}
.Style15 {font-size: 14px; color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; }
.Style17 {color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; }
-->
</style>
<!-- InstanceBeginEditable name="head" -->
<style type="text/css">
<!--
.Style19 {font-size: 10px}
-->
</style>
<style type="text/css">
<!--
body {
	background-color: #000000;
}
-->
</style>
<style type="text/css">
<!--
.Style20 {color: #000000}
-->
</style>
<style type="text/css">
<!--
.Style21 {color: #FFFF00}
-->
</style>
<style type="text/css">
<!--
.Style22 {color: #FFFFFF}
-->
</style>
<style type="text/css">
<!--
.Style23 {
	font-size: 12px;
	color: #FFFFFF;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
-->
</style>
<!-- InstanceEndEditable -->
<link href="../DvdCdRay.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="800" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th width="150" height="55" rowspan="2" align="left" valign="top" scope="col"><a href="../index.php"><img src="../images/LogoDvdCd.jpg" width="150" height="55" border="0"></a></th>
    <th align="center" valign="top" scope="col"><table width="500" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <th height="10" colspan="5" scope="col"></th>
        </tr>
      <tr align="center" valign="middle">
        <td><span class="Style15"><a href="Ajout.php">Ajout</a></span></td>
        <td><span class="Style17"><a href="Modif.php">Modif</a></span></td>
        <td><span class="Style17"><a href="Suppr.php">Supp</a></span></td>
        <td><span class="Style17"><a href="Liste.php">Liste</a></span></td>
        <td><span class="Style15">Recherche</span></td>
      </tr>
    </table></th>
  </tr>
  <tr>
    <th align="center" valign="bottom" scope="col"><span class="Style8">ESPACE PUBLIC</span></th>
  </tr>
</table>
<br>
<!-- InstanceBeginEditable name="AccueilDvd" -->
<table width="800" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col">&nbsp;
      <table width="700" border="0" align="center" cellpadding="3" cellspacing="3">
        <tr align="center" valign="top">
          <td height="40" colspan="3"><span class="CSS_DvdCdRay Style19 Style22"><strong>Il y a <span class="Style23"><?php echo $totalRows_rsListeSimpleDVD ?> </span> DVD</strong></span></td>
        </tr>
        <tr bgcolor="#333333">
          <td height="20"><span class="Style21 Style19 CSS_DvdCdRay"><strong>TITRE</strong></span></td>
          <td><span class="Style21 Style19 CSS_DvdCdRay"><strong>GENRE</strong></span></td>
          <td><span class="Style21 Style19 CSS_DvdCdRay"><strong>DUREE</strong></span></td>
        </tr>
        <?php do { ?>
        <tr bgcolor="#333333">
          <td height="30" align="left" valign="middle"> <a href="Details.php?recordID=<?php echo $row_rsListeSimpleDVD['titre']; ?>" class="Style19 CSS_DvdCdRay Style20 Style22"> </a><a href="Details.php?recordID=<?php echo $row_rsListeSimpleDVD['titre']; ?>" class="Style19 CSS_DvdCdRay Style20 Style22"><span class="Style19"><strong><?php echo $row_rsListeSimpleDVD['titre']; ?></strong></span></a><a href="Details.php?recordID=<?php echo $row_rsListeSimpleDVD['titre']; ?>" class="Style19 CSS_DvdCdRay Style20 Style22"><span class="Style19"></span>&nbsp; </a> </td>
          <td> <span class="Style19 CSS_DvdCdRay Style22"><?php echo $row_rsListeSimpleDVD['genre']; ?></span></td>
          <td> <span class="Style19 CSS_DvdCdRay Style22"><?php echo $row_rsListeSimpleDVD['duree']; ?> </span></td>
        </tr>
        <?php } while ($row_rsListeSimpleDVD = mysql_fetch_assoc($rsListeSimpleDVD)); ?>
      </table>
      <br>
    Enregistrements Total </th>
  </tr>
</table>
<!-- InstanceEndEditable -->
</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result($rsListeSimpleDVD);
?>


Page Details.php :
<?php require_once('../Connections/connexionDvdRay.php'); ?><?php
mysql_select_db($database_connexionDvdRay, $connexionDvdRay);
$recordID = $_GET['recordID'];
$query_DetailRS1 = "SELECT * FROM listedvd WHERE titre = '$recordID' ORDER BY titre ASC";
$DetailRS1 = mysql_query($query_DetailRS1, $connexionDvdRay) or die(mysql_error());
$row_DetailRS1 = mysql_fetch_assoc($DetailRS1);
$totalRows_DetailRS1 = mysql_num_rows($DetailRS1);
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><!-- InstanceBegin template="/Templates/AccueilDvd.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>D&eacute;tails DVD</title>
<!-- InstanceEndEditable --><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	background-color: #000000;
}
.Style8 {
	color: #999999;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 14px;
	font-weight: bold;
}
.Style9 {
	color: #FFFFFF;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
}
.Style15 {font-size: 14px; color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; }
.Style17 {color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; }
-->
</style>
<!-- InstanceBeginEditable name="head" -->
<style type="text/css">
<!--
.Style19 {font-size: 10px}
-->
</style>
<style type="text/css">
<!--
.Style20 {color: #FFFFFF}
-->
</style>
<style type="text/css">
<!--
.Style21 {color: #FFFF00}
-->
</style>
<!-- InstanceEndEditable -->
<link href="../DvdCdRay.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="800" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th width="150" height="55" rowspan="2" align="left" valign="top" scope="col"><a href="../index.php"><img src="../images/LogoDvdCd.jpg" width="150" height="55" border="0"></a></th>
    <th align="center" valign="top" scope="col"><table width="500" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <th height="10" colspan="5" scope="col"></th>
        </tr>
      <tr align="center" valign="middle">
        <td><span class="Style15"><a href="Ajout.php">Ajout</a></span></td>
        <td><span class="Style17"><a href="Modif.php">Modif</a></span></td>
        <td><span class="Style17"><a href="Suppr.php">Supp</a></span></td>
        <td><span class="Style17"><a href="Liste.php">Liste</a></span></td>
        <td><span class="Style15">Recherche</span></td>
      </tr>
    </table></th>
  </tr>
  <tr>
    <th align="center" valign="bottom" scope="col"><span class="Style8">ESPACE PUBLIC</span></th>
  </tr>
</table>
<br>
<!-- InstanceBeginEditable name="AccueilDvd" -->
<table width="800" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th align="left" valign="top" scope="col"> 
      <table border="1" cellpadding="0" cellspacing="0" bordercolor="#333333">
        <tr>
          <th scope="col"><table border="0" align="left" cellpadding="10" cellspacing="3">
            <tr bgcolor="#333333">
              <td width="100" align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style20 Style21">TITRE</span></td>
              <td width="650" align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['titre']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">ACTEURS, ACTRICES </span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['acteursactrices']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">REALISATEUR</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['realisateur']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">SCENARISTE</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['scenariste']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">MUSIQUE</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['musique']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">ANNEE</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['annee']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">PAYS</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['pays']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">RESUME</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['resume']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">DISQUE</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['disque']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">GENRE</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['genre']; ?> </span></td>
            </tr>
            <tr bgcolor="#333333">
              <td align="left" valign="middle"><span class="CSS_DvdCdRay Style19 Style21">DUREE</span></td>
              <td align="left" valign="middle"><span class="Style20 Style19 CSS_DvdCdRay"><?php echo $row_DetailRS1['duree']; ?> </span></td>
            </tr>
            
          </table></th>
        </tr>
      </table></th>
  </tr>
</table>
<br>
<table width="800" height="100" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <th scope="col"><table width="50" height="50" border="1" cellpadding="6" cellspacing="10" bordercolor="#515151" bgcolor="#333333">
      <tr>
        <th scope="col"><img src="../images/JaqTitanic.jpg" width="200" height="283"></th>
      </tr>
    </table></th>
  </tr>
</table>
<!-- InstanceEndEditable -->
</body>
<!-- InstanceEnd --></html><?php
mysql_free_result($DetailRS1);
?>

Veux-tu d'autres parties de code ?

Merci, :wink:
Adam

par Cyrano » 01 mai 2005, 21:52

J'attendais pa cette partie du code et en fin de compte, je ne sais pas si ça marche ou pas ton truc ??

par adameteve » 01 mai 2005, 21:50

Voici le code de ma page Liste.php :

Code : Tout sélectionner

<table width="700" border="0" align="center" cellpadding="3" cellspacing="3"> <tr align="center" valign="top"> <td height="40" colspan="3"><span class="CSS_DvdCdRay Style19 Style22"><strong>Il y a <span class="Style23"><?php echo $totalRows_rsListeSimpleDVD ?> </span> DVD</strong></span></td> </tr> <tr bgcolor="#333333"> <td height="20"><span class="Style21 Style19 CSS_DvdCdRay"><strong>TITRE</strong></span></td> <td><span class="Style21 Style19 CSS_DvdCdRay"><strong>GENRE</strong></span></td> <td><span class="Style21 Style19 CSS_DvdCdRay"><strong>DUREE</strong></span></td> </tr> <?php do { ?> <tr bgcolor="#333333"> <td height="30" align="left" valign="middle"> <a href="Details.php?recordID=<?php echo $row_rsListeSimpleDVD['titre']; ?>" class="Style19 CSS_DvdCdRay Style20 Style22"> </a><a href="Details.php?recordID=<?php echo $row_rsListeSimpleDVD['titre']; ?>" class="Style19 CSS_DvdCdRay Style20 Style22"><span class="Style19"><strong><?php echo $row_rsListeSimpleDVD['titre']; ?></strong></span></a><a href="Details.php?recordID=<?php echo $row_rsListeSimpleDVD['titre']; ?>" class="Style19 CSS_DvdCdRay Style20 Style22"><span class="Style19"></span>&nbsp; </a> </td> <td> <span class="Style19 CSS_DvdCdRay Style22"><?php echo $row_rsListeSimpleDVD['genre']; ?></span></td> <td> <span class="Style19 CSS_DvdCdRay Style22"><?php echo $row_rsListeSimpleDVD['duree']; ?> </span></td> </tr> <?php } while ($row_rsListeSimpleDVD = mysql_fetch_assoc($rsListeSimpleDVD)); ?> </table>
Merci à vous ! :D :wink:
Adam

par Cyrano » 01 mai 2005, 20:45

Il y a un problème avec ta requête : affiche le bout de code correspondant et on pourra te répondre

par adameteve » 01 mai 2005, 20:21

Je suis désolé, mais je comprends que dalle... :oops: :cry:
Je suis vraiment désolé d'être aussi nul.

Pour être concret, j'ai ma page Liste.php qui affiche la liste de mes DVD. Il y a 3 champs : Titre, Genre et Durée

En cliquant sur le titre, j'ouvre ma page Details.php. C'est cette page qui affiche le message d'erreur : "Erreur de syntaxe près de 'eldorado' ORDER BY titre ASC' à la ligne 1"

J'utilise les fonctions de Dreamweaver MX 2004 et je ne connais donc très peu le code, même si j'essaie de suivre au fur et à mesure que j'avance dans l'étude du php.

- Où dois-je entrer le code correctif ? Dans ma page Liste.php ? Ou dans ma page Details.php ?

- Et puis que dois-je entrer exactement ? Le \ ? Ou stripslaches() ?


Merci de ton aide, :wink:
Adam

par Cyrano » 01 mai 2005, 18:19

Fonctionnement : tu dois "échapper" les apostrophes dans ton interface web (le site) pas dans PhpMyAdmin qui est déjà prévu pour le faire.

Pour afficher par la suite sans les "\" dans tes pages, tu dois traiter les variables avec stripslaches():

Donc, tu enregistres addslaches($ta_variable);
Tu affiches stripslaches($ta_variable);

par adameteve » 01 mai 2005, 18:15

J'ai bien essayé de rentrer un \ dans le titre d'un DVD (ex : La route d\'Eldorado), dans PhpMyAdmin, mais ça marche pô :oops: . J'ai encore rien compris !

Dans mon navigateur, non seulement on voit le \, mais en plus dans la page détails aucune information concernant le DVD n'est affichée, pas même le titre.

Faut-il placer le \ lorsque je saisi le titre dans PhpMyAdmin ou dans ma page Ajout.php ? Ou dois-je le saisir ailleurs, dans le code de ma page par exemple ?

Merci encore,
Adam

par adameteve » 01 mai 2005, 17:56

Merci ! :wink:

par Cyrano » 01 mai 2005, 16:58

La réponse ==> ICI

Le Php n'aime pas les apostrophes ?

par adameteve » 01 mai 2005, 16:47

Bonjour à tous, :D

Je crée un site perso en php dont la bdd répertorie mes DVD.

Mais j'ai un problème au niveau de l'affichage en détail. Lorsque je clique sur le titre d'un DVD qui contient un apostrophe (par ex : La route d'Eldorado), la page Details.php affiche ce message d'erreur : "Erreur de syntaxe près de 'eldorado' ORDER BY titre ASC' à la ligne 1"

Dans PhpMyAdmin, le champs 'titre' est paramétré de cette façon :
titre - varchar(100) - latin1_swedish_ci

Que dois-je modifier pour corriger cette erreur ?

Merci d'avance, :wink:
Adam