begin process at 2012 02 12 09:22:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

fetch_array revoi trop de donnée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fetch_array revoi trop de donnée

jeudi 5 janvier 2006 à 07:50:12 | fetch_array revoi trop de donnée

bidulesfr

Salut,

J'ai un petit soucis dans ce petit script
Il regarde les personnes qui se sont connecté sur le forum. Et réagit en fonction de leur temps d'inactivité (envoi d'un mail, ou autre)
Ici, pour l'exemple, j'ai juste demandé l'affichage à l'arrache des pseudo des 'inactifs' depuis une semaine.
Et la ca bug. Aller soyons fou, disons que il n'y a qu'une personne qui correspond aux criteres. Donc normalement, l'echo me revoi juste une le pseudo.
Or la, il me renvoi le pseudo un paquet de fois. En faite, il le renvoi autant de fois qu'il y a d'entrée dans la table phpbb_user_group avec le groupe 6 (reformulation au cas ou, il renvoi autant de fois le pseudo qu'il y a de personne dans le groupe d'utilisateur que j'ai demandé)
Si le script doit envoyer un mail, ca va vite spammer quelque boite mail tout ca

A mon avi c'est juste la requete sql qui merdouille, mais au cas ou, je donne tout le code.

<?php
$db=mysql_connect($dbhost,$dblogi,$dbpass)or die(mysql_error());
mysql_select_db($dbbase,$db)or die(mysql_error());
$sql="SELECT *
FROM phpbb_users U, phpbb_user_group UG, select_team ST
WHERE U.user_id = ST.user_id = UG.user_id
AND UG.group_id = 6
ORDER BY `user_lastvisit` DESC";
$res=mysql_query($sql, $db) or die (mysql_error());
while ($donnees = mysql_fetch_array($res) )
{
     //La fait des variable inutile, mais je trouve ca plus simple à manipuler ;)
        $avi = $donnees['avi'];  // On colle l'indice de passage dans une variable $avi
        $timeActuel = time(); //Donne le timestamp actuel
        $semaine = $timeActuel - (7 * 24 * 60 * 60); // Donne le timestamp d'il y a une semaine
        $timestamp = $donnees['user_lastvisit']; //Colle la derniere visite dans une variable sous forme du timestamp
        $semaines = $timeActuel - (2 * (7 * 24 * 60 * 60)); //Donne le timestamps d'il y a deux semaines
        $pseudo = $donnees['phpbb_users'];
        if ($timestamp > $semaines)
        {
                if ($avi != 1 AND $avi != 0)
                {
                        echo $pseudo; //on affiche tous les pseudo qui correspondent.
                }
        }
}
?>
jeudi 5 janvier 2006 à 09:43:10 | Re : fetch_array revoi trop de donnée

malalam

Administrateur CodeS-SourceS
Hello,

ta requête foire effectivement. Pas assez de critères dans le WHERE.
Montre la structure de tes 3 tables.
jeudi 5 janvier 2006 à 09:53:35 | Re : fetch_array revoi trop de donnée

bidulesfr

Pour la table phpbb_users et phpbb_user_groupe, c'est les tables d'origines
 du forum phpbb (donc pas des petite table dsl  )
Aller on commence par la 1ere, le gros molosse, les deux suivantes sont de taille raisonable.
phpbb_users
  `user_id` mediumint(8) NOT NULL auto_increment,
  `user_active` tinyint(1) default '1',
  `username` varchar(25) NOT NULL default '',
  `user_password` varchar(32) NOT NULL default '',
  `user_session_time` int(11) NOT NULL default '0',
  `user_session_page` smallint(5) NOT NULL default '0',
  `user_lastvisit` int(11) NOT NULL default '0',
  `user_regdate` int(11) NOT NULL default '0',
  `user_level` tinyint(4) default '0',
  `user_posts` mediumint(8) unsigned NOT NULL default '0',
  `user_timezone` float NOT NULL default '0',
  `user_style` tinyint(4) default NULL,
  `user_lang` varchar(255) default NULL,
  `user_dateformat` varchar(14) NOT NULL default 'd M Y H:i',
  `user_new_privmsg` smallint(5) unsigned NOT NULL default '0',
  `user_unread_privmsg` smallint(5) unsigned NOT NULL default '0',
  `user_last_privmsg` int(11) NOT NULL default '0',
  `user_emailtime` int(11) default NULL,
  `user_viewemail` tinyint(1) default NULL,
  `user_attachsig` tinyint(1) default NULL,
  `user_allowhtml` tinyint(1) default '1',
  `user_allowbbcode` tinyint(1) default '1',
  `user_allowsmile` tinyint(1) default '1',
  `user_allowavatar` tinyint(1) NOT NULL default '1',
  `user_allow_pm` tinyint(1) NOT NULL default '1',
  `user_allow_viewonline` tinyint(1) NOT NULL default '1',
  `user_notify` tinyint(1) NOT NULL default '1',
  `user_notify_pm` tinyint(1) NOT NULL default '1',
  `user_popup_pm` tinyint(1) NOT NULL default '0',
  `user_rank` int(11) default '0',
  `user_avatar` varchar(100) default NULL,
  `user_avatar_type` tinyint(4) NOT NULL default '0',
  `user_email` varchar(255) default NULL,
  `user_icq` varchar(15) default NULL,
  `user_website` varchar(100) default NULL,
  `user_from` varchar(100) default NULL,
  `user_sig` text,
  `user_sig_bbcode_uid` varchar(10) default NULL,
  `user_aim` varchar(255) default NULL,
  `user_yim` varchar(255) default NULL,
  `user_msnm` varchar(255) default NULL,
  `user_occ` varchar(100) default NULL,
  `user_interests` varchar(255) default NULL,
  `user_actkey` varchar(32) default NULL,
  `user_newpasswd` varchar(32) default NULL,
  `user_inactive_emls` tinyint(1) NOT NULL default '0',
  `user_inactive_last_eml` int(11) NOT NULL default '0',
  `user_tt` tinyint(1) NOT NULL default '0',
  `user_ttavatar` tinyint(1) NOT NULL default '0',
  `user_ttrang` tinyint(1) NOT NULL default '0',

phpbb_user_group
  `group_id` mediumint(8) NOT NULL default '0',
  `user_id` mediumint(8) NOT NULL default '0',
  `user_pending` tinyint(1) default NULL,

select_team
  `user_id` int(11) NOT NULL default '0',
  `avi` int(11) NOT NULL default '0'
jeudi 5 janvier 2006 à 10:10:01 | Re : fetch_array revoi trop de donnée

malalam

Administrateur CodeS-SourceS
Oula...

tu veux mon avis ? Essaye déjà de la faire sous phpmyadmin, ta requête.

jeudi 5 janvier 2006 à 10:37:31 | Re : fetch_array revoi trop de donnée

bidulesfr

J'ai fais une petite erreur dans ce que j'ai dis, ce script la ne me retourne aucun enregistrement quelque soit les conditions. (C'étais avant que je bidouille que ca m'en revoyé de trop. Quoi boulet ?)

Je retrouve plus la requette qui me retrouver tous les pseudo. Celle la m'en revoi en faite aucun. Malgres que normalement j'ai bien un champ qui correspond.

Sinon quand je fais mes requete sql sur phpmyadmin, ca me redonne le même résultat. Soit aucun enregistrement (MySQL n'a retourné aucun enregistrement). Soit plusieurs fois le meme champ (pour l'ancienne requete, je regarde pour la refaire également)
jeudi 5 janvier 2006 à 10:59:19 | Re : fetch_array revoi trop de donnée

malalam

Administrateur CodeS-SourceS
Réponse acceptée !
Je ne sais pas comment t'expliquer.
Voici une création de requête sur 4 tables (prise de mon projet actuel) :
  function getList($comtId = null, $entId = null, $contId = null, $artId = null)
        {
        $whereClauseArr = array ();
        if ($comtId !== null) {
            $whereClauseArr[] = ' AND (sk.comt_id = '.$comtId.')';
        }
        if ($entId !== null) {
                    $whereClauseArr[] = ' AND (sk.ent_id = '.$entId.')';
        }
        if ($contId !== null) {
                    $whereClauseArr[] = ' AND (sk.cont_id = '.$contId.')';
        }
        if ($artId !== null) {
                    $whereClauseArr[] = ' AND (sk.art_id = '.$artId.')';
        }
                $sQuery = 'SELECT
                            sk.sk_id, rg.rg_libelle, zone.zone_libelle, etg.etg_libelle
                        FROM
                            stocks sk, sk_rangees rg, sk_zones zone, sk_etages etg
                        WHERE
                            (sk.rg_id = rg.rg_id) AND
                            (sk.zone_id = zone.zone_id) AND
                            (sk.etg_id = etg.etg_id)
                        ';

        foreach ($whereClauseArr as $qry) {
            $sQuery .= $qry;
        }
        $sQuery .= ' ORDER BY
                             sk.rg_id, sk.zone_id, sk.etg_id';
                $aTmp = array();
                $this->oDB->query($sQuery);

                while($a = $this->oDB->fetch_assoc() ) {
                        $aTmp[$a['sk_id']] = $a['rg_libelle'].$a['zone_libelle'].$a['etg_libelle'];
                }
                return $aTmp;
        }

Je ne suis pas sûr, en fait, que tes 3 tables soient bien structurées.

vendredi 6 janvier 2006 à 04:29:07 | Re : fetch_array revoi trop de donnée

bidulesfr

Réponse acceptée !
Salut,

Hééé bin, moi qui trouve que mes requete commence à devenir compliqué pour moi, quand je vois la tienne .... je me dis que mon cerveau commence à manquer de mémoire rame

En faite je suis repartie de ton premier post ou tu parlais d'un manque d'info dans le WHERE, et en inspirant de ce que tu as fait dans ta requete $sQuery, je suis arrivé la dessus. Et visiblement ca marche.

$sql="SELECT *
FROM phpbb_users U, phpbb_user_group UG, select_team ST
WHERE (
U.user_id = ST.user_id
)
AND (
UG.user_id = ST.user_id
)
AND (
U.user_id = UG.user_id
)
AND UG.group_id =6
ORDER BY `user_lastvisit` DESC"

J'ai fais que un essai, mais bon, on va dire que c'est bon hein :P
J'accepte ton dernier post, meme si la réponce est en faite mélangé un peu dans chaque post et que je donne la solution final à la fin (je vais quand meme pas accepter mon propre post hein, ca ferait tache.

Merci beaucoup du coup de main. Tu ma enlevé une grosse épine du pied.

A++
vendredi 6 janvier 2006 à 08:21:08 | Re : fetch_array revoi trop de donnée

malalam

Administrateur CodeS-SourceS
Si si, j'accepte ta réponse avec :-) C'est toi qui donne la réponse finale, donc ceux qui auront le même genre de problème, et regarderont ce post, pourront avoir ainsi la méthode que tu as utilisé :-)
On a le droit de valider ses propres post :-) Je le fais pour toi du coup.



Cette discussion est classée dans : mysql, timestamp, user, pseudo, avi


Répondre à ce message

Sujets en rapport avec ce message

probleme d'inscription [ par jojo403 ] Bonsoir, voici mon script : // serveur$sql_serveur="localhost";// login$sql_user="root";// pass$sql_passwd="";// bdd$sql_bdd="enjoy";// Et on se conne pb de boucle je supose en php ( navigation dans un tableau associé) [ par fredericmaill ] Bonjour @ tous !!! Voila je vous explique mon problème, je réalise un système d’authentification en php avec un system de sessions. Ce script permet l pb de boucle je supose en php ( navigation dans un tableau associé) [ par fredericmaill ] Bonjour @ tous !!! Voila je vous explique mon problème, je réalise un système d’authentification en php avec un system de sessions. Ce script permet l exection 2 fois du code? [ par vieaiepie ] Bonjour, J'ai fais un fichier php qui permet d'importer des données à partir d'un fichier texte (fichier de 400 lignes de code que je ne vais pas d&# Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in... [ par Florent06 ] SalutJe suis en train de faire une zone membres pour mon site. Dans la page d'inscription, il y a un script (pris ici) qui sert à double message avec F5 [ par GAMERR ] Bonjour à tous je tient a dire que jai chercher avant de poster.Je suis dans la réalisation d'un livre d'or en php biensur il marche très bien sauf qu Probleme de requete mysql [ par momoxe ] Bonjour, j'ai fait un code en php pour mon site web et il ne fonctionne pas.A chaque fois, mon serveur me renvoie "parse error on line 5, ce qui corre Erreur MySQL [ par Arnauti ] Bonjour a tous, je veux insérer quelque chose dans ma base de donnée mais il y a un bug et je ne comprends pas du tout pourquoi ca ne marche pas. Voic PROB SQL [ par StiriX ] Bonjour je me lance dans mysql mais je bloque. Comment connaitre localhost user et password???? en sachant que je teste juste sur mon ordinateur et ap determiner un id de session [ par biloutte33 ] bonjour voici mon code pour ma le login d'un membre:  mysql_select_db("informaticman");  if(!mysql_connect) {echo "Connexion impossible à la b


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales