cs_djack69
Messages postés27Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention21 avril 2009
-
19 août 2008 à 22:09
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
24 août 2008 à 11:27
Bonsoir tout le monde,
Je créé un site en ce moment et je suis sur une partie du site ou je bloque.
je créé une partie tuto avec un petit système de note. Je voudrais que les membres puissent noté une seule un tuto je fais appael a une condition true et false mais je n'arrive pas a bien le manipuler. Voici mon code :
<?php if ((isset($_POST['note']) && !empty($_POST['note'])) ) {
include("../config.php");
$sql = 'SELECT * FROM GC_tuto_note WHERE auteur="'.$_SESSION['membre_pseudo'].' " AND id_tutoriel = "'.$id_tuto = $_GET['id_tuto'].'" ';
$data = mysql_fetch_assoc($sql);
if ($data['note'] == true) {
mysql_query('INSERT INTO GC_tuto_note (id, id_tutoriel, auteur, note) VALUES("","'.$id_tuto.'", "'.$_SESSION['membre_pseudo'].'","'.mysql_escape_string($_POST['note']).'") ');
} else { $erreur = 'Attention !! Vous avez déjà noté ce tutoriel.'; }
} else { $erreur = 'Attention !! Veuillez remplir tout les champs avec une *. Merci.';
}
?>
Le problème est que j'ai aucune donné dans ma base et ça me dit que j'ai déjà noté ce tuto alors je met false à la place de true et la je peux noter autant de fois que je veux ???? o_O
Peux ton m'aider?
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 20 août 2008 à 09:04
Bonjour
Faudrait remplacer
if ($data['note'] == true) {
par
if ($data['note'] != true) {
... car la j'ai l'impression que tu fais : s'il y a une note, je fais un insert sinon je met le message "deja noté".
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 20 août 2008 à 23:09
Sinon, j'ai une autre idée, tu fais une table vote et tu rentre le pseudo de chaque membre ayant déja voté avec l'id du tuto sur leqel il a voté et a chaque fois tu vérifie avec les sessions si le pseudo n'est pas déja associé a l'id du tuto dans ta bdd...
a++
Si la réponse vous convient, pensez : Réponse acceptée !
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 20 août 2008 à 23:09
Sinon, j'ai une autre idée, tu fais une table vote et tu rentre le pseudo de chaque membre ayant déja voté avec l'id du tuto sur leqel il a voté et a chaque fois tu vérifie avec les sessions si le pseudo n'est pas déja associé a l'id du tuto dans ta bdd...
a++
Si la réponse vous convient, pensez : Réponse acceptée !
cs_djack69
Messages postés27Date d'inscriptionvendredi 22 juin 2007StatutMembreDernière intervention21 avril 2009 21 août 2008 à 19:53
ben c'est ce que j'ai fais nico ^^, j'ai fait une table avec id, id_tutoriel, auteur, note je rentre bien la note avec l'auteur (session pseudo) l'id_tutoriel par contre meme si je note le meme tutoriel avec le meme pseudo sa passe toujours pourtant je fais comme d'habitude
// Et on affiche le résultat. Admirez ! :D
echo $texte . '
';
}
?>
----
Commentaire(s)
,
<?php $com mysql_query(\"SELECT * FROM GC_tuto_com WHERE id_tutoriel '\".$id_tuto.\"'\")or die (mysql_error());
while ($com1 = mysql_fetch_array($com)) { ?>
----
Commentaire de <?php echo $com1['auteur']; ?> le <?php echo date('d/m/Y à H:i',$com1['date']); ?>
<hr align="center" noshade="noshade" />
<?php if (isset($com1['message']))
{
$texte = stripslashes($com1['message']); // On enlève les slash qui se seraient ajoutés automatiquement
$texte = htmlspecialchars($texte); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
$texte = nl2br($texte); // On crée des
pour conserver les retours à la ligne.
<?php
// bien rajouter le code si-dessous sur toute les pages que vous rajouterez dans votre espace membre (le dosier membre)
session_start();
if ($_SESSION['level'] >= 2) {
$id_tuto = $_GET['id_tuto'];
$id_cat = $_GET['id_cat'];
$id_sous_cat = $_GET['id_sous_cat'];
include("../config.php");
$sql = 'SELECT auteur, note FROM GC_tuto_note WHERE auteur="'.$_SESSION['membre_pseudo'].'" AND id_tutoriel="'.$id_tuto.'"';
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$data = mysql_fetch_assoc($req);
mysql_free_result($req);
if(mysql_num_rows($data['membre_pseudo']) < 1) {
if ((isset($_POST['note']) && !empty($_POST['note'])) ) {
mysql_query('INSERT INTO GC_tuto_note (id, id_tutoriel, auteur, note) VALUES("","'.$id_tuto.'", "'.$_SESSION['membre_pseudo'].'","'.mysql_escape_string($_POST['note']).'") ');
} else { $erreur = 'Attention !! Veuillez remplir tout les champs avec une *. Merci.';
}
} else { $erreur = 'Attention !! Vous avez déjà noté ce tutoriel.';
}
$retour = mysql_query("SELECT * FROM GC_site");
$donn = mysql_fetch_array($retour);
</html>
<?php } else { ?> <center>Vous n'êtes pas administrateur et donc vous n'avez pas le droit d'être ici.</center>
[
Retour
> <?php } ?>
Alors je vous réexplique ce que je voudrais et ce qu'il se passe.
Donc je voudrais que le membre puisse noté une seule fois le tutoriel qu'il voudra noter si il réessai de noter alors qu'il l'a déjà fais un message d'erreur lui indiquera qu'il ne peux plus noter ce tuto. Voici ma table :
CREATE TABLE `GC_tuto_note` (
`id` int(11) NOT NULL auto_increment,
`id_tutoriel` int(11) NOT NULL default '0',
`auteur` varchar(30) NOT NULL default '',
`note` char(2) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=17 ;