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

  FORUM HardWare.fr
  Programmation
  PHP

  (resolu) requetes sur 900 bases mysql avec boucles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(resolu) requetes sur 900 bases mysql avec boucles

n°2000025
duyen
Posté le 08-06-2010 à 20:23:29  profilanswer
 

bonjour,
 
Voici mon problème :
Je dois creer une page en PHP pour aller interroger une table avec plusieurs champs (jusqu'ici pas trop compliqué pour moi), mais je dois interroger cette table sur plus de 900 bases mysql de mon parc.
 
- j'ai une table avec toute les IP auquelles il faut ce connecter.
- une autre table avec les champs que je veus.
 
je voudrais un résultat type :  
 
IP
résultat
résultat
IP
résultat
résultat
.....
 
Voici ce que j'ai déjà fait mais sans succés :
 

Code :
  1. <html>
  2. <body>
  3. <table>
  4. <?php
  5. set_time_limit(6000);
  6. // Connexion DataBase
  7. $root = mysql_connect('localhost','root','') OR DIE ('Probleme avec le compte Root');
  8. $base = mysql_select_db('BDO2000',$root) OR DIE ('Probleme avec la base de donnees');
  9. // Creation de la requete
  10. $sql = "Select PPV_UTF_SWITCH_FAC FROM ref_op_param_pv_utf";
  11. $sqltwo = "SELECT * FROM ref_tg_lien_pv_ip INNER JOIN ref_tg_ip ON pv_ip_idtip=ip_idtip";
  12. // Execution de la requete
  13. $reqtwo = mysql_query($sqltwo) OR DIE ('Erruer dans la requete'.$sqltwo);
  14. $req = mysql_query($sql) OR DIE ('Erreur dans la requete'.$sql);
  15. while ($tableautwo = mysql_fetch_array($reqtwo))
  16. {
  17. echo "<tr>";
  18. echo "<td>".$tableautwo['PV_IP_IDTPV']."<td>";
  19. echo "<td>".$tableautwo['IP_LIB']."<td>";
  20. echo "<td>";
  21. if ($magasin = @mysql_connect($tableautwo['IP_LIB'],'root',''))
  22. {
  23.  if($mabase = mysql_select_db('BDO2000',$magasin))
  24. while($tableau = mysql_fetch_array($req))
  25. {
  26. echo "<td>".$tableau['PPV_UTF_SWITCH_FAC']."<td>";
  27. }
  28. }
  29. }
  30. mysql_close();
  31. ?>
  32. </table>
  33. </body>
  34. </html>


 
Enfin plus je cherche et plus je n'y arrive plus. :pt1cable:  
 
j'aimerais bien un coup de pouce. Merci
Je suis dispo pour tout renseignements complémentaires.
(je ne sais même plus ou placer mes {} ! !)


Message édité par duyen le 10-06-2010 à 02:10:33
mood
Publicité
Posté le 08-06-2010 à 20:23:29  profilanswer
 

n°2000034
theredled
● REC
Posté le 08-06-2010 à 21:27:04  profilanswer
 

- commencer par virer le @ ligne 34, sinon ça te planque les erreurs et tu finis par t'arracher les cheveux.
- indente bien ton code STP, là c'est illisible, même pour toi je pense
- récupère tes données et stocke les dans un array() avant de les afficher, ce sera plus propre, au lieu de mélanger HTML, PHP et MySQL dans un gros globiboulga...


Message édité par theredled le 08-06-2010 à 21:31:18

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°2000039
duyen
Posté le 08-06-2010 à 21:46:39  profilanswer
 

Salut,
Merci de t'intéresser a mon probleme.
Je me suis improvisé dev en php et mysql. J'ai récupéré un bout de code d'une personne qui connaissait et qui avait fait une requete dans le même genre.
Malheureusement cette personne n'est plus là ! ! .
 
Bref
Peux tu détailler le récupère tes données et stock les dans un array()
 
Merci.

n°2000048
stef_dober​mann
Personne n'est parfait ...
Posté le 08-06-2010 à 22:58:02  profilanswer
 

a mon avis il faut executer la requete de selection pour chaque base, donc :

Code :
  1. <html>
  2. <body>
  3. <table>
  4. <?php
  5. set_time_limit(6000);
  6. // Connexion DataBase
  7. $root = mysql_connect('localhost','root','') OR DIE ('Probleme avec le compte Root');
  8. $base = mysql_select_db('BDO2000',$root) OR DIE ('Probleme avec la base de donnees');
  9. // Creation de la requete
  10. $sql = "Select PPV_UTF_SWITCH_FAC FROM ref_op_param_pv_utf";
  11. $sqltwo = "SELECT * FROM ref_tg_lien_pv_ip INNER JOIN ref_tg_ip ON pv_ip_idtip=ip_idtip";
  12. // Execution de la requete
  13. $reqtwo = mysql_query($sqltwo) OR DIE ('Erruer dans la requete'.$sqltwo);
  14. $req = mysql_query($sql) OR DIE ('Erreur dans la requete'.$sql);
  15. while ($tableautwo = mysql_fetch_array($reqtwo))
  16. {
  17.      echo "<tr>";
  18.      echo "<td>".$tableautwo['PV_IP_IDTPV']."<td>";
  19.      echo "<td>".$tableautwo['IP_LIB']."<td>";
  20.      echo "<td>";
  21.      if ($magasin = mysql_connect($tableautwo['IP_LIB'],'root',''))
  22.      {
  23.                 if($mabase = mysql_select_db('BDO2000',$magasin))
  24.                 {
  25.                      $req = mysql_query($sql) OR DIE ('Erreur dans la requete'.$sql);
  26.                      while($tableau = mysql_fetch_array($req))
  27.                     {
  28.                          echo "<td>".$tableau['PPV_UTF_SWITCH_FAC']."<td>";
  29.                     }
  30.                     mysql_close($magasin);
  31.                }
  32.          }
  33. }
  34. ?>
  35. </table>
  36. </body>
  37. </html>
 

voila l'idée

 

Edit : correction de syntaxe


Message édité par stef_dobermann le 08-06-2010 à 23:01:06

---------------
Tout à commencé par un rêve...
n°2000050
duyen
Posté le 08-06-2010 à 23:10:17  profilanswer
 

Merci,  
je vais tester ça et je ferai un retour quand la requete aura finie de tourner.
 
Je venais de trouver une maniere qui a l'air de fonctionner, mais je vais essayer la tienne qui est plus propre.

n°2000052
stef_dober​mann
Personne n'est parfait ...
Posté le 08-06-2010 à 23:20:37  profilanswer
 

par contre il faut vérifier la requete qui tourne en boucle

Code :
  1. $sql = "Select PPV_UTF_SWITCH_FAC FROM ref_op_param_pv_utf";


si j'ai bien compris c'est une partie des données que tu veux récupérer
ensuite reste à interroger ta table principal qui contient la liste des champs que tu veux et d'adapter cette requête en conséquence.


---------------
Tout à commencé par un rêve...
n°2000054
duyen
Posté le 08-06-2010 à 23:42:21  profilanswer
 

En faite,
je veus récupérer l'adresse IP sur laquelle je suis connecter et toute les infos du champ PPV_UTF_SWITCH_FAC de la table ref_op_param_pv_utf et ce sur chaque IP.

n°2000055
duyen
Posté le 08-06-2010 à 23:45:07  profilanswer
 

Voila celle que j'ai lancée avant ta réponse :
 

Code :
  1. <?php
  2. $start=gettimeofday();
  3. set_time_limit(6000);
  4. //Connection … la base mysql
  5. $mantis=mysql_connect('localhost','root','') or die('ERREUR 1: ERREUR DE CONNECTION A LA BASE MYSQL<br>');
  6. $database=mysql_select_db('BDO2000',$mantis) or die('ERREUR 2: ERREUR LORS DE LA SELECTION DE LA BASE DE DONNEE<br>');
  7. //Ma requete
  8. $sql_mantis="Select * FROM ref_tg_lien_pv_ip INNER JOIN ref_tg_ip ON pv_ip_idtip=ip_idtip";
  9. //Ex‚cution de la requete
  10. $requete=mysql_query($sql_mantis,$mantis) or die ('ERREUR 3: ERREUR DANS LA REQUETE SQL:<br>'.$sql_mantis);
  11. //Nb de resultat
  12. $nb_resultat=mysql_num_rows($requete);
  13. echo "<HTML>";
  14. echo "<HEAD></HEAD>";
  15. echo "<BODY>";
  16. echo "<table>";
  17. //Pour chaque site on se connecte sur la base et on passe la requete
  18. while($res=mysql_fetch_array($requete))
  19. {
  20. echo "<tr>";
  21. echo "<td>".$res['PV_IP_IDTPV']."<td>";
  22. echo "<td>".$res['IP_LIB']."<td>";
  23. echo "<td>";
  24.        
  25. //liste des version
  26. $sql="SELECT PPV_UTF_SWITCH_FAC FROM ref_op_param_pv_utf";
  27.        
  28.        
  29. if($magasin=@mysql_connect($res['IP_LIB'],'root',''))
  30. {
  31.  if($mabase=mysql_select_db('BDO2000',$magasin))
  32.  {
  33.   $resultat=mysql_query($sql,$magasin);
  34.   while ($reponse=mysql_fetch_array($resultat))
  35.   echo $reponse['PPV_UTF_SWITCH_FAC'];
  36.  }
  37.  else
  38.  {
  39.   echo "Pas de base disponible";
  40.  }
  41.  mysql_close($magasin);
  42. }
  43. else
  44. {
  45.  echo "Pas de connection.";
  46. }
  47. echo "</td>";
  48. echo "<tr>";
  49. }
  50. mysql_close($mantis);
  51. $end=gettimeofday();
  52. echo "</table>";
  53. $duree=$end['sec']-$start['sec'];
  54. echo "Duree : ".floor($duree/60)." minutes ".fmod($duree,60)." secondes.<br>";
  55. echo $sql;
  56. echo "</BODY>";
  57. echo "</HTML>";
  58. ?>


 
Elle tourne depuis un moment. J'attends le résultat.


Message édité par duyen le 08-06-2010 à 23:47:15
n°2000056
stef_dober​mann
Personne n'est parfait ...
Posté le 08-06-2010 à 23:47:28  profilanswer
 

ha ok, j'avais compris que tu avais une table qui contenais la liste des champs que tu voulais récupérer.
Alors c'est plus simple que ce que j'avais compris, tant mieux :)
mais pour info (curiosité) , ce champs contient quelle information ? et pourquoi autant de base ?


---------------
Tout à commencé par un rêve...
n°2000058
duyen
Posté le 08-06-2010 à 23:54:04  profilanswer
 

C'est pour mon boulot, je travail pour une centrale d'achats.
Et les magasins ont un progiciel qui tourne sur du mysql.
J'ai lancé l'activation d'un module en masse et maintenant je voulais connaitre ceux qui ne sont pas activés.
En tout cas, ça me retire une grosse épine. Car on a plus personne chez nous pour ce genre de dev.


Message édité par duyen le 08-06-2010 à 23:57:43
mood
Publicité
Posté le 08-06-2010 à 23:54:04  profilanswer
 

n°2000059
duyen
Posté le 09-06-2010 à 00:03:39  profilanswer
 

Ce forum est tres reactif, et ça c'est top. :)

n°2000161
stef_dober​mann
Personne n'est parfait ...
Posté le 09-06-2010 à 11:49:29  profilanswer
 

ensuite je suis parti me couché ;)
alors ton script, il a fini ?  
pour les tests du scripts on aurais pu utiliser une limite des adresses ip

Code :
  1. $sqltwo = "SELECT * FROM ref_tg_lien_pv_ip INNER JOIN ref_tg_ip ON pv_ip_idtip=ip_idtip limit 0,5";


pour chercher que sur 6 bases.


---------------
Tout à commencé par un rêve...
n°2000387
duyen
Posté le 10-06-2010 à 00:26:11  profilanswer
 

Salut,
 
C'est cool, elle a marchée et j'ai eu exactement ce que je voulais.
Encore merci.


Message édité par duyen le 10-06-2010 à 00:27:30
n°2000402
stef_dober​mann
Personne n'est parfait ...
Posté le 10-06-2010 à 09:38:05  profilanswer
 

alors c'est bon :)
pour info, il a fallu combien de temps ?


---------------
Tout à commencé par un rêve...
n°2000678
duyen
Posté le 10-06-2010 à 20:57:57  profilanswer
 

Quand je l'ai fais chez moi, ça a mit grosse heure. Et sur la base de prod, 1/4 d'heure.  
Mais chez moi je ne suis pas connecté directement sur les magasins.

n°2000696
stef_dober​mann
Personne n'est parfait ...
Posté le 10-06-2010 à 21:57:51  profilanswer
 

waou quand même 1/4 d'heure !!


---------------
Tout à commencé par un rêve...

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

  (resolu) requetes sur 900 bases mysql avec boucles

 

Sujets relatifs
[Résolu] Petit problème "for" déjà dans une boucle ...[RESOLU] [SHELL] extraction et reformattage des données d'un fichier
Optimisation d'une requête MySQL[resolu] GWT et image
[Resolu] Ouvrir un fichier ".csv" par macro proprement[Résolu] Positionnement d'une image/banniere dans le CSS
Insérer un fchier .zip dans BD mysql en PHPmysql_insert_id() expects parameter 1 to be resource
[résolu]Accorder les hauteurs de deux <div>Image dans un champ BLOB sous MySQL ???
Plus de sujets relatifs à : (resolu) requetes sur 900 bases mysql avec boucles


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