par
Cyrano » 23 août 2005, 18:10
Tu as deux erreurs majeures:
- 1 - Des lignes de la requête est mal formée et la concaténation un peu fantaisiste. Ramplace par exemple par ceci:
$retour2 = mysql_query("SELECT * FROM forum WHERE resujet=". $_GET['resujet'] ." ORDER BY timestamp");//voici la ligne concernée par l'erreur
- 2 - Le formulaire en HTML est mis au milieu du PHP alors que tu devrais fermer la balise PHP avant ( ?> ) et la rouvrir ensuite ( <?php >
J'ai modifié ton message en remplaçant [
code] par [
php] : ça ajoute une coloration syntaxique qui devrait te permettre de mieux visualiser le second point
Enfin, ton code est plein d'erreurs d'étourderies, des & à la place de $ sur des variables. Et je n'ai peut-être pas tout vu.
Proposition de code revu et corrigé:
<?
mysql_connect("localhost", "monsite" ,"");//Connection à MySQL
mysql_select_db("progphp_db");//Selection de la base
$retour=mysql_query('SELECT * FROM forum');//$retour contient les information en vrac de la table forum
if(isset($_POST['sujet']) AND $_POST['action'] == nouveau)//Si $_POST['sujet'] existe...
{
$_POST['sujet'] = htmlentities($_POST['sujet'], ENT_QUOTES);//On sécurise les variables
$_POST['sujet'] = nl2br($_POST['sujet']);
$_POST['pseudo'] = htmlentities($_POST['pseudo'], ENT_QUOTES);
$_POST['pseudo'] = nl2br($_POST['pseudo']);
$_POST['post'] = htmlentities($_POST['post'], ENT_QUOTES);
$_POST['post'] = nl2br($_POST['sujet']);
mysql_query("INSERT INTO forum VALUES ('', '". $_POST['sujet'] ."', '". $_POST['sujet'] ."', '". $_POST['pseudo'] ."', '". $_POST['post'] ."', '". time() ."')");
}
if(isset($_POST['sujet']) AND $_POST['action'] == reponse)//Si $_POST['sujet'] existe...
{
$_POST['sujet'] = htmlentities($_POST['sujet'], ENT_QUOTES);//On sécurise les variables
$_POST['sujet'] = nl2br($_POST['sujet']);
$_POST['pseudo'] = htmlentities($_POST['pseudo'], ENT_QUOTES);
$_POST['pseudo'] = nl2br($_POST['pseudo']);
$_POST['post'] = htmlentities($_POST['post'], ENT_QUOTES);
$_POST['post'] = nl2br($_POST['sujet']);
mysql_query("INSERT INTO forum VALUES ('', 'rien', '". $_POST['sujet'] ."', '". $_POST['pseudo'] ."', '". $_POST['post'] ."', '". time() ."')");
}
if(isset($_GET['resujet']))//Si $_GET['resujet'] existe...
{
$retour2 = mysql_query("SELECT * FROM forum WHERE resujet=". $_GET['resujet'] ." ORDER BY timestamp");//voici la ligne concernée par l'erreur
$donnees = mysql_fetch_array($retour2);
?>
<table width="600" border="1" cellspacing="0" bordercolor="#000000" align="center"><!--Tableau de titre-->
<tr bgcolor="#0099FF">
<td><b>Sujet : </b><? echo $donnees['sujet']; ?></td>
</tr>
</table>
<br><center><a href=forum.php>Retourner aux sujets</a></center>
<br>
<?
while($donnees2 = mysql_fetch_array($retour2))
{
?>
<table width="600" border="1" align="center" cellspacing="0" bordercolor="#000000"><!--Tableau affichant les posts-->
<tr>
<td colspan="2" bgcolor="#00CCCC"><b>Ecrit par :</b> <? echo $donnees2['pseudo']; ?></td>
<td width="168" bgcolor="#00FFFF"><b>Le</b> <? echo date('d/m/Y \à H\hi', $donnees2['timestamp']); ?></td>
</tr>
<tr>
<td colspan="3" bgcolor="#0099FF"><? echo $donnees2['post']; ?></td>
</tr>
</table>
<?
}
?>
<form method="post" action="index.php?pageaf=forum" name="formulaire_nouveau_post">
<table width="600" border="1" align="center" cellspacing="0" bordercolor="#000000">
<tr bgcolor="#00CCCC">
<td colspan="3">
<p align="center"><b>Indiquez ici votre pseudo (limité à
15 caractère) :</b></p>
<p align="center">
<input type="text" name="pseudo" maxlength="15">
</p>
</td>
</tr>
<tr bgcolor="#0099FF">
<td colspan="3" width="600">
<div align="center">
<p align="left"><b><font face="Arial, Helvetica, sans-serif" size="2">Ecrivez
ici votre post (<font color="#FFFFFF">Attention : les balises html
ne sont pas autorisées mais vous pouvez passer à la
ligne normalement grâce à la touche entrer de votre clavier.</font>)
:</font></b></p>
<p align="center">
<textarea name="post" cols="110" rows="10"></textarea>
</p>
</div>
</td>
</tr>
<tr bgcolor="#00FFFF">
<td colspan="3">
<div align="center"><b><font face="Arial, Helvetica, sans-serif" color="#FF0000">Attention
:</font><font face="Arial, Helvetica, sans-serif"> Tout Post ne respectant
pas la <a href="charteforum.htm" target="_blank"><font color="#CC3300">charte</font></a>
sera effacé ! ! !<input type="hidden" name="action" value="reponse"></font></b></div>
</td>
</tr>
</table>
</form>
<?php
}
else
{
$retour3 = mysql_query("SELECT * FROM forum WHERE resujet=". $_GET['sujet'] ." AND ". $_GET['sujet'] ." != rien ORDER BY timestamp");
while($donnees3 = mysql_fetch_array($retour3))
{
$retour4 = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM forum WHERE resujet= ". $donnees3['sujet']);
$donnees4 = mysql_fetch_array($retour4);
$donnees4['nbre_entrees'] = $donnees4['nbre_entrees']-1
?>
<table width="600" border="1" cellspacing="0" bordercolor="#000000" align="center">
<tr bgcolor="#0099FF">
<td colspan="4"><a href="index.php?pageaf=forum&resujet=<? echo $donnees3['sujet']; ?>"><? echo $donnees3['sujet']; ?></a></td>
</tr>
<tr>
<td rowspan="3" width="33%" bgcolor="#00CCCC"><b>Posté par : </b><? echo $donnees3['pseudo']; ?></td>
<td rowspan="3" width="33%" bgcolor="#00FFFF"><b>Le </b><? echo date('d/m/Y \à H\hi', $donnees3['timestamp']); ?></td>
<td rowspan="3" width="36%" colspan="2" bgcolor="#00CCCC"><b>Nombre de réponses
: </b><? echo $donnees4['nbre_entrees']; ?></td>
</tr>
<tr> </tr>
<tr> </tr>
</table>
<?
}
?>
<form method="post" action="index.php?pageaf=forum" name="formulaire_nouveau_sujet">
<table width="600" border="1" align="center" cellspacing="0" bordercolor="#000000">
<tr bgcolor="#0099FF">
<td colspan="3">
<p align="center"><b>Entrez ici le titre votre nouveau sujet (limité
à 100 caractères) :</b></p>
<p align="center">
<input type="text" name="sujet" size="100" value="" maxlength="100">
</p>
</td>
</tr>
<tr bgcolor="#00CCCC">
<td colspan="3">
<p align="center"><b>Indiquez ici votre pseudo (limité à
15 caractère) :</b></p>
<p align="center">
<input type="text" name="pseudo" maxlength="15">
</p>
</td>
</tr>
<tr bgcolor="#0099FF">
<td colspan="3" width="600">
<div align="center">
<p align="left"><b><font face="Arial, Helvetica, sans-serif" size="2">Ecrivez
ici votre post (<font color="#FFFFFF">Attention : les balises html
ne sont pas autorisées mais vous pouvez passer à la
ligne normalement grâce à la touche entrer de votre clavier.</font>)
:</font></b></p>
<p align="center">
<textarea name="post" cols="110" rows="10"></textarea>
</p>
</div>
</td>
</tr>
<tr bgcolor="#00FFFF">
<td colspan="3">
<div align="center"><b><font face="Arial, Helvetica, sans-serif" color="#FF0000">Attention
:</font><font face="Arial, Helvetica, sans-serif"> Tout Post ne respectant
pas la <a href="charteforum.htm"><font color="#CC3300">charte</font></a>
sera effacé ! ! !
<input type="hidden" name="action" value="nouveau">
</font></b></div>
</td>
</tr>
</table>
</form>
<?
}
?>
Tu as deux erreurs majeures:
- 1 - Des lignes de la requête est mal formée et la concaténation un peu fantaisiste. Ramplace par exemple par ceci:
[php]$retour2 = mysql_query("SELECT * FROM forum WHERE resujet=". $_GET['resujet'] ." ORDER BY timestamp");//voici la ligne concernée par l'erreur[/php]
- 2 - Le formulaire en HTML est mis au milieu du PHP alors que tu devrais fermer la balise PHP avant ( ?> ) et la rouvrir ensuite ( <?php >
J'ai modifié ton message en remplaçant [[b]code[/b]] par [[b]php[/b]] : ça ajoute une coloration syntaxique qui devrait te permettre de mieux visualiser le second point
Enfin, ton code est plein d'erreurs d'étourderies, des & à la place de $ sur des variables. Et je n'ai peut-être pas tout vu.
Proposition de code revu et corrigé:
[php]<?
mysql_connect("localhost", "monsite" ,"");//Connection à MySQL
mysql_select_db("progphp_db");//Selection de la base
$retour=mysql_query('SELECT * FROM forum');//$retour contient les information en vrac de la table forum
if(isset($_POST['sujet']) AND $_POST['action'] == nouveau)//Si $_POST['sujet'] existe...
{
$_POST['sujet'] = htmlentities($_POST['sujet'], ENT_QUOTES);//On sécurise les variables
$_POST['sujet'] = nl2br($_POST['sujet']);
$_POST['pseudo'] = htmlentities($_POST['pseudo'], ENT_QUOTES);
$_POST['pseudo'] = nl2br($_POST['pseudo']);
$_POST['post'] = htmlentities($_POST['post'], ENT_QUOTES);
$_POST['post'] = nl2br($_POST['sujet']);
mysql_query("INSERT INTO forum VALUES ('', '". $_POST['sujet'] ."', '". $_POST['sujet'] ."', '". $_POST['pseudo'] ."', '". $_POST['post'] ."', '". time() ."')");
}
if(isset($_POST['sujet']) AND $_POST['action'] == reponse)//Si $_POST['sujet'] existe...
{
$_POST['sujet'] = htmlentities($_POST['sujet'], ENT_QUOTES);//On sécurise les variables
$_POST['sujet'] = nl2br($_POST['sujet']);
$_POST['pseudo'] = htmlentities($_POST['pseudo'], ENT_QUOTES);
$_POST['pseudo'] = nl2br($_POST['pseudo']);
$_POST['post'] = htmlentities($_POST['post'], ENT_QUOTES);
$_POST['post'] = nl2br($_POST['sujet']);
mysql_query("INSERT INTO forum VALUES ('', 'rien', '". $_POST['sujet'] ."', '". $_POST['pseudo'] ."', '". $_POST['post'] ."', '". time() ."')");
}
if(isset($_GET['resujet']))//Si $_GET['resujet'] existe...
{
$retour2 = mysql_query("SELECT * FROM forum WHERE resujet=". $_GET['resujet'] ." ORDER BY timestamp");//voici la ligne concernée par l'erreur
$donnees = mysql_fetch_array($retour2);
?>
<table width="600" border="1" cellspacing="0" bordercolor="#000000" align="center"><!--Tableau de titre-->
<tr bgcolor="#0099FF">
<td><b>Sujet : </b><? echo $donnees['sujet']; ?></td>
</tr>
</table>
<br><center><a href=forum.php>Retourner aux sujets</a></center>
<br>
<?
while($donnees2 = mysql_fetch_array($retour2))
{
?>
<table width="600" border="1" align="center" cellspacing="0" bordercolor="#000000"><!--Tableau affichant les posts-->
<tr>
<td colspan="2" bgcolor="#00CCCC"><b>Ecrit par :</b> <? echo $donnees2['pseudo']; ?></td>
<td width="168" bgcolor="#00FFFF"><b>Le</b> <? echo date('d/m/Y \à H\hi', $donnees2['timestamp']); ?></td>
</tr>
<tr>
<td colspan="3" bgcolor="#0099FF"><? echo $donnees2['post']; ?></td>
</tr>
</table>
<?
}
?>
<form method="post" action="index.php?pageaf=forum" name="formulaire_nouveau_post">
<table width="600" border="1" align="center" cellspacing="0" bordercolor="#000000">
<tr bgcolor="#00CCCC">
<td colspan="3">
<p align="center"><b>Indiquez ici votre pseudo (limité à
15 caractère) :</b></p>
<p align="center">
<input type="text" name="pseudo" maxlength="15">
</p>
</td>
</tr>
<tr bgcolor="#0099FF">
<td colspan="3" width="600">
<div align="center">
<p align="left"><b><font face="Arial, Helvetica, sans-serif" size="2">Ecrivez
ici votre post (<font color="#FFFFFF">Attention : les balises html
ne sont pas autorisées mais vous pouvez passer à la
ligne normalement grâce à la touche entrer de votre clavier.</font>)
:</font></b></p>
<p align="center">
<textarea name="post" cols="110" rows="10"></textarea>
</p>
</div>
</td>
</tr>
<tr bgcolor="#00FFFF">
<td colspan="3">
<div align="center"><b><font face="Arial, Helvetica, sans-serif" color="#FF0000">Attention
:</font><font face="Arial, Helvetica, sans-serif"> Tout Post ne respectant
pas la <a href="charteforum.htm" target="_blank"><font color="#CC3300">charte</font></a>
sera effacé ! ! !<input type="hidden" name="action" value="reponse"></font></b></div>
</td>
</tr>
</table>
</form>
<?php
}
else
{
$retour3 = mysql_query("SELECT * FROM forum WHERE resujet=". $_GET['sujet'] ." AND ". $_GET['sujet'] ." != rien ORDER BY timestamp");
while($donnees3 = mysql_fetch_array($retour3))
{
$retour4 = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM forum WHERE resujet= ". $donnees3['sujet']);
$donnees4 = mysql_fetch_array($retour4);
$donnees4['nbre_entrees'] = $donnees4['nbre_entrees']-1
?>
<table width="600" border="1" cellspacing="0" bordercolor="#000000" align="center">
<tr bgcolor="#0099FF">
<td colspan="4"><a href="index.php?pageaf=forum&resujet=<? echo $donnees3['sujet']; ?>"><? echo $donnees3['sujet']; ?></a></td>
</tr>
<tr>
<td rowspan="3" width="33%" bgcolor="#00CCCC"><b>Posté par : </b><? echo $donnees3['pseudo']; ?></td>
<td rowspan="3" width="33%" bgcolor="#00FFFF"><b>Le </b><? echo date('d/m/Y \à H\hi', $donnees3['timestamp']); ?></td>
<td rowspan="3" width="36%" colspan="2" bgcolor="#00CCCC"><b>Nombre de réponses
: </b><? echo $donnees4['nbre_entrees']; ?></td>
</tr>
<tr> </tr>
<tr> </tr>
</table>
<?
}
?>
<form method="post" action="index.php?pageaf=forum" name="formulaire_nouveau_sujet">
<table width="600" border="1" align="center" cellspacing="0" bordercolor="#000000">
<tr bgcolor="#0099FF">
<td colspan="3">
<p align="center"><b>Entrez ici le titre votre nouveau sujet (limité
à 100 caractères) :</b></p>
<p align="center">
<input type="text" name="sujet" size="100" value="" maxlength="100">
</p>
</td>
</tr>
<tr bgcolor="#00CCCC">
<td colspan="3">
<p align="center"><b>Indiquez ici votre pseudo (limité à
15 caractère) :</b></p>
<p align="center">
<input type="text" name="pseudo" maxlength="15">
</p>
</td>
</tr>
<tr bgcolor="#0099FF">
<td colspan="3" width="600">
<div align="center">
<p align="left"><b><font face="Arial, Helvetica, sans-serif" size="2">Ecrivez
ici votre post (<font color="#FFFFFF">Attention : les balises html
ne sont pas autorisées mais vous pouvez passer à la
ligne normalement grâce à la touche entrer de votre clavier.</font>)
:</font></b></p>
<p align="center">
<textarea name="post" cols="110" rows="10"></textarea>
</p>
</div>
</td>
</tr>
<tr bgcolor="#00FFFF">
<td colspan="3">
<div align="center"><b><font face="Arial, Helvetica, sans-serif" color="#FF0000">Attention
:</font><font face="Arial, Helvetica, sans-serif"> Tout Post ne respectant
pas la <a href="charteforum.htm"><font color="#CC3300">charte</font></a>
sera effacé ! ! !
<input type="hidden" name="action" value="nouveau">
</font></b></div>
</td>
</tr>
</table>
</form>
<?
}
?>[/php]