[AIDE] Aide PHP

Résolu/Fermé
mister-gwada97one Messages postés 110 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 1 janvier 2012 - 28 oct. 2009 à 19:28
avion-f16 Messages postés 19128 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 25 mars 2023 - 29 oct. 2009 à 18:28
Bonjour,
j'ai une erreur et je voudrais de l'aide svp:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/lilkey/public_html/wi/forum/postok.php on line 313

Ligne 313:
SET topic_last_post = $data4['post_id']


La page:
<?php
//Cette fonction doit être appelée avant tout code html
session_start();

//On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
$titre = "Poster";
include("includes/debut.php");
?>

<?php
function verif_auth($auth_necessaire)
{
//Dans un premier temps, on vérifie si le membre est connecté
if(isset($_SESSION['id'])) $auth = intval($_SESSION['level']);
else $auth = 1;
if ($auth_necessaire < $auth) return true;
else return false;
}
?>

<body>
<div id="banniere"></div>
<div id="corps_forum">

<?php
//Maintenant, on se connecte à la base de données
include("includes/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
//On récupère la valeur de la variable action
$action = htmlspecialchars($_GET['action']);

// Si le membre n'est pas connecté, il est arivé ici par erreur
if (!isset($_SESSION['pseudo']))
{
echo'<p>Erreur : Vous n êtes plus connecté</p>';
}
else //Sinon on lance la suite
{
?>

<?php
switch($action)
{
//Premier cas : nouveau topic
case "nouveautopic":

if (!verif_auth($data1['auth_annonce']) && isset($_POST['mess']))
{
exit('</div></body></html>');
}
//On passe le message dans une série de fonction
$message = mysql_real_escape_string($_POST['message']);
$mess = mysql_real_escape_string($_POST['mess']);

//Pareil pour le titre
$titre = mysql_real_escape_string($_POST['titre']);

//ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable f
$forum = (int) $_GET['f'];
$temps = time();

if (empty($message) || empty($titre))
{
echo'<p>Votre message ou votre titre est vide, cliquez <a href="./poster.php?action=nouveautopic&amp;f='.$forum.'">ici</a> pour recommencer</p>';
}
else //Si jamais le message n'est pas vide
{
?>

<?php
//On entre le topic dans la base de donnée en laissant
//le champ topic_last_post à 0
mysql_query("INSERT INTO forum_topic
(forum_id, topic_titre, topic_createur, topic_vu, topic_time, topic_genre, topic_last_post, topic_post)
VALUES('".$forum."', '".$titre."', '".intval($_SESSION['id'])."', '1', '".$temps."','".$mess."', '0', '0'  )")
or die ("Un problème est survenu lors de l'envoi du message");

$nouveautopic = mysql_insert_id();

//Puis on entre le message
mysql_query("INSERT INTO forum_post
(post_id, post_createur, post_texte, post_time, topic_id, post_forum_id)
VALUES(',' ,'".intval($_SESSION['id'])."', '".$message."', '".$temps."', '".$nouveautopic."', '".$forum."')")
or die ("Un problème est survenu lors de l'envoi du message");

$nouveaupost = mysql_insert_id();

//Ici on update comme prévu la valeur de topic_last_post et de topic_first_post
mysql_query("UPDATE forum_topic
SET topic_last_post = '".$nouveaupost."',
topic_first_post = '".$nouveaupost."'
WHERE topic_id = '".$nouveautopic."'")
or die ("Un problème est survenu lors de l'envoi du message");


//Enfin on met à jour les tables forum_forum et forum_membres
mysql_query("UPDATE forum_forum
SET forum_post = forum_post + 1 ,
forum_topic = forum_topic + 1,
forum_last_post_id = '".$nouveaupost."'
WHERE forum_id = '".$forum."'")
or die ("Un problème est survenu lors de l'envoi du message");

mysql_query("UPDATE forum_membres
SET membre_post = membre_post + 1
WHERE membre_id = '".intval($_SESSION['id'])."'")
or die ("Un problème est survenu lors de l'envoi du message");

//Et un petit message
echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />Cliquez <a href="./voirtopic.php?t='.$nouveautopic.'">ici</a> pour le voir</p>';
}
break; //Houra !
?>

<?
//Deuxième cas : répondre
case "repondre":
//On passe le message dans une série de fonction
$message = mysql_real_escape_string($_POST['message']);


//ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable t
$topic = (int) $_GET['t'];
$temps = time();

if (empty($message))
{
echo'<p>Votre message est vide, cliquez <a href="./poster.php?action=repondre&amp;t='.$topic.'">ici</a> pour recommencer</p>';
}
else //Sinon, si le message n'est pas vide
{

//On récupère l'id du forum
$requete2 = mysql_query('SELECT forum_id, topic_post
FROM forum_topic
WHERE topic_id = "'.$topic.'"');

$data2= mysql_fetch_assoc($requete2) or die ("Une erreur semble être survenue lors de l'envoi du message");
$forum = $data2['forum_id'];

//Puis on entre le message
mysql_query("INSERT INTO forum_post
(post_id, post_createur, post_texte, post_time, topic_id, post_forum_id)
VALUES(',' ,'".intval($_SESSION['id'])."', '".$message."', '".$temps."', '".$topic."', '".$forum."')")
or die ("Une erreur semble avoir survenu lors de l'envoi du message");

$nouveaupost = mysql_insert_id();

//On change un peu la table forum_topic
mysql_query("UPDATE forum_topic
SET topic_post = topic_post + 1,
topic_last_post = '".$nouveaupost."'
WHERE topic_id ='".$topic."'")
or die ("Une erreur semble avoir survenu lors de l'envoi du message");

//Puis même combat sur les 2 autres tables
mysql_query("UPDATE forum_forum
SET forum_post = forum_post + 1 ,
forum_last_post_id = '".$nouveaupost."'
WHERE forum_id = '".$forum."'")
or die ("Une erreur semble avoir survenu lors de l'envoi du message");

mysql_query("UPDATE forum_membres
SET membre_post = membre_post + 1
WHERE membre_id = '".intval($_SESSION['id'])."'")
or die ("Une erreur semble avoir survenu lors de l'envoi du message");

//Et un petit message
$nombreDeMessagesParPage = 15;
$nbr_post = $data2['topic_post']+1;
$page = ceil($nbr_post / $nombreDeMessagesParPage);
echo'<p>Votre message a bien été ajouté!<br /><br />
Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />
Cliquez <a href="./voirtopic.php?t='.$topic.'&amp;page='.$page.'#p_'.$nouveaupost.'">ici</a> pour le voir</p>';
}
break;
?>

<?php
case "edit": //Si on veut éditer le post
//On récupère la valeur de p
$post = (int) $_GET['p'];
 
//On check le message
$message = mysql_real_escape_string($_POST['message']);

 
//Ensuite on vérifie que le membre a le droit d'être ici (soit le créateur soit un modo/admin)
$requete2 = mysql_query('
SELECT post_createur, post_texte, post_time, topic_id, auth_modo
FROM forum_post
LEFT JOIN forum_forum ON forum_post.post_forum_id = forum_forum.forum_id
WHERE post_id='.$post.'');
$data2 = mysql_fetch_assoc($requete2);
$topic = $data2['topic_id'];

//On récupère la place du message dans le topic (pour le lien)
$requete3 = mysql_query('SELECT COUNT(*) AS nbr FROM forum_post 
WHERE topic_id = '.$topic.' AND post_time < '.$data2['post_time']);
$data3 = mysql_fetch_assoc($requete3);

if (!verif_auth($data2['auth_modo'])&& $data2['post_createur'] != $_SESSION['id'])
{
// Si cette condition n'est pas remplie ça va barder :o
echo'<p>Vous n\'avez aucun droit d\'être ici</p></div></body></html>';
exit();
}
else //Sinon ça roule et on continue
{
mysql_query("UPDATE forum_post SET post_texte =  '".$message."' WHERE post_id = '".$post."'");
$nombreDeMessagesParPage = 15;
$nbr_post = $data3['nbr']+1;
$page = ceil($nbr_post / $nombreDeMessagesParPage);
echo'<p>Votre message a bien été édité!<br /><br />
Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />
Cliquez <a href="./voirtopic.php?t='.$topic.'&amp;page='.$page.'#p_'.$post.'">ici</a> pour le voir</p>';
}
break;
?>

<?php
case "delete": //Si on veut supprimer le post
        //On récupère la valeur de p
        $post = (int) $_GET['p'];
        $requete1 = mysql_query('
        SELECT post_createur, post_texte, forum_id, topic_id, auth_modo
        FROM forum_post
        LEFT JOIN forum_forum ON forum_post.post_forum_id = forum_forum.forum_id
        WHERE post_id='.$post.'');
        $data1 = mysql_fetch_assoc($requete1);
        $topic = $data1['topic_id'];
        $forum = $data1['forum_id'];
       
        //Ensuite on vérifie que le membre a le droit d'être ici 
        //(soit le créateur soit un modo/admin)
        if (!verif_auth($data1['auth_modo']))
        {
                // Si cette condition n'est pas remplie ça va barder :o
                echo'<p>Vous n\'avez aucun droit d\'être ici</p></div></body></html>';
                exit();
        }
        else //Sinon ça roule et on continue
        {
                //Ici on vérifie plusieurs choses :
                //est-ce un premier post ? Dernier post ou post classique ?
 
                $requete_first_post = mysql_query("SELECT COUNT(*)
                AS first_post
                FROM forum_topic
                WHERE topic_first_post = $post");
 
                $requete_last_post = mysql_query("SELECT COUNT(*)
                AS last_post
                FROM forum_topic
                WHERE topic_last_post = $post");
               
                $first_post = mysql_fetch_assoc($requete_first_post);
                $last_post = mysql_fetch_assoc($requete_last_post);
               
               
                //On distingue maintenant les cas
                if ($first_post['first_post'] != 0) 
                //Si le message est le premier
                {
 
                        //Les autorisations ont changé !
                        if (!verif_auth($data1['auth_modo']))
                        {
                                echo'<p>
                                Vous n\'avez aucun droit d\'être ici</p></div></body></html>';
                                exit();
                        }
                        //Il faut s'assurer que ce n'est pas une erreur
 
                        echo'<p>Vous avez choisi de supprimer un post.
                        Cependant ce post est le premier du topic. 
                        Voulez vous supprimer le topic ? <br />
             <a href="./postok.php?action=delete_topic&amp;t='.$topic.'">oui</a> 
                        - <a href="./voirtopic.php?t='.$topic.'">non</a></p>';
 
                     
                }
 
                elseif ($last_post['last_post'] != 0) 
                //Si le message est le dernier
 
                {
 
                        //On supprime le post
                        mysql_query("DELETE FROM forum_post
                        WHERE post_id = '".$post."'");
                       
                        //On modifie la valeur de topic_last_post pour cela on
                        //récupère l'id du plus récent  message de ce topic
                        $requete4 = mysql_query('SELECT post_id
                        FROM forum_post
                        WHERE topic_id = '.$topic.'
                        ORDER BY post_id DESC
                        LIMIT 0,1');
                        $data4 = mysql_fetch_assoc($requete4);
 
                        //On fait de même pour forum_last_post_id
                        $requete5 = mysql_query('SELECT post_id
                        FROM forum_post
                        WHERE post_forum_id = '.$forum.'
                        ORDER BY post_id DESC
                        LIMIT 0,1');
                        $data5 = mysql_fetch_assoc($requete5);
                       
                        //On met à jour la valeur de topic_last_post
                        mysql_query("UPDATE forum_topic
                        SET topic_last_post = $data4['post_id']
                        WHERE topic_last_post = $post");
 
                        //On enlève 1 au nombre de messages du forum et on met à       
                        //jour forum_last_post
                        mysql_query("UPDATE forum_forum
                        SET forum_post = forum_post - 1,
                        forum_last_post_id = $data5['post_id']
                        WHERE forum_id = $forum");
 
                        //On enlève 1 au nombre de messages du topic
                        mysql_query("UPDATE forum_topic
                        SET  topic_post = topic_post - 1
                        WHERE topic_id = $topic");
                       
                        //On enlève 1 au nombre de messages du membre
                        mysql_query("UPDATE forum_membres
                        SET  membre_post = membre_post - 1
                        WHERE membre_id = $data1['post_createur']");
 
                        //Enfin le message
                        echo'<p>Le message a bien été supprimé !<br />
                        Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> 
                        pour retourner au topic<br />
                        Cliquez <a href="./index.php">ici</a> 
                        pour revenir à l index du forum</p>';
 
                }
 
                elseif ($last_post['last_post'] == 0 
                && $first_post['first_post'] == 0) // Si c'est un post classique
 
                {
 
                        //On supprime le post
                        mysql_query("DELETE FROM forum_post
                        WHERE post_id = $post");
                       
                        //On enlève 1 au nombre de messages du forum
                        mysql_query("UPDATE forum_forum
                        SET  forum_post = forum_post - 1
                        WHERE forum_id ='".$forum."'");
                       
                        //On enlève 1 au nombre de messages du topic
                        mysql_query("UPDATE forum_topic
                        SET  topic_post = topic_post - 1
                        WHERE topic_id = $topic");
                       
                        //On enlève 1 au nombre de messages du membre
                        mysql_query("UPDATE forum_membres
                        SET  membre_post = membre_post - 1
                        WHERE membre_id = $data1['post_createur']");
                       
                        //Enfin le message
                        echo'<p>Le message a bien été supprimé !<br />
                        Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour retourner au topic<br />
                        Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
                }
               
        }
break;
?>

<?php
case "delete_topic":
$topic = (int) $_GET['t'];
$requete1 = mysql_query('
SELECT forum_topic.forum_id, auth_modo
FROM forum_topic
LEFT JOIN forum_forum ON forum_topic.forum_id = forum_forum.forum_id
WHERE topic_id='.$topic.'');
$data1 = mysql_fetch_assoc($requete1);
$forum = $data1['forum_id'];
 
        //Ensuite on vérifie que le membre a le droit d'être ici 
        //c'est-à-dire si c'est un modo / admin
 
        if (!verif_auth($data1['auth_modo']))
        {
                // Si cette condition n'est pas remplie ça va barder :o
                echo'<p>Vous n\'avez aucun droit d\'être ici</p></div></body></html>';
                exit();
        }
        else //Sinon ça roule et on continue
        {
        //On compte le nombre de post du topic
        $requete_count_post = mysql_query("SELECT COUNT(*)
        AS nombre_post
        FROM forum_post
        WHERE topic_id = $topic");
       
        $data_nombrepost = mysql_fetch_assoc($requete_count_post);
        $nombrepost = $data_nombrepost['nombre_post'];
 
        //On supprime le topic
        mysql_query("DELETE FROM forum_topic
        WHERE topic_id = $topic");
       
        //On enlève le nombre de post posté par chaque membre dans le topic
        $requete_postparmembre = mysql_query('SELECT post_createur,
        COUNT(*) AS nombre_mess
        FROM forum_post
        WHERE topic_id = '.$topic.'
        GROUP BY post_createur');
 
        while($data_postparmembre = mysql_fetch_assoc($requete_postparmembre))
        {
        mysql_query('UPDATE forum_membres
        SET membre_post = membre_post - '.$data_postparmembre['nombre_mess'].'
        WHERE membre_id = '.$data_postparmembre['post_createur']);
        }
               
        //Et on supprime les posts !
        mysql_query("DELETE FROM forum_post
        WHERE topic_id = $topic");
       
        //Dernière chose, on récupère le dernier post du forum
        $requete_forum = mysql_query('SELECT post_id
        FROM forum_post
        WHERE post_forum_id = '.$forum.'
        ORDER BY post_id DESC
        LIMIT 0,1');
        $data_forum = mysql_fetch_assoc($requete_forum);
 
        //Ensuite on modifie certaines valeurs :
        mysql_query("UPDATE forum_forum
        SET forum_topic = forum_topic - 1,
        forum_post = forum_post - $nombrepost,
        forum_last_post_id = $data_forum['post_id']
        WHERE forum_id = $forum");
 
 
        //Enfin le message
        echo'<p>Le topic a bien été supprimé !<br />
        Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
        }
break;
?>

<?
default;
echo'<p>Cette action est impossible</p>';
} //Fin du Switch
} //Fin du else, le membre est connecté
mysql_close();
?>
</div>
</body>
</html>


Cordialement

8 réponses

avion-f16 Messages postés 19128 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 25 mars 2023 4 469
28 oct. 2009 à 20:09
Essaye avec
                        mysql_query('UPDATE forum_topic'.
                        ' SET topic_last_post = '.$data4['post_id'].
                        ' WHERE topic_last_post = '.$post);
Au lieu de
                        mysql_query("UPDATE forum_topic
                        SET topic_last_post = $data4['post_id']
                        WHERE topic_last_post = $post");
0
mister-gwada97one Messages postés 110 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 1 janvier 2012 7
28 oct. 2009 à 20:30
J'ai essayé ça:
                        mysql_query("UPDATE forum_topic
                        SET topic_last_post = $data4('post_id')
                        WHERE topic_last_post = $post");


au lieu de:
                        mysql_query("UPDATE forum_topic
                        SET topic_last_post = $data4['post_id']
                        WHERE topic_last_post = $post");


Et ça marche merci^^

Maintenant un autre PB:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/lilkey/public_html/wi/forum/amis.php on line 173
ligne 173:
if (mysql_num_rows($requete) == 0)
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
28 oct. 2009 à 21:11
oulah ton script me parait bien compliquer pour ce que tu veut en faire...

je viens de passe 1/a d'heure a demeler les les if les ?> <?PHP et j'ai pas trouvé, à mon avis tu a du oublier une " ou un ' quelquepart
0
avion-f16 Messages postés 19128 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 25 mars 2023 4 469
28 oct. 2009 à 22:40
Stockes le nombre dans une variable avant la condition et $requete doit être une ressource après mysql_query, pas la requête SQL (SELECT champ FROM ...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mister-gwada97one Messages postés 110 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 1 janvier 2012 7
29 oct. 2009 à 00:19
En faite je m'inspire d'un tuto sur le sit du zéro pour le forum..
Mais j'ai tout le temps des erreurs que j'arrive à régler pour la pluspart, mais là 0 je ne comprend plus rien^^
0
avion-f16 Messages postés 19128 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 25 mars 2023 4 469
29 oct. 2009 à 17:22
Je récapitules :
1. $requete doit contenir le résultat d'un mysql_query, pas une requête SQL (le texte "SELECT ...").
2. Essaye en stockant dans $nb (par exemple) le résultat de mysql_num_rows($requete) avant de faire la condition
3. Si ça ne marche toujours pas, ajoute @ devant mysql_num_rows parce que si je ne me trompe pas, PHP affiche une erreur si il n'y a pas d'entrée.
0
mister-gwada97one Messages postés 110 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 1 janvier 2012 7
29 oct. 2009 à 18:20
C'est réglé merci^^
0
avion-f16 Messages postés 19128 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 25 mars 2023 4 469
29 oct. 2009 à 18:28
D'abord mets-le en résolu ...
0