Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3203 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Utiliser in_array avec mysql_fetch_array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Utiliser in_array avec mysql_fetch_array

n°1426526
PedroBD
Posté le 17-08-2006 à 11:47:13  profilanswer
 

Bonjour,
 
J'ai une requête SQL qui me crée un tableau avec des doublons et je voudrais utiliser in_array pour les enlever (SELECT DISTINCT est inefficace, car ma requête est un peu complexe...)
 
Ma syntaxe suivante ne marche pas:
 

Code :
  1. $tab=mysql_fetch_array($rech);
  2. while ($nb<=mysql_num_rows($rech_tmp)) {
  3.        $tmp=mysql_fetch_array($rech_tmp);
  4.        if (! in_array($tmp['Nom'],$tab))
  5.                 $tab=mysql_fetch_array($rech);
  6. $nb++;
  7. }


 
Ce que le code est censé faire:
$tmp reçoit les valeurs de rech_tmp et compare la dernière valeur à ce que contient déjà $tab. Si $tab ne contient pas encore la valeur on relance la requête.
 
PB:  
- Je n'arrive pas à rechercher la valeur dans $tab avec in_array
- Vous allez aussi me dire que je lance 3 fois un mysql_fetch_array...je sais ça prend des ressources, mais j'ai pas trouvé mieux...c'est possible de faire tout ceci avec 1 seul fetch_array?
 
Merci de votre aide.


Message édité par PedroBD le 17-08-2006 à 13:47:56
mood
Publicité
Posté le 17-08-2006 à 11:47:13  profilanswer
 

n°1426530
goumag
Posté le 17-08-2006 à 11:54:59  profilanswer
 

pourquoi tu utilise un coup $rech et un autre coup $rech_tmp ??

n°1426533
PedroBD
Posté le 17-08-2006 à 11:58:55  profilanswer
 

T'as raison, c'est pas utile. Mais tu sais comment utiliser in_array dans mon cas?

n°1426543
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-08-2006 à 12:19:17  profilanswer
 

alors question 1, pourquoi tu dis que la requête est un peu complexe? A mon avis tu aurais quand même plus vite fait de faire ça en SQL !!!
 
question2: qu'est ce que tu espères faire avec ceux que tu trouves? La tu fais juste un test pour savoir s'il est dans les suivants mais bon...
 
question3: tu te rends bien compte que si j'ai par exemple


1 A
2 B
3 C
4 A
5 C


Et que je cherche les doublons ton truc va faire:
- 1er element: 'A' je regarde si je le trouve dans les suivants
- je dépile mes résultats 2 B, c'est pas bon
- je dépile mes résultats 3 C, c'est pas bon
- je dépile mes résultats 4 A, c'est bon. Y'a doublon!
- je passe a la ligne suivante,je depile et j'ai 5C. C'est le dernier, je m'arrête.
Ce qui doit être très loin du résultat escompté, vu que C était bien en doublons.

n°1426581
PedroBD
Posté le 17-08-2006 à 13:15:36  profilanswer
 

OK, t'as raison, je vais chercher le bon algo. Le seul truc que je voudrais pour l'instant, c'est connaître la synthaxe pour utiliser in_array après un mysql_fetch_array.
 
Pour ce qui est de la requête, j'ai pas mal d'INNER JOIN et j'ai des tables intermédiaires dans lesquelles je peux avoir plusieurs fois les mêmes valeurs. J'ai déjà essayé de mettre HAVING ou GROUP BY, mais ça fait rien de mieux.
Pour l'instant je pense quand même que le plus simple est de supprimer les doublons de ma requête finale en utilisant in_array.
 
En gros, si un truc comme:
 
if (in_array($tmp['Nom']),$tab)
 
Merci de vos réponses.

n°1426587
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-08-2006 à 13:28:33  profilanswer
 

PedroBD a écrit :

OK, t'as raison, je vais chercher le bon algo. Le seul truc que je voudrais pour l'instant, c'est connaître la synthaxe pour utiliser in_array après un mysql_fetch_array.


bin la syntaxe de ton truc est correct, c'est juste que tu en fais n'importe quoi [:spamafote]
 

PedroBD a écrit :

Pour ce qui est de la requête, j'ai pas mal d'INNER JOIN et j'ai des tables intermédiaires dans lesquelles je peux avoir plusieurs fois les mêmes valeurs. J'ai déjà essayé de mettre HAVING ou GROUP BY, mais ça fait rien de mieux.


C'était la bonne voie ...

PedroBD a écrit :

Pour l'instant je pense quand même que le plus simple est de supprimer les doublons de ma requête finale en utilisant in_array.


Je continue a penser que non, surtout avec le code que tu as donné [:spamafote]
 

n°1426595
PedroBD
Posté le 17-08-2006 à 13:44:30  profilanswer
 

Je continue a penser que non, surtout avec le code que tu as donné [:spamafote][/quotemsg]
 
OK, j'ai trouvé avec in_array et mysql_fetch_array. Je pense que ça peut intéresser alors voici le code que j'ai écrit:
 

Code :
  1. //Tant qu'on trouve des lignes
  2. while ($tmp=mysql_fetch_array($rech)) {
  3.   //Création d'un tableau temporaire   
  4.   if (!in_array ($tmp['Nom'],$tabtmp)) {
  5.      
  6.      $tabtmp[$i]=$tmp['Nom'];
  7.     //Stockage de la valeur à afficher s'il ne s'agit pas d'un doublon
  8.      $aff=$tmp;
  9.  
  10.    $i++;
  11.   } //Fin du if
  12. } //Fin du while


 
Je pense qu'on peut faire encore plus simple, sans passer par un $tmp, et en supprimant la ligne de $aff si c'est un doublon, mais bon ça marche comme ça...
 
Merci de votre aide.


Message édité par PedroBD le 17-08-2006 à 13:45:01

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Utiliser in_array avec mysql_fetch_array

 

Sujets relatifs
[Resolu][C#.NET] Appel methode static impossible ?[Résolu] Erreur de syntaxe, qui peut m'aider ?
[Résolu] Bug embêtant avec les variables de session[NSIS][Résolu] comparaison de string
débutant - vérifier le résultat de mon code [RESOLU][Résolu]Signe non reconnu dans une boucle
[RESOLU][CSS] Problème de float[Résolu] [C#.Net] Passer un argument à partir d'une page Web
résolu [API win32] probleme avec un petit exercice[MySql] : requete de premier elettres d'un clonne
Plus de sujets relatifs à : [Résolu] Utiliser in_array avec mysql_fetch_array


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR