non

non - PHP - Programmation

Marsh Posté le 08-08-2012 à 00:47:56    

j'ai un probleme.. je veux afficher des numeros de telephone et leur zone mais les deux table n'ont pas un lien direct il y en a 2 autre table par intermediare ; lors de l'affichage tous les num apparaissent mais pour les zone seulement la 1ere zone s'affiche et les autres non. pourriez vous m'aider c'est mon code:  
<?php
 
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', ''#;  
mysql_select_db #'tunisie_telecom', $base# ;  
?>
 
<table border=4 bgcolor="#51A8FF" st#le="border-color: #003162">
<TR><th>Numero</th><th>Ref_Derangement</th><th>Etat</th><th>Zone</th></TR>
<?php
 
// lancement de la requete
$sql = 'SELECT numero,refderangement,etat FROM derangementgis where etat != "BAE" and etat !="AN"';  
$num_tel ='select num_tel_du,num_tel_au,rg_id from quotas_central_lt';  
$mslink='select mslink,ccl from rg';
$ccl='select code_ccl,nom_ccl from ccl ';
 
// on lance la requête #mysql_query# et on impose un message d'erreur si la requête ne se passe pas bien #or die#
$req = mysql_query#$sql# ;  
$req1=mysql_query#$num_tel#;
$req2=mysql_query#$mslink#;
$req3=mysql_query#$ccl#;
// on recupere le resultat sous forme d'un tableau
while#$data = mysql_fetch_array#$req##
{
 $num=$data#'numero'#;
 $eta=$data#'etat'#;
 $ref=$data#'refderangement'#;
 
 // on affiche les résultats
 echo '<tr><td width="300" st#le="border-color: #003162; "><div align="center">',$num,'<td width="300" st#le="border-color: #003162; "><div align="center">',$ref,'</td><td width="300" st#le="border-color: #003162; "><div align="center">',$eta,'</td>';
 
 
 while #$data1 = mysql_fetch_array#$req1##
 {
  if#$num>=$data1#'num_tel_du'# and $num<=$data1#'num_tel_au'##
  {
   
   while #$data2 = mysql_fetch_array#$req2##
   {
    if#$data2#'mslink'#==$data1#'rg_id'##
    {
     
     while #$data3 = mysql_fetch_array#$req3##
     {
      if#$data3#'code_ccl'#==$data2#'ccl'##
      {
      $zone=$data3#'nom_ccl'#;
      echo'<td width="300" st#le="border-color: #003162; "><div align="center">',$zone,'</td></tr>';
      }
     }
    }
   }
  }
 }
       
}
mysql_close ##;  
?>

Reply

Marsh Posté le 08-08-2012 à 00:47:56   

Reply

Marsh Posté le 08-08-2012 à 08:41:17    

normal que les parenthèses soient remplacées par des # :??:
 
Merci aussi de mettre un titre explicite au topic.
 
Pour ton pb, il faut faire des jointures entre les tables concernées. D'une manière générale, apprendre le sql serait une bonne idée ;)
 
Ex : where etat != "BAE" and etat !="AN"';     peut devenir avantageusement where etat NOT IN ("BAE", "AN"');


Message édité par rufo le 08-08-2012 à 08:42:14

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-08-2012 à 19:07:00    

pour les # j'ai copier mon code avec des parenthese mais jcp pk sont transformés... koi faire si j n'ai pas des jointures directe entre les 2 table car j'ai juste qqes tables extraites d'une base de donnée d'une societé et j peux pas avoir tte la base avec tous les liens

Reply

Marsh Posté le 09-08-2012 à 19:08:14    

Ca serait bien que tu nous postes le MCD des tables que t'as actuellement de dispo...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-08-2012 à 11:26:58    

Titre ? :o

asmarouis a écrit :

pour les # j'ai copier mon code avec des parenthese mais jcp pk sont transformés...


Utilises la balise code (bouton C/C++) ou fixe :jap:  
 

<?php
 
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');  
mysql_select_db #'tunisie_telecom', $base) ;  
?>
 
<table border=4 bgcolor="#51A8FF" style="border-color: #003162">
<TR><th>Numero</th><th>Ref_Derangement</th><th>Etat</th><th>Zone</th></TR>
<?php
 
// lancement de la requete
$sql = 'SELECT numero,refderangement,etat FROM derangementgis where etat != "BAE" and etat !="AN"';  
$num_tel ='select num_tel_du,num_tel_au,rg_id from quotas_central_lt';  
$mslink='select mslink,ccl from rg';
$ccl='select code_ccl,nom_ccl from ccl ';
 
// on lance la requête #mysql_query# et on impose un message d'erreur si la requête ne se passe pas bien #or die#
$req = mysql_query($sql);  
$req1=mysql_query($num_tel);
$req2=mysql_query($mslink);
$req3=mysql_query($ccl);
// on recupere le resultat sous forme d'un tableau
while($data = mysql_fetch_array($req))
{
 $num=$data('numero');
 $eta=$data('etat');
 $ref=$data('refderangement');
 
 // on affiche les résultats
 echo '<tr><td width="300" style="border-color: #003162; "><div align="center">',$num,'<td width="300" style="border-color: #003162; "><div align="center">',$ref,'</td><td width="300" style="border-color: #003162; "><div align="center">',$eta,'</td>';
 
 
 while ($data1 = mysql_fetch_array($req1))
 {
  if($num>=$data1('num_tel_du') and $num<=$data1('num_tel_au'))
  {
   
   while ($data2 = mysql_fetch_array($req2))
   {
    if($data2('mslink')==$data1('rg_id'))
    {
     
     while ($data3 = mysql_fetch_array($req3))
     {
      if($data3('code_ccl')==$data2('ccl'))
      {
      $zone=$data3('nom_ccl');
      echo'<td width="300" style="border-color: #003162; "><div align="center">',$zone,'</td></tr>';
      }
     }
    }
   }
  }
 }
       
}
mysql_close ();  
?>


 
Ensuite à ta ligne  

// on lance la requête #mysql_query# et on impose un message d'erreur si la requête ne se passe pas bien #or die#


Il manque justement après le "or die" :D donc pas top pour le débug.
Ensuite stocké des commandes dans des variables, pas top non plus. Donc :

// lancement de la requete
$sql = 'SELECT numero,refderangement,etat FROM derangementgis where etat != "BAE" and etat !="AN"';  
$num_tel ='select num_tel_du,num_tel_au,rg_id from quotas_central_lt';  
$mslink='select mslink,ccl from rg';
$ccl='select code_ccl,nom_ccl from ccl ';
 
// on lance la requête #mysql_query# et on impose un message d'erreur si la requête ne se passe pas bien #or die#
$req = mysql_query($sql);  
$req1=mysql_query($num_tel);
$req2=mysql_query($mslink);
$req3=mysql_query($ccl);


Devient :

// lancement de la requete
$req = mysql_query(SELECT numero,refderangement,etat FROM derangementgis WHERE etat != "BAE" and etat !="AN);  
$req1=mysql_query(SELECT num_tel_du,num_tel_au,rg_idt FROM quotas_central_lt);
$req2=mysql_query(SELECT mslink,ccl FROM rg);
$req3=mysql_query(SELECT code_ccl,nom_ccl FROM ccl);


Enfin tu stockes directement des morceaux entiers de bases dans des variables ? [:s@ms:2]


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 10-08-2012 à 21:34:55    

bardiel a écrit :


Il manque justement après le "or die" :D donc pas top pour le débug.
Ensuite stocké des commandes dans des variables, pas top non plus. Donc :

// lancement de la requete
$sql = 'SELECT numero,refderangement,etat FROM derangementgis where etat != "BAE" and etat !="AN"';  
$num_tel ='select num_tel_du,num_tel_au,rg_id from quotas_central_lt';  
$mslink='select mslink,ccl from rg';
$ccl='select code_ccl,nom_ccl from ccl ';
 
// on lance la requête #mysql_query# et on impose un message d'erreur si la requête ne se passe pas bien #or die#
$req = mysql_query($sql);  
$req1=mysql_query($num_tel);
$req2=mysql_query($mslink);
$req3=mysql_query($ccl);


Devient :

// lancement de la requete
$req = mysql_query(SELECT numero,refderangement,etat FROM derangementgis WHERE etat != "BAE" and etat !="AN);  
$req1=mysql_query(SELECT num_tel_du,num_tel_au,rg_idt FROM quotas_central_lt);
$req2=mysql_query(SELECT mslink,ccl FROM rg);
$req3=mysql_query(SELECT code_ccl,nom_ccl FROM ccl);


Enfin tu stockes directement des morceaux entiers de bases dans des variables ? [:s@ms:2]


 
 
hormis les quotes qui manquent à tes mysql_select (oui ça attend un String ;))  je pense que stocker les requêtes en variable n'est pas une si mauvaise idée pour débugger... ça permet de construire la requête, même si dans le cas que tu mets en évidence ça ne sert effectivement pas plus que ça.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 10-08-2012 à 23:59:28    

C'est surtout la façon de nommer les variables qui prête à confusion qui est à souligner, le procédé visant à stocker la requête dans une variable est comme le souligne NewsletTux pas si dénué d’intérêt.
 
Mais nommer la première $sql, puis derrière donner des noms qui laissent croire que le contenu est le résultat de la requête n'est pas vraiment une bonne méthode.

Reply

Marsh Posté le 13-08-2012 à 12:51:08    

NewsletTux a écrit :

hormis les quotes qui manquent à tes mysql_select (oui ça attend un String ;))


Hmmmfectivement, mais ça fait un moment que je n'ai pas fait de PHP :D


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed