begin process at 2012 02 14 08:19:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Deux while en alternance dans un while


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

Deux while en alternance dans un while

mercredi 6 mai 2009 à 10:41:33 | Deux while en alternance dans un while

xxiv


xxiv

Bonjour à tous,
Voilà le code qui suit, permet d'afficher des outils pédagogiques venant de deux banques de données.
Ce que j'aimerais c'est que le résultat de l'une puis de l'autre s'affiche et ainsi de suite jusqu'à ce qu'il n'y ai plus de résultat à afficher.
Pour le moment il affiche bien tout les résultat mais d'une banque de donnée puis tout ceux de l'autre, sans alternance.
Si vous pouviez me donner un petit coup de pouce, sans pour autant donner une réponse complète, vous me seriez d'une grande aide.
Merci d'avance

$number = $number_enviro + $number_rid;
echo "<b>$number</b> outils péda ont été trouvé. <b>$number_rid</b> sur RID et <b>$number_enviro</b> sur ENVIRO ";
echo "<dl class='table_results'>";
$r=0;
$e=0;
while ( $r+$e < $number )
{



//Affichage Outils FROM Rid
while ( $voir = mysql_fetch_array($sql_rid_result))
{
    $id_rid = $voir[0];
     $titre_rid = $voir[1];
     
echo "<dt>
<a href='../media/media_display.php?&amp;media_id=$id_rid'>$titre_rid</a>
</dt>
<dd>
<div class='tools_bar'></div>
<span class='list_descr_title'>Auteurs : FROM RID</span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Type de support : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Approche: </span>
<span class='enum_results'></span>
<br/><span class='list_descr_title'>Thèmes : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Publics : </span>
<span class='enum_results'></span>
</dd>";
$r++;
}
//Affichage outils FROM ENVIRO
while ( $voir2 = mysql_fetch_array($sql_enviro_result) )
{
    $id_enviro = $voir2[0];
     $titre_enviro = $voir2[1];
     
echo "<dt>
<a href='../media/media_display.php?&amp;media_id=$id_enviro'>$titre_enviro</a>
</dt>
<dd>
<div class='tools_bar'></div>
<span class='list_descr_title'>Auteurs : FROM Enviro</span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Type de support : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Approche: </span>
<span class='enum_results'></span>
<br/><span class='list_descr_title'>Thèmes : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Publics : </span>
<span class='enum_results'></span>
</dd>";
$e++;
}
};
echo "</dl>";




ps: je suis là si il vous manque des informations pour répondre.
mercredi 6 mai 2009 à 10:46:32 | Re : Deux while en alternance dans un while

faiblard

Bonjour,

Tu ne fais pas l'affichage de suite dans le while.
Tu récupères les données, tu les tries et range dans un seul tableau et tu affiches après.
-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
mercredi 6 mai 2009 à 10:59:41 | Re : Deux while en alternance dans un while

kohntark

Membre Club
Salut,

On ne voit pas l'intégralité de tes requêtes, mais pourquoi ne pas les grouper en 1 seule ?
Du style :
SELECT ENVIRO.outils, Rid.outil FROM ENVIRO, Rid

Tu pourrais ainsi parvenir à tes fins avec 1 seule boucle while

Cordialement,

Kohntark -

mercredi 6 mai 2009 à 11:14:52 | Re : Deux while en alternance dans un while

xxiv

//For Faiblard
Je ne maitrise pas vraiment les array, mais petite question si je met tout dans un tableau et que je le re sort par après dans le while.
Si je fais un echo venant de la Base1 et de la Base2, que va t'il se passer si il n'y a pas le même nombre de résultats venant de l'une et de l'autre?
La boucle va s'arrêter? Ou je vais avoir des résultats avec les variables vide?


echo "<dt>
<a href='../media/media_affiche.php?&amp;media_id=$id_rid'>$titre_rid</a>
</dt>
<dd>
<div class='tools_bar'></div>
<span class='list_descr_title'>Auteurs : FROM RID</span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Type de support : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Approche: </span>
<span class='enum_results'></span>
<br/><span class='list_descr_title'>Thèmes : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Publics : </span>
<span class='enum_results'></span>
</dd>
 <dt>
<a href='../media/media_display.php?&amp;media_id=$id_enviro'>$titre_enviro</a>
</dt>
<dd>
<div class='tools_bar'></div>
<span class='list_descr_title'>Auteurs : FROM Enviro</span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Type de support : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Approche: </span>
<span class='enum_results'></span>
<br/><span class='list_descr_title'>Thèmes : </span>
<span class='enum_results'></span><br/>
<span class='list_descr_title'>Publics : </span>
<span class='enum_results'></span>
</dd>";


//For Kohntark
voilà la première partie du scripte.
Sinon pour tout faire en une je ne vois pas trop comment faire, vu que les deux bases son physiquement distante.
Et qu'elle ne sont pas tout à fais identiques au niveau de leur construction?


//Déclaration variables Envirodoc
$_SESSION['theme_enviro'] = $t_enviro;
$_SESSION['public_enviro'] = $p_enviro;
$_SESSION['approche_enviro'] = $ap_enviro;
$_SESSION['support_enviro'] = $s_enviro;
//Déclaration variables Réseau-idée
$_SESSION['theme_rid'] = $t_rid;
$_SESSION['public_rid'] = $p_rid;
$_SESSION['approche_rid'] = $ap_rid;
$_SESSION['support_rid'] = $s_rid;
//Déclaration variable commune
$_SESSION['keyword'] = $keyword;
$_SESSION['ok'] = 1;

//Début du test d'existance des variables pour RID et création de la requête par concaténation//
rid_connect();
$sql_rid= 'SELECT DISTINCT m.media_id, m.media_name FROM media AS m ';
if (isset($_SESSION['theme_rid'])&&($_SESSION['theme_rid'])!="") 
   {
     $sql_rid .= ' INNER JOIN media_theme mth ON mth.media_id = m.media_id';
   }

if (isset($_SESSION['public_rid'])&&($_SESSION['public_rid'])!="") 
   {
     $sql_rid .= ' INNER JOIN media_public mpu ON mpu.media_id = m.media_id ';
   }
  
if (isset($_SESSION['approche_rid'])&&($_SESSION['approche_rid'])!="") 
   {
     $sql_rid .= ' INNER JOIN media_media_type map ON map.media_id = m.media_id ';
   }
  
if (isset($_SESSION['support_rid'])&&($_SESSION['support_rid'])!="") 
   {
     $sql_rid .= ' INNER JOIN media_support msup ON msup.media_id = m.media_id '; }



if (0<1)
    {
    $sql_rid .= ' WHERE m.val_state=15728640';
    }
if (isset($_SESSION['theme_rid'])&&($_SESSION['theme_rid'])!="") 
   {
     $sql_rid .= ' AND  mth.theme_id="'.$_SESSION['theme_rid'].'"';
   }

if (isset($_SESSION['titre'])&&($_SESSION['titre'])!="") 
   {
     $sql_rid .= ' AND  m.media_nom LIKE "'.$_SESSION['titre'].'"';
   }

if (isset($_SESSION['public_rid'])&&($_SESSION['public_rid'])!="") 
   {
     $sql_rid .= ' AND  mpu.public_id="'.$_SESSION['public_rid'].'"';
   }
  
if (isset($_SESSION['approche_rid'])&&($_SESSION['approche_rid'])!="") 
   {
     $sql_rid .= ' AND  map.media_type_id="'.$_SESSION['approche_rid'].'"';
   }
  
if (isset($_SESSION['support_rid'])&&($_SESSION['support_rid'])!="") 
   {
     $sql_rid .= ' AND  msup.type_id="'.$_SESSION['support_rid'].'"';
   }


if (isset($_SESSION['keyword'])&&($_SESSION['keyword'])!="")
{
$ar='SELECT DISTINCT keyword_id FROM keyword WHERE keyword_nom_search like "'.$_SESSION['keyword'].'"';

$result_ar = mysql_query($ar);

while ( $voir = mysql_fetch_row($result_ar )){
    echo $aIdsr[] = $voir[0];
};

$br="SELECT DISTINCT media_id FROM media_keyword WHERE keyword_id in (".implode(',', $aIdsr).")";

$result_br = mysql_query($br);

while ( $voir = mysql_fetch_row($result_br )){
    echo $bIdsr[] = $voir[0];
};

     $sql_rid .= " AND media_id in (".implode(',', $bIdsr).")";


}


if (0<1)
    {
    $sql_rid .= ' ORDER BY m.media_name';
    }
//FIN du test d'existance des variables pour RID et création de la requête par concaténation//
$sql_rid_result = mysql_query($sql_rid);
$number_rid = mysql_num_rows($sql_rid_result);




//Début du test d'existance des variables pour ENVIRO et création de la requête par concaténation//

enviro_connect();
$sql_enviro= 'SELECT DISTINCT m.media_id, m.media_nom FROM media AS m ';
if (isset($_SESSION['theme_enviro'])&&($_SESSION['theme_enviro'])!="") 
   {
     $sql_enviro .= ' INNER JOIN media_theme mth ON mth.media_id = m.media_id';
   }

if (isset($_SESSION['public_enviro'])&&($_SESSION['public_enviro'])!="") 
   {
     $sql_enviro .= ' INNER JOIN media_public mpu ON mpu.media_id = m.media_id ';
   }
  
if (isset($_SESSION['approche_enviro'])&&($_SESSION['approche_enviro'])!="") 
   {
     $sql_enviro .= ' INNER JOIN media_media_type map ON map.media_id = m.media_id ';
   }
  
if (isset($_SESSION['support_enviro'])&&($_SESSION['support_enviro'])!="") 
   {
     $sql_enviro .= ' INNER JOIN media_support msup ON msup.media_id = m.media_id '; }



if (0<1)
    {
    $sql_enviro .= ' WHERE m.val_state=100 AND outil_peda_id =0';
    }
if (isset($_SESSION['theme_enviro'])&&($_SESSION['theme_enviro'])!="") 
   {
     $sql_enviro .= ' AND  mth.theme_id="'.$_SESSION['theme_enviro'].'"';
   }

if (isset($_SESSION['titre'])&&($_SESSION['titre'])!="") 
   {
     $sql_enviro .= ' AND  m.media_nom LIKE "'.$_SESSION['titre'].'"';
   }

if (isset($_SESSION['public_enviro'])&&($_SESSION['public_enviro'])!="") 
   {
     $sql_enviro .= ' AND  mpu.public_id="'.$_SESSION['public_enviro'].'"';
   }
  
if (isset($_SESSION['approche_enviro'])&&($_SESSION['approche_enviro'])!="") 
   {
     $sql_enviro .= ' AND  map.media_type_id="'.$_SESSION['approche_enviro'].'"';
   }
  
if (isset($_SESSION['support_enviro'])&&($_SESSION['support_enviro'])!="") 
   {
     $sql_enviro .= ' AND  msup.type_id="'.$_SESSION['support_enviro'].'"';
   }

if (isset($_SESSION['keyword'])&&($_SESSION['keyword'])!="")
{
$ae='SELECT DISTINCT keyword_id FROM keyword WHERE keyword_nom_search like "'.$_SESSION['keyword'].'"';

$result_ae = mysql_query($ae);

while ( $voir = mysql_fetch_row($result_a )){
    echo $aIdse[] = $voir[0];
};

$be="SELECT DISTINCT media_id FROM media_keyword WHERE keyword_id in (".implode(',', $aIdse).")";

$result_be = mysql_query($be);

while ( $voir = mysql_fetch_row($result_be )){
    echo $bIdse[] = $voir[0];
}
    $sql_enviro .= " AND media_id in (".implode(',', $bIdse).")";
}

if (0<1)
    {
    $sql_enviro .= ' ORDER BY m.media_nom';
    }
//FIN du test d'existance des variables pour ENVIRO et création de la requête par concaténation//
$sql_enviro_result = mysql_query($sql_enviro);
$number_enviro = mysql_num_rows($sql_enviro_result);

mercredi 6 mai 2009 à 11:55:55 | Re : Deux while en alternance dans un while

faiblard

Tu n'es pas habitué au tableau... commence donc a approfondir t'es connaissances dessus car c'est une chose indispensable...

Le plus simple :

while n° 1 ( ...)
{
    //tu stock dans un premier tableau
}

puis

while n° 2 ( ...)
{
    //tu stock dans un second tableau
}


ensuit tu fait un for pour remplir un troisieme tableau avec tes deux premier...

et tu d'aide de phpnet pour les fonctions à utiliser
http://fr3.php.net/manual/fr/ref.array.php
-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
N'oubliez pas d'accepter pour aidez les autres quand ils cherchent !
mercredi 6 mai 2009 à 12:12:33 | Re : Deux while en alternance dans un while

kohntark

Membre Club
Je n'ai pas pris le temps de décrypter des masses le code

Puisqu'il s'agit de 2 bases distantes il faut oublier ma proposition.


L'idéal serait de ne faire qu'un seul tableau multidimensionnel basé sur un index commun aux deux résultats.
$res = array(
[db1]=> array([resultat1]=>array([0]=>'jbkj'), [resultat2]=>array([0]=>'jbkb'), etc ...),
[db2]=> array([resultat1]=>array([0]=>'jaa'), [resultat2]=>array([0]=>'arb', [1]=>'po'), etc ...)
);

Un simple foreach fera l'affaire pour l'affichage.

Quel est l'élément commun aux 2 bases ?


J'adore ton if(0<1)   il sert à quoi au juste si ce n'est à rien ?

Cordialement,

Kohntark -

mercredi 6 mai 2009 à 15:19:31 | Re : Deux while en alternance dans un while

xxiv

ok merci

le if(0<1) c'est juste pour que order by et le where s'affiche toujours même si tout les champs du formulaire reste vide.

sinon l'élément commun c'est le media_id et media_nom.
La table media est quasiment identique d'une base à l'autre au niveau des champs, il y en a un ou deux qui change.
Mais les données sont différentes. Il peut y a avoir des id commun au deux tables sans qu'il ne parle du même sujet.

Sinon connais tu un bon site où l'on traitre du tableau multidimensionnel basé sur un index commun?

Encore merci


XxIv
vendredi 8 mai 2009 à 11:35:42 | Re : Deux while en alternance dans un while

xxiv

Je n'arrive pas à comprendre la structure.
j'ai un message d'erreur

Parse error: syntax error, unexpected '[', expecting ')'

$result = array(
[rid]=>array([ID]=>array([0]=>$sql_rid), [titre]=>array([1]=>$sql_rid)),
[env]=>array([ID]=>([0]=>$sql_enviro), [titre]=>([1]=>$sql_enviro))
);


Si vous saviez me donner un petit coup de pouce = )
vendredi 8 mai 2009 à 12:00:13 | Re : Deux while en alternance dans un while

kohntark

Membre Club
Ce que je te donnais n'était pas du code valide mais un affichage du résultat qu'il faudrait obtenir.

Tu devrais commencer par te documenter sur les tableaux en PHP et a bien les assimiler (c'est la base) :
http://fr2.php.net/manual/fr/language.types.array.php
http://fr2.php.net/manual/fr/book.array.php


Cordialement,


Kohntark -



Cette discussion est classée dans : while, number, echo, enviro, rid


Répondre à ce message

Sujets en rapport avec ce message

résultat d'un while puis l'autre et on relance la boucle [ par xxiv ] Bonjour à tous,Voilà le code qui suit, permet d'afficher des outils pédagogiques venant de deux banques de données.Ce que j'aimerais c'est que le résu Récup infos saisies dans un while [ par Khenat375 ] Bonjour, débutant en php, j'aurais voulu savoir comment récupérer des infos saisies par l'utilisateur, cette saisie se faisant dans des input générés requête insert dans une boucle while [ par adnanedelphi ] bonsoir j'ai créé une requete d'insertion dans une boucle while : le code: [code=php] prepare("select * from eleve where n_class = ?"); // une enlever un while [ par spiesalex ] Salut tous le monde, include('connect.php'); $reponse = mysql_query("SELECT * FROM tribunat ORDER BY ID DESC LIMIT 0,70"); while ($donnees = mysql_f Problème de while ne fonctionnant pas [ par tony1239456 ] Bonjour j'ai un problème avec ma fonction while qui devrait m'afficher un résultat sous forme d'un tableau. Voici mon code :&l Problème due à une boucle while... [ par nanti ] Bonjour à tous ! Je panique car je tente de récupérer une variable dans un champ input de type text et je n'y parviens pas... Voici donc mon code pou Probleme de boucle while (enfin je crois) [ par blackvault ] Petit problème... ma requête n'affiche qu'un résultat alors qu'il yen a plusieurs dans la base de données... j'ai l'impression que la boucle while s'i prob de variable avec une boucle do... while [ par jonguignolo ] salut est ce quequelqu'un peu me dire pk quand $i=5 mon $nume n'est pas pris comme entier????$acqui = 2.225;$b = $acqui*1000;$num = round($b,3) pagination [ par elodieb ] bonjour,je souhaite me servir de ce code  de bourgi 220 qui me parait tres simple en esayant de l'adapter mais il ya un message d'erreurmerci d'avance Affichage tableau avec checkbox !!! [ par El_Catalan_Francesco ] Bonjour a tous, voila j'ai une premiere page qui affiche les données d'une base de donnée sous forme de tableau avec checkbox : include ("connect.inc"


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 1,966 sec (3)

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