[AIDE] Aide PHP
Résolu
mister-gwada97one
Messages postés
141
Statut
Membre
-
avion-f16 Messages postés 20367 Statut Contributeur -
avion-f16 Messages postés 20367 Statut Contributeur -
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:
La page:
Cordialement
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&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&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.'&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.'&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&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
A voir également:
- [AIDE] Aide PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour à la ligne php ✓ - Forum PHP
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
8 réponses
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");
J'ai essayé ça:
au lieu de:
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:
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)
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
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
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 ...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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^^
Mais j'ai tout le temps des erreurs que j'arrive à régler pour la pluspart, mais là 0 je ne comprend plus rien^^
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.
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.