Page 1 sur 1

Le Php n'aime pas les apostrophes ?

Posté : 01 mai 2005, 16:47
par adameteve
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

Posté : 01 mai 2005, 16:58
par Cyrano
La réponse ==> ICI

Posté : 01 mai 2005, 17:56
par adameteve
Merci ! :wink:

Posté : 01 mai 2005, 18:15
par adameteve
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

Posté : 01 mai 2005, 18:19
par Cyrano
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);

Posté : 01 mai 2005, 20:21
par adameteve
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

Posté : 01 mai 2005, 20:45
par Cyrano
Il y a un problème avec ta requête : affiche le bout de code correspondant et on pourra te répondre

Posté : 01 mai 2005, 21:50
par adameteve
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

Posté : 01 mai 2005, 21:52
par Cyrano
J'attendais pa cette partie du code et en fin de compte, je ne sais pas si ça marche ou pas ton truc ??

Posté : 01 mai 2005, 22:04
par adameteve
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

Posté : 01 mai 2005, 23:46
par pjl
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 ?

Posté : 02 mai 2005, 00:13
par Invité
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

Posté : 02 mai 2005, 08:20
par Damien
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.