|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Invité de passage
![]() Date d'inscription: mars 2006
Messages: 9
|
Bonjour à tous,
j'essaie d'extraire des données dans ma base de BDD et je n'y arrive pas. Ma BDD est ouverte et prête pour l'extraction. voici un print_r de sa structure. Array ( [id] => 849 [owner] => 580 [orderID] => 990 [title] => SELLING R/C AIRPLANE KITS & ARF COLLECTION [dateadded] => 2009-10-24 19:39:49 [TopNotified] => N [section] => 1 ) Je peux extraire les données en général avec ce code: Code :
$sSQL = "SELECT p.id,p.owner,p.orderID,p.title,p.dateadded,TopNotified,p.section FROM ".PREFIX."listings AS p INNER JOIN ".PREFIX."users AS u ON p.owner=u.id WHERE display='Y' AND featured7 <> 'Y' AND notified <>'Y' ORDER BY section, dateadded DESC"; $result=$db->query($sSQL); $numrows = $result->size(); while($rs=$result->fetch()) { echo "ID = ".$rs['id']."<br />"; echo "Owner = ".$rs['owner']."<br />"; echo "Order ID = ".$rs['orderID']."<br />"; echo "Title= ".$rs['title']."<br />"; echo "Date = ".$rs['dateadded']."<br />"; echo "Notified = ".$rs['TopNotified']."<br />"; echo "Section = ".$rs['section']."<br />"; } Je reçois ceci: ID = 1550 Owner = 939 Order ID = 1757 Title= Pilot Portraits: Pilots Figures For Your R/C Plane Date = 2009-09-16 17:09:42 Notified = N Section = 1 ID = 1448 Owner = 891 Order ID = 1635 Title= SMITH MINI PLANE Date = 2009-08-23 12:38:20 Notified = N Section = 1 ID = 1340 Owner = 218 Order ID = 1504 Title= Kaos 40 prêt à voler. Date = 2009-08-03 21:24:17 Notified = N Section = 1 Le trie de la BDD se fait sur les champs [section] et [dateadded] Pour chaque [section], à partir du (ex: 30eme clients) de cette même [section ] j'aimerais les affichés. J'ai essayé d'inclure un foreach dans le while mais je ne trouve pas la bonne façon. voici un exemple plus concret: j'ai une BDD de 500 clients dans 5 [section] différentes classées comme ceci: Section 1 = 150 clients (Je veux afficher les 120 prochains clients de la section 1) Section 2 = 40 clients (Je veux afficher les 10 prochains clients de la section 2) Section 3 = 100 clients (Je veux afficher les 70 prochains clients de la section 3) Section 4 = 60 clients (Je veux afficher les 30 prochains clients de la section 4) Section 5 = 150 clients (Je veux afficher les 120 prochains clients de la section 5) Comment travailler avec un foreach dans un while pour extraire les données voulus? |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: juillet 2005
Messages: 10 018
|
Tu n'as pas bien compris ce que faisais foreach : foreach parcourt un tableau PHP.
Le plus simple pour faire ce que tu veux, c'est surement de faire une requete par section avec LIMIT pour avoir le bon nombre d'enregistrement. |
|
|
|
|
|
#3 (permalink) | |
|
Invité de passage
![]() Date d'inscription: mars 2006
Messages: 9
|
Citation:
Code :
$sSQL = "SELECT p.id,p.owner,p.orderID,p.title,p.dateadded,TopNotified,p.section FROM ".PREFIX."listings AS p INNER JOIN ".PREFIX."users AS u ON p.owner=u.id WHERE p.display='Y' AND p.featured7 <> 'Y' AND p.Topnotified <>'Y' ORDER BY p.section, p.dateadded ASC"; $result=$db->query($sSQL); $numrows = $result->size(); while($rs=$result->fetch()) { $i=0; $cat_list = $rs['section']; $sSQL1 = "SELECT p.id,p.owner,p.orderID,p.title,p.dateadded,TopNotified,p.section FROM ".PREFIX."listings AS p INNER JOIN ".PREFIX."users AS u ON p.owner=u.id WHERE display='Y' AND featured7 <> 'Y' AND notified <>'Y' AND section = '".$cat_list. "' ORDER BY section, dateadded ASC LIMIT 30,50"; $result1=$db->query($sSQL1); if ($cat_temp <> $cat_list) { while($rs1=$result1->fetch()) { $i++; $cat_temp=$cat_list; $cat_list1=$rs1['section']; } echo "cat_list = $cat_list -- cat_list1 while2= $cat_list1 -- cat_temp= $cat_temp -- Compteur = $i <br />"; } echo"ID= ".$rs['id']." -- Titre = ".$rs['title']." Section1 = ".$cat_list." -- Section2 = ".$cat_list1."<br />"; } |
|
|
|
|
|
|
#4 (permalink) |
|
Nouveau membre du Club
![]() |
Bonsoir,
Tu pourrais déjà remplacer ta première requête SQL par quelque chose comme : Code :
$sql = "SELECT DISTINCT `section` FROM " . PREFIX . "listings"; Ou encore mieux si tu as un nombre de section pré-défini, par exemple tu sais que ça va de 1 à 5 et que ça ne change pas, tu peux te passer d'une requête SQL : Code :
foreach (range(1, 5) as $section) { // $section vaudra de 1 jusqu'à 5 } |
|
|
|
|
|
![]() |
||
Extraction de données while, foreach
|
||
| Outils de la discussion | |
|
|