par
VaN » 11 févr. 2008, 16:17
Bonjour,
je rencontre un problème avec une de mes requêtes.
J'aimerai sélectionner tous les champs d'une table CONCOURS, dont l'utilisateur n'a pas spécifié qu'il ignorait ou avait fait ce concours. je m'explique :
Une table CONCOURS que voici :
CREATE TABLE `concours` (
`concours_id` int(11) NOT NULL auto_increment,
`concours_user_id` int(11) NOT NULL,
`concours_site_id` int(11) NOT NULL,
`concours_url` text NOT NULL,
`concours_reglement_url` text NOT NULL,
`concours_start_date` datetime NOT NULL,
`concours_end_date` datetime NOT NULL,
`concours_type` tinyint(4) NOT NULL,
`concours_participation` tinyint(11) NOT NULL,
`concours_qs` enum('Oui','Non') NOT NULL,
`concours_nb_reponses` tinyint(4) NOT NULL,
`concours_lots` text NOT NULL,
`concours_rating` tinyint(4) NOT NULL,
`concours_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`concours_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Et une table USERS, que voici :
CREATE TABLE `users` (
`user_id` int(11) NOT NULL auto_increment,
`user_login` text character set latin1 collate latin1_general_cs NOT NULL,
`user_pass` text character set latin1 collate latin1_general_cs NOT NULL,
`user_mail` text NOT NULL,
`user_level` tinyint(4) NOT NULL,
`user_activated` tinyint(4) NOT NULL,
`user_activation_key` text character set latin1 collate latin1_general_cs NOT NULL,
`user_logged` tinyint(4) NOT NULL,
`user_last_session` datetime NOT NULL,
`user_last_ip` text NOT NULL,
`user_points` int(11) NOT NULL,
`user_parrain_id` int(11) NOT NULL,
`user_concours_done` text NOT NULL,
`user_concours_ignored` text NOT NULL,
`user_scoot_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ;
Dans cette table USERS, il y'a les champs user_concours_done et user_concours_ignored, ou je stocke les ID des concours que l'utilisateur a fait/ignore, en séparant chaque concours_id par un ";".
Maintenant, ce que j'aimerai faire, c'est appliquer sur une large liste de concours un filtre, qui permettrait de n'afficher QUE les concours ou les checkbox "FAIT" et "IGNORE" n'ont pas été cochées, autrement dit, ou l'id de ce concours ne se retrouve ni dans le champs user_concours_done, ni dans le champs user_concours_ignored.
J'ai donc tenté une requête, que voici :
$sql = "SELECT concours_id, site_name, concours_end_date, concours_type_title, concours_rating
FROM ".$prefixe."concours, ".$prefixe."concours_type, ".$prefixe."sites, ".$prefixe."users
WHERE concours_type = concours_type_id
AND concours_site_id = site_id
AND concours_activated = 1
and user_id = '".$_SESSION['user_id']."'
AND user_concours_done != % ;concours_id; % ";
et qui pour le moment me renvoie
#1064 - Erreur de syntaxe près de '%' à la ligne 1
J'imagine bien que ma syntaxe n'est pas correcte. J'ai tenté d'utiliser le signe SQL %, car il me semblait qu'il signifiait "n'importe quoi".
Quelqu'un pourrait-il me donner un coup de main pour cette requête ?
Merci d'avance
Bonjour,
je rencontre un problème avec une de mes requêtes.
J'aimerai sélectionner tous les champs d'une table CONCOURS, dont l'utilisateur n'a pas spécifié qu'il ignorait ou avait fait ce concours. je m'explique :
Une table CONCOURS que voici :
[quote]CREATE TABLE `concours` (
`concours_id` int(11) NOT NULL auto_increment,
`concours_user_id` int(11) NOT NULL,
`concours_site_id` int(11) NOT NULL,
`concours_url` text NOT NULL,
`concours_reglement_url` text NOT NULL,
`concours_start_date` datetime NOT NULL,
`concours_end_date` datetime NOT NULL,
`concours_type` tinyint(4) NOT NULL,
`concours_participation` tinyint(11) NOT NULL,
`concours_qs` enum('Oui','Non') NOT NULL,
`concours_nb_reponses` tinyint(4) NOT NULL,
`concours_lots` text NOT NULL,
`concours_rating` tinyint(4) NOT NULL,
`concours_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`concours_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;[/quote]
Et une table USERS, que voici :
[quote]CREATE TABLE `users` (
`user_id` int(11) NOT NULL auto_increment,
`user_login` text character set latin1 collate latin1_general_cs NOT NULL,
`user_pass` text character set latin1 collate latin1_general_cs NOT NULL,
`user_mail` text NOT NULL,
`user_level` tinyint(4) NOT NULL,
`user_activated` tinyint(4) NOT NULL,
`user_activation_key` text character set latin1 collate latin1_general_cs NOT NULL,
`user_logged` tinyint(4) NOT NULL,
`user_last_session` datetime NOT NULL,
`user_last_ip` text NOT NULL,
`user_points` int(11) NOT NULL,
`user_parrain_id` int(11) NOT NULL,
`user_concours_done` text NOT NULL,
`user_concours_ignored` text NOT NULL,
`user_scoot_activated` tinyint(4) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ;[/quote]
Dans cette table USERS, il y'a les champs user_concours_done et user_concours_ignored, ou je stocke les ID des concours que l'utilisateur a fait/ignore, en séparant chaque concours_id par un ";".
Maintenant, ce que j'aimerai faire, c'est appliquer sur une large liste de concours un filtre, qui permettrait de n'afficher QUE les concours ou les checkbox "FAIT" et "IGNORE" n'ont pas été cochées, autrement dit, ou l'id de ce concours ne se retrouve ni dans le champs user_concours_done, ni dans le champs user_concours_ignored.
J'ai donc tenté une requête, que voici :
[php]$sql = "SELECT concours_id, site_name, concours_end_date, concours_type_title, concours_rating
FROM ".$prefixe."concours, ".$prefixe."concours_type, ".$prefixe."sites, ".$prefixe."users
WHERE concours_type = concours_type_id
AND concours_site_id = site_id
AND concours_activated = 1
and user_id = '".$_SESSION['user_id']."'
AND user_concours_done != % ;concours_id; % ";[/php]
et qui pour le moment me renvoie
[quote]#1064 - Erreur de syntaxe près de '%' à la ligne 1 [/quote] J'imagine bien que ma syntaxe n'est pas correcte. J'ai tenté d'utiliser le signe SQL %, car il me semblait qu'il signifiait "n'importe quoi".
Quelqu'un pourrait-il me donner un coup de main pour cette requête ?
Merci d'avance