autour de ton code, tu peux poster tout ce que tu veux comme longueur.. :wink:<?
$requete_a="SELECT localisation,codif_activ,codif_metier FROM xtra_mission WHERE id_mission='$liste_missions'";
$result_a=mysql_query ($requete_a) or die ("1".mysql_error());
while ($row_a=mysql_fetch_array($result_a)) {
$codif_activ=$row_a['codif_activ'];
$codif_metier=$row_a['codif_metier'];
$localisationE=$row_a['localisation'];
$localisationE=substr($localisationE,0,(strlen($localisationE)-1));
}
$requete_b="SELECT * FROM xtra_geociblage WHERE departement IN ('".$localisationE."')";
$result_b=mysql_query ($requete_b) or die ("2".mysql_error());
while ($row_b=mysql_fetch_array($result_b)) {
$zone1=substr($row_b['zone1'],0,(strlen($row_b['zone1'])-1));
$zone2=substr($row_b['zone2'],0,(strlen($row_b['zone2'])-1));
$zone3=substr($row_b['zone3'],0,(strlen($row_b['zone3'])-1));
$zone1=ereg_replace(";",";','",$zone1);
$zone2=ereg_replace(";",";','",$zone2);
$zone3=ereg_replace(";",";','",$zone3);
}
$liste_secteurs=substr($codif_activ,0,(strlen($codif_activ)-1));
$requete_secteurs=str_replace(';',';%\' OR secteur_activite LIKE \'%',$liste_secteurs);
$liste_metier=substr($codif_metier,0,(strlen($codif_metier)-1));
$requete_metier=str_replace(';',';%\' OR C_codification_metier LIKE \'%',$liste_metier);
// Affichage des missions sous forme de SELECT
$requete="SELECT * FROM xtra_mission WHERE agence='$agence' AND archive='0'";
$result=mysql_query ($requete) or die (mysql_error());
while ($row=mysql_fetch_array($result)) {
$intit_poste=$row['intitule_poste'];
$id_mission=$row['id_mission'];
$identreprise=$row['id_entreprise'];
$requete2="SELECT nom_entreprise FROM xtra_entreprise WHERE id_entreprise='$identreprise'";
$result2=mysql_query ($requete2) or die (mysql_error());
while ($row2=mysql_fetch_array($result2)) {
$nomE1=$row2['nom_entreprise'];
}
echo "<OPTION value='$id_mission' ";
if (isset($liste_missions)){if (ereg($id_mission,$liste_missions)){echo "selected";}}
echo ">$nomE1 - $intit_poste</OPTION>";
}
// Liste des secteurs sous forme de SELECT
$liste_secteurs=ereg_replace(";",",",$liste_secteurs);
$requete="SELECT codif_activite FROM xtra_codif_activite WHERE id_codif_activite IN (".$liste_secteurs.")";
$resultat=mysql_query ($requete) or die (mysql_error());
while($row=mysql_fetch_array($resultat)){
$liste_ok .=$row['codif_activite'].", ";
}
echo "<BR>Secteur(s) d'activité : <span style=\"color:#FF6600;\">".substr($liste_ok,0,(strlen($liste_ok)-2))."</span>";
// Liste des métiers sous forme de SELECT
$liste_metier=ereg_replace(";",",",$liste_metier);
$requete="SELECT codif_metier FROM xtra_codif_metier WHERE id_codif_metier IN (".$liste_metier.")";
$resultat=mysql_query ($requete) or die (mysql_error());
while($row2=mysql_fetch_array($resultat)){
$liste_ok2 .=$row2['codif_metier'].", ";
}
echo "<BR>Métier(s) : <span style=\"color:#FF6600;\">".substr($liste_ok2,0,(strlen($liste_ok2)-2))."</span>";
// Recherche de toutes les entreprises
$requete_calcul="SELECT nom_entreprise,id_entreprise,departement FROM xtra_entreprise WHERE statut='Cible' AND (secteur_activite LIKE '%".$requete_secteurs.";%') AND departement IN ('".$zone1.";','".$localisationE.";') ORDER BY departement ASC, nom_entreprise ASC ";
$result_calcul=mysql_query ($requete_calcul) or die (mysql_error());
$total_E=mysql_num_rows($result_calcul);
echo "<table width=\"740\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
</tr>
<tr style=\"color:#FFFFFF; background-color:#FF8F18\">
<td width=\"30\" align=\"center\">Dpt</td>
<td width=\"560\">Entreprise</td>
<td width=\"70\" align=\"right\">Contact</td>
<td width=\"80\" align=\"center\">Statut</td>
</tr>";
$megatotal_g=0;
while ($row=mysql_fetch_array($result_calcul)){
echo "<tr ";
// on surligne les lignes si cibler_pour ou ne_pas_cibler_pour contiennent un message
$requete_d="SELECT id_entreprise FROM xtra_entreprise WHERE id_entreprise='".$row['id_entreprise']."' AND cibler_pour LIKE '%MI".$liste_missions.";%'";
$requete_e="SELECT id_entreprise FROM xtra_entreprise WHERE id_entreprise='".$row['id_entreprise']."' AND ne_pas_cibler_pour LIKE '%MI".$liste_missions.";%'";
$resultat_d=mysql_query ($requete_d) or die (mysql_error());
$total_d=mysql_num_rows($resultat_d);
$resultat_e=mysql_query ($requete_e) or die (mysql_error());
$total_e=mysql_num_rows($resultat_e);
if($total_d>0){ echo "style=\"background-color:#b9f1ff\" "; }
if($total_e>0){ echo "style=\"background-image:url(images/pas_cibler.gif)\" "; }
echo ">
<td align=\"center\">".$departement."</td>
<td><A href=\"frame_contact.php?id=".$row['id_entreprise']."&histo=raz\" target=\"centre\" class=\"ciblage\">".$row['nom_entreprise']."</A></td>
<td align=\"right\">";
$requete_g="SELECT id_profil FROM xtra_profil WHERE id_entreprise='".$row['id_entreprise']."' AND C_codification_metier LIKE '%".$requete_metier."%'";
$resultat_g=mysql_query ($requete_g) or die (mysql_error());
$total_g=mysql_num_rows($resultat_g);
$requete_f="SELECT id_profil FROM xtra_profil WHERE id_entreprise='".$row['id_entreprise']."'";
$resultat_f=mysql_query ($requete_f) or die (mysql_error());
$total_f=mysql_num_rows($resultat_f);
if($total_g>0){ echo "<span style=\"color:#FF6600; font-weight:bold\">"; } else { echo "<span>"; }
echo "$total_g/$total_f</span>";
echo "</td>
<td align=\"center\">";
$requete_c="SELECT identifie FROM xtra_entreprise WHERE id_entreprise='".$row['id_entreprise']."' AND identifie LIKE '%MI".$liste_missions.";%'";
$resultat_c=mysql_query ($requete_c) or die (mysql_error());
$total_c=mysql_num_rows($resultat_c);
if($total_c>0){ echo "<span style=\"color:#006600\">IDENTIFIÉ</span>"; }
else { echo "<span style=\"color:#b4b4b4; font-size:9px;\">A identifier</span>"; }
echo "</td>
</tr>";
$megatotal_g=$megatotal_g+$total_g;
}
echo "</table>";
?>
Si on peut simplifier ça et ba chapeau!
// Affichage des missions sous forme de SELECT
$requete="SELECT * FROM xtra_mission WHERE agence='$agence' AND archive='0'";
$result=mysql_query ($requete) or die (mysql_error());
while ($row=mysql_fetch_array($result)) {
$intit_poste=$row['intitule_poste'];
$id_mission=$row['id_mission'];
$identreprise=$row['id_entreprise'];
$requete2="SELECT nom_entreprise FROM xtra_entreprise WHERE id_entreprise='$identreprise'";
$result2=mysql_query ($requete2) or die (mysql_error());
while ($row2=mysql_fetch_array($result2)) {
$nomE1=$row2['nom_entreprise'];
}
echo "<OPTION value='$id_mission' ";
if (isset($liste_missions)){if (ereg($id_mission,$liste_missions)){echo "selected";}}
echo ">$nomE1 - $intit_poste</OPTION>";
}
Il me semble qu'en utilisant un simple JOIN, et en organisant un peu mieux le code (pour la lisibilité), ça peux correspondre à ceci:
$requete="select xtra_mission.intitule_post,
xtra_mission.id_mission,
xtra_mission.id_entreprise,
xtra_entreprise.nom_entreprise
from xtra_mission
inner join xtra_entreprise
on xtra_mission.id_entreprise = xtra_entreprise.id_entreprise";
$result=mysql_query ($requete) or die (mysql_error());
while ($row=mysql_fetch_array($result))
{
$intit_poste = $row['intitule_poste'];
$id_mission = $row['id_mission'];
$identreprise = $row['id_entreprise'];
$nomE1 = $row['nom_entreprise'];
echo "<OPTION value='$id_mission' ";
if (isset($liste_missions) && ereg($id_mission,$liste_missions))
echo "selected";
echo ">$nomE1 - $intit_poste</OPTION>";
}
Et Hop, plus qu'une seule requête !! Et encore, j'ai été bien verbeux, y'a moyen de la raccourcir facilement.
un petit effort quand même..hum hum...
tout cela est intéressant mais par exemple sur ton exemple, je perds ma condition WHERE et les résultats ne sont plus les mêmes.
Code : Tout sélectionner
select xtra_mission.intitule_post,
xtra_mission.id_mission,
xtra_mission.id_entreprise,
xtra_entreprise.nom_entreprise
from xtra_mission
inner join xtra_entreprise
on xtra_mission.id_entreprise = xtra_entreprise.id_entreprise
where
xtra_mission.agence='$agence'
and xtra_mission.archive='0'// Recherche de toutes les entreprises
$requete_calcul="SELECT nom_entreprise,id_entreprise,departement FROM xtra_entreprise WHERE statut='Cible' AND (secteur_activite LIKE '%".$requete_secteurs.";%') AND departement IN ('".$zone1.";','".$localisationE.";') ORDER BY departement ASC, nom_entreprise ASC ";
$result_calcul=mysql_query ($requete_calcul) or die (mysql_error());
$total_E=mysql_num_rows($result_calcul);
echo "<table width=\"740\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
</tr>
<tr style=\"color:#FFFFFF; background-color:#FF8F18\">
<td width=\"30\" align=\"center\">Dpt</td>
<td width=\"560\">Entreprise</td>
<td width=\"70\" align=\"right\">Contact</td>
<td width=\"80\" align=\"center\">Statut</td>
</tr>";
$megatotal_g=0;
while ($row=mysql_fetch_array($result_calcul)){
echo "<tr ";
// on surligne les lignes si cibler_pour ou ne_pas_cibler_pour contiennent un message
$requete_d="SELECT id_entreprise FROM xtra_entreprise WHERE id_entreprise='".$row['id_entreprise']."' AND cibler_pour LIKE '%MI".$liste_missions.";%'";
$requete_e="SELECT id_entreprise FROM xtra_entreprise WHERE id_entreprise='".$row['id_entreprise']."' AND ne_pas_cibler_pour LIKE '%MI".$liste_missions.";%'";
$resultat_d=mysql_query ($requete_d) or die (mysql_error());
$total_d=mysql_num_rows($resultat_d);
$resultat_e=mysql_query ($requete_e) or die (mysql_error());
$total_e=mysql_num_rows($resultat_e);
if($total_d>0){ echo "style=\"background-color:#b9f1ff\" "; }
if($total_e>0){ echo "style=\"background-image:url(images/pas_cibler.gif)\" "; }
echo ">
<td align=\"center\">".$departement."</td>
<td><A href=\"frame_contact.php?id=".$row['id_entreprise']."&histo=raz\" target=\"centre\" class=\"ciblage\">".$row['nom_entreprise']."</A></td>
<td align=\"right\">";
$requete_g="SELECT id_profil FROM xtra_profil WHERE id_entreprise='".$row['id_entreprise']."' AND C_codification_metier LIKE '%".$requete_metier."%'";
$resultat_g=mysql_query ($requete_g) or die (mysql_error());
$total_g=mysql_num_rows($resultat_g);
$requete_f="SELECT id_profil FROM xtra_profil WHERE id_entreprise='".$row['id_entreprise']."'";
$resultat_f=mysql_query ($requete_f) or die (mysql_error());
$total_f=mysql_num_rows($resultat_f);
if($total_g>0){ echo "<span style=\"color:#FF6600; font-weight:bold\">"; } else { echo "<span>"; }
echo "$total_g/$total_f</span>";
echo "</td>
<td align=\"center\">";
$requete_c="SELECT identifie FROM xtra_entreprise WHERE id_entreprise='".$row['id_entreprise']."' AND identifie LIKE '%MI".$liste_missions.";%'";
$resultat_c=mysql_query ($requete_c) or die (mysql_error());
$total_c=mysql_num_rows($resultat_c);
if($total_c>0){ echo "<span style=\"color:#006600\">IDENTIFIÉ</span>"; }
else { echo "<span style=\"color:#b4b4b4; font-size:9px;\">A identifier</span>"; }
echo "</td>
</tr>";
$megatotal_g=$megatotal_g+$total_g;
}
echo "</table>";
Ce qui me faire perdre du temps, ce sont tous les petits select dans la boucle while de ma grande requete, et pour faire un JOIN la dedans et tout en une requete, je vois absolument pas !