Une requete mysql qui ne fonctionne pas...

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 : Une requete mysql qui ne fonctionne pas...

par Tonio 76 » 27 août 2005, 16:59

Merci beaucoup à tous ce qui m'on aidé, mon petit forum fonctionne maintenant très bien ! ! ! :D

par smarties » 26 août 2005, 14:02

Code : Tout sélectionner

$reponse = mysql_query("SELECT * FROM forum WHERE resujet='". $sujet ."' ORDER BY ID");
Encore un problème de quotes :wink:

par ouckileou » 26 août 2005, 13:49

Affiche le code SQL de la requête qui est générée, et exécute le directement dans phpMyAdmin, tu verras déjà si tu récupères des résultats...

Affichage bloucle

par Tonio 76 » 26 août 2005, 13:47

Merci, j'ai debugé les erreur mais je n'arrive pas a afficher la boucle...

par mere-teresa » 26 août 2005, 12:41

Il manque surtout le dollar au nom de la variable, mec !

$reponse = mysql_query('SELECT * FROM forum WHERE resujet=' . $sujet . ' ORDER BY ID'); //ligne 28

par ouckileou » 26 août 2005, 12:34

pas plus d'infos ?

si c'est une erreur PHP, il y a un message
si c'est une erreur SQL, tu obtiens aussi un message comme ça :
reponse = mysql_query('SELECT * FROM forum WHERE resujet=' . $sujet . ' ORDER BY ID') or die(mysql_error());
mais il manque encore des quotes autour de $sujet
des quotes dans le SQL, pas celle qui servent à délimiter la chaine
reponse = mysql_query("SELECT * FROM forum WHERE resujet='" . $sujet . "' ORDER BY ID") or die(mysql_error());

Page deux

par Tonio 76 » 26 août 2005, 12:26

Merci à tous, la page fonctionne bien mais maintenant, je m'apperçois que j'ai une erreur sur la page deux (voireforum.php)
Elle concerne la ligne 28 mais je n'ai pas plus d'info...
<?
mysql_connect("localhost", "progphp", "");
mysql_select_db("progphp_db");
if(isset($_POST['sujet']))
{
$pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
$sujet = htmlentities($_POST['sujet'], ENT_QUOTES);
$post = htmlentities($_POST['post'], ENT_QUOTES);
$post = nl2br($post);
mysql_query("INSERT INTO forum VALUES('', 'rien', '" . $sujet . "', '" . $pseudo . "', '" . $post . "', '" . time() . "')");
?><br><br><br><center>
<a href="index.php?pageaf=forum">Retourner à la page des sujets</a>
<br><a href="index.php?pageaf=voireforum&sujet=<?echo $sujet;?>>Retourner à la page du sujet en cour</a>
<?
}
if(isset($_POST['sujet']) == false)
{
$sujet=$_GET['sujet'];
?>
<br>
<table width="600" border="1" cellspacing="0" align="center" bordercolor="#000000">
  <tr bgcolor="#0099FF"> 
    <td><? echo $sujet ; ?></td>
  </tr>
</table>
<br>
<?
reponse = mysql_query('SELECT * FROM forum WHERE resujet=' . $sujet . ' ORDER BY ID'); //ligne 28
while(donnees = mysql_fetch_array($reponse))
{
?>
<table width="600" border="1" cellspacing="0" align="center" bordercolor="#000000">
  <tr bgcolor="#0099FF"> 
    <td width="300"> <b>De :</b> <? echo $donnees['pseudo']; ?></td>
    <td width="300" colspan="2"> <b>Le </b> <? echo date('d/m/Y \à H\hi', $donnees['timestamp']); ?></td>
  </tr>
  <tr bgcolor="#0099FF"> 
    <td colspan="3" bgcolor="#00CCCC"><? echo $donnees['post']; ?></td>
  </tr>
</table>
<br>
<?
}
?>
<form method="post" action="index.php?pageaf=voireforum" name="formulaire_repondre_sujet">
  <table width="600" border="1" align="center" cellspacing="0" bordercolor="#000000">
    <tr bgcolor="#00CCCC"> 
      <td colspan="3"> 
        <div align="center"> 
          <p><b>Votre pseudo (max. 15 car.) :</b> </p>
          <p> 
            <input type="text" name="pseudo" maxlength="15">
          </p>
        </div>
      </td>
    </tr>
    <tr bgcolor="#0099FF"> 
      <td colspan="3"> 
        <div align="center"> 
          <p><b>Votre Post :</b></p>
          <p> 
            <textarea name="post" cols="40"></textarea>
          </p>
          <p> 
            <input type="submit" name="submit" value="Envoyer">
          </p>
        </div>
      </td>
    </tr>
  </table>
</form>
<?
mysql_close();
?>
Pouriez vous m'aider s'il vous plait :roll: ?

par smarties » 25 août 2005, 22:58

Il y a aussi le $ pour de $reponse qui manque :wink:

par smarties » 25 août 2005, 22:58

Code : Tout sélectionner

reponse=mysql_query("SELECT * FROM forum WHERE sujet != rien ORDER BY ID");
rien doit être entre quotes car c'est une valeur et nom un champ de la table donc si tu mets ceci, ca devrai marcher :

Code : Tout sélectionner

reponse=mysql_query("SELECT * FROM forum WHERE sujet != 'rien' ORDER BY ID");

par Cyrano » 25 août 2005, 22:07

Guillemets non fermés, "$" manquant au début du nom de deux variables, accollades non fermées, c'est plein de petites erreurs d'étourderie.

Astuce : quand tu écris du code, lors de l'ouverture d'un élément, mets tout de suite la fermeture avant d'y mettre le moindre contenu, tu seras sûr de ne jamais en oublier un. Tu ouvres une accollade { ? Alors mets tout de suite l'accollade fermante } pour être certain de ne pas l'oublier et après seulement tu inscris les instructions qui vont dedans, pareil pour les guillemets, les aopostrophes etc... : Proposition de correction:
<?php
mysql_connect("localhost", "progphp", "");
mysql_select_db("progphp_db");
if(isset($_POST['sujet']))
{
    $pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
    $sujet = htmlentities($_POST['sujet'], ENT_QUOTES);
    $post = htmlentities($_POST['post'], ENT_QUOTES);
    $post = nl2br($post);
    mysql_query("INSERT INTO forum VALUES('', '" . $sujet . "', '" . $sujet . "', '" . $pseudo . "', '" . $post . "', '" . time() . "')");
?>
<br><br><br><center>
<a href="index.php?pageaf=forum">Retourner à la page des sujets</a>
<br><a href="index.php?pageaf=voireforum&sujet=<?php echo($sujet); ?>">Aller à la page de mon sujet</a>
<?php
}
if(isset($_POST['sujet'])==false)
{
    ?>
<br><h2><center>Les sujets</center></h2><br>
<?php
    $reponse = mysql_query("SELECT * FROM forum WHERE sujet != 'rien' ORDER BY ID");
    while($donnees = mysql_fetch_array($reponse))
    {
        $retour2 = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM forum WHERE resujet=". $donnees['sujet']);
        $donnees2 = mysql_fetch_array($retour2);
        $donnees2['nbre_entrees'] = $donnees2['nbre_entrees']-1;
?>
<table width="600" border="1" cellspacing="0" align="center" bordercolor="#000000">
  <tr bgcolor="#0099FF">
    <td width="200"> <b>De :</b> <?php echo $donnees['pseudo']; ?></td>
    <td width="200"> <b>Le <?php echo date('d/m/Y \à H\hi', $donnees['timestamp']); ?></b></td>
    <td width="200"> <b>Nombre de réponses :</b> <?php echo $donnees2['nbre_entrees']; ?></td>
  </tr>
  <tr bgcolor="#0099FF">
    <td colspan="3" bgcolor="#00CCCC"><a href="index.php?pageaf=voireforum&sujet=<?php echo $donnees['sujet']; ?>"><?php echo $donnees['sujet']; ?></a></td>
  </tr>
</table>
<br>
<?php
    }
?>
<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">
        <div align="center">
        <p><b>Votre pseudo (max. 15 car.) :</b></p>
        <p>
        <input type="text" name="pseudo" maxlength="15">
        </p>
        </div>
      </td>
    </tr>
    <tr bgcolor="#00CCCC">
      <td colspan="3">
        <div align="center">
        <p><b>Votre sujet (max. 40 car.) :</b></p>
        <p>
        <input type="text" name="sujet" maxlength="15" size="40">
        </p>
        </div>
      </td>
    </tr>
    <tr bgcolor="#0099FF">
      <td colspan="3">
        <div align="center">
        <p><b>Votre Post :</b></p>
        <p>
        <textarea name="post" cols="40"></textarea>
        </p>
        <p>
        <input type="submit" name="submit" value="Envoyer">
        </p>
        </div>
      </td>
    </tr>
  </table>
  <br>
</form>
<?php
}
mysql_close();
?>

par ouckileou » 25 août 2005, 22:03

donc ça c'est une erreur PHP... une erreur de syntaxe
et la ligne 21 je la trouve tout seul ? ce serait plus pratique si tu l'indiquais


concernant "rien", c'est donc le contenu d'une colonne, tu dois l'entourer des simples quotes
sinon, le mot rien seul représente un nom de colonne, et non pas une chaine de caractères

[édition]oups désolé, tu l'avais déjà fait ;)

à un moment tu as
<?echo
j'essaierai de décoller le echo de la balise on ne sait jamais

et utilise plutôt les balises <?php que <?, tu pourrais avoir des problèmes sur certains serveurs

par Tonio 76 » 25 août 2005, 21:57

Mon erreur est la suivante :
Parse error: parse error in /data/members/free/multimania/fr/p/r/o/progphp/htdocs/forum/forum.php on line 21
Le code complet de la page est le suivant :
<?
mysql_connect("localhost", "progphp", "");
mysql_select_db("progphp_db");
if(isset($_POST['sujet']))
{
$pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
$sujet = htmlentities($_POST['sujet'], ENT_QUOTES);
$post = htmlentities($_POST['post'], ENT_QUOTES);
$post = nl2br($post);
mysql_query("INSERT INTO forum VALUES('', '" . $sujet . "', '" . $sujet . "', '" . $pseudo . "', '" . $post . "', '" . time() . "')");
?><br><br><br><center>
<a href="index.php?pageaf=forum">Retourner à la page des sujets</a>
<br><a href="index.php?pageaf=voireforum&sujet=<?echo $sujet;?>>Aller à la page de mon sujet</a>
<?
}
if(isset($_POST['sujet'])==false)
{
?>
<br><h2><center>Les sujets</center></h2><br>
<?
reponse = mysql_query("SELECT * FROM forum WHERE sujet != 'rien' ORDER BY ID"); 
while(donnees = mysql_fetch_array($reponse))
{
$retour2 = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM forum WHERE resujet=$donnees['sujet']"); 
$donnees2 = mysql_fetch_array($retour2);
$donnees2['nbre_entrees'] = $donnees2['nbre_entrees']-1;
?>
<table width="600" border="1" cellspacing="0" align="center" bordercolor="#000000">
  <tr bgcolor="#0099FF"> 
    <td width="200"> <b>De :</b> <? echo $donnees['pseudo']; ?></td>
    <td width="200"> <b>Le <? echo date('d/m/Y \à H\hi', $donnees['timestamp']); ?></b></td>
    <td width="200"> <b>Nombre de r&eacute;ponses :</b> <? echo $donnees2['nbre_entrees'];</td>
  </tr>
  <tr bgcolor="#0099FF"> 
    <td colspan="3" bgcolor="#00CCCC"><a href="index.php?pageaf=voireforum&sujet=<? echo $donnees['sujet']; ?>"><? echo $donnees['sujet']; ?></a></td>
  </tr>
</table>
<br>
<?
}
?>
<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">
        <div align="center">
          <p><b>Votre pseudo (max. 15 car.) :</b></p>
          <p>
            <input type="text" name="pseudo" maxlength="15">
          </p>
        </div>
      </td>
    </tr>
    <tr bgcolor="#00CCCC"> 
      <td colspan="3">
        <div align="center">
          <p><b>Votre sujet (max. 40 car.) :</b></p>
          <p>
            <input type="text" name="sujet" maxlength="15" size="40">
          </p>
        </div>
      </td>
    </tr>
    <tr bgcolor="#0099FF"> 
      <td colspan="3">
        <div align="center">
          <p><b>Votre Post :</b></p>
          <p>
            <textarea name="post" cols="40"></textarea>
          </p>
		   <p>
            <input type="submit" name="submit" value="Envoyer">
          </p>
        </div>
      </td>
    </tr>
  </table>
  <br>
</form>

<?
mysql_close();
?>
Le mot rien a une signification, il est dans le champs sujet de toutes le reponses pour ne pas afficher toutes les reponses dans la liste des sujets.

par ouckileou » 25 août 2005, 20:50

tu n'as pas de message d'erreur retourné ?

oui : il faut prendre l'habitude de le donner
non : utilise ceci pour les afficher
mysql_query() or die(mysql_error());
mais ici, le problème doit venir de : rien
écrit comme ça , tu indiques une colonnes qui s'appelle "rien"

pour signifier une chaine de caractère tu dois mettre des quotes autour :
reponse=mysql_query("SELECT * FROM forum WHERE sujet != 'rien' ORDER BY ID");

Une requete mysql qui ne fonctionne pas...

par Tonio 76 » 25 août 2005, 18:50

Bonjour, j'ai un prolème sur un requête mysql qui ne fonctionne pas :!: :
reponse=mysql_query("SELECT * FROM forum WHERE sujet != rien ORDER BY ID");
Si quelqu'un pouvais m'aider, ce serais gentil.
Merci d'avance