Loop binnen Loop?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Manu Tessens

Manu Tessens

09/09/2014 10:26:53
Quote Anchor link
Beste allen,


Ik probeer (sinds enige tijd) een loop uit een loop uit te lezen.
Eerst dien ik een aantal records uit te lezen met een klassieke if en while loop.
Maar voor elke record is het mogelijk dat er uit een andere tabel een aantal records zouden moeten bijkomen.

Het gaat over een order tabel waarbij per order het aantal boeken en hun info weergegeven moeten worden..
Dus: order record + records van de bestelde boeken...

Wie kan helpen, code hieronder

groeten,

Manu


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
require "../LAB MANU/DbConnect.php";
mysql_query('SET NAMES UTF8');
        

$raw_results = mysql_query("SELECT * FROM ORDERS WHERE id > 0");
    
$num_rows = mysql_num_rows($raw_results);


if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
            
    while($results = mysql_fetch_array($raw_results)){
            // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop
            
            
            $raw_results = mysql_query("SELECT * FROM ORDERS WHERE id > 0");
                
            $num_rows = mysql_num_rows($raw_results);
            
            if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
                        
                        while($results = mysql_fetch_array($raw_results)){
                        // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop
                        
                        
            ?>



<table width="1024" border="0" align="center" cellpadding="5" cellspacing="5">
<tr>
<th scope="col">ID</th>
<th scope="col">adres</th>
<th scope="col">email</th>
<th scope="col">tel.</th>
<th scope="col">payment</th>
<th scope="col">booknumbers</th>
</tr>
<tr>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["id"]; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["firstname"] . " " . $results ["name"] ;?>
<br />
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["street"] . " " . $results ["number"] . " ". $results ["postbox"] ;?>
<br />
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["postalcode"] ." ". $results ["city"];?>
<br />
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["country"] ;?>

</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["email"]; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["telephone"]; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["payment"]; ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $results ["booknumbers"]; ?>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>

</td>
<td>&nbsp;</td>
<td></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

<tr>
<td>&nbsp;</td>
<td></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>



</table>
<br />


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $ids = $results ["booknumbers"]; ?>




Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
            
            require "../LAB MANU/DbConnect.php";
            mysql_query('SET NAMES UTF8');
            
            $raw_results = mysql_query("SELECT * FROM MASTERBASE_VOLLEDIG WHERE BOEKNUMMER IN ({$ids})");
                
            $num_rows = mysql_num_rows($raw_results);
            
            if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
                        
                        while($results = mysql_fetch_array($raw_results)){
                        // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop
            
            echo $results ["BESCHRIJVING"]
                
                   ?>

<table>
</td>
<td align="left" width="47%">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php  echo "<strong>" .$results ["BOEKNUMMER"]. "</strong>"  ?>
</td>
</tr>
</table>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? }}}}}} ?>
 
PHP hulp

PHP hulp

06/05/2024 01:17:02
 
Henk de Vriep

Henk de Vriep

09/09/2014 11:00:58
Quote Anchor link
Kun je misschien een voorbeeld geven van je tabellen? Je kunt dit veel eenvoudiger doen met een join query denk ik persoonlijk.
 
- SanThe -

- SanThe -

09/09/2014 11:18:44
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$raw_results
= mysql_query("SELECT * FROM ORDERS WHERE id > 0");
while($results = mysql_fetch_array($raw_results)){
   $raw_results = mysql_query("SELECT * FROM ORDERS WHERE id > 0");
   while($results = mysql_fetch_array($raw_results)){
       $raw_results = mysql_query("SELECT * FROM MASTERBASE_VOLLEDIG WHERE BOEKNUMMER IN ({$ids})");
       while($results = mysql_fetch_array($raw_results)){
?>

De variabelen worden overschreven.
Gewijzigd op 09/09/2014 11:35:43 door - SanThe -
 
Manu Tessens

Manu Tessens

09/09/2014 11:24:49
Quote Anchor link
Jr Melgert op 09/09/2014 11:00:58:
Kun je misschien een voorbeeld geven van je tabellen? Je kunt dit veel eenvoudiger doen met een join query denk ik persoonlijk.



ORDERS = id, firstname, name, adres, booknumbers

MASTERBASE_VOLLEDIG = boeknummer, titel, auteur


Booknumbers en boeknummer komen overeen, die 2 kan je als link gebruiken.

Alleen kunnen er in booknumbers meerdere 'boeknummer' zitten..

Ik dacht twee loops te gebruiken maar de code stopt na 1 order uitgelezen te hebben

Toevoeging op 09/09/2014 11:35:43:

- SanThe - op 09/09/2014 11:18:44:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$raw_results
= mysql_query("SELECT * FROM ORDERS WHERE id > 0");
while($results = mysql_fetch_array($raw_results)){
   $raw_results = mysql_query("SELECT * FROM ORDERS WHERE id > 0");
   while($results = mysql_fetch_array($raw_results)){
?>

De variabelen worden overschreven.




Toevoeging op 09/09/2014 11:35:43:

- SanThe - op 09/09/2014 11:18:44:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$raw_results
= mysql_query("SELECT * FROM ORDERS WHERE id > 0");
while($results = mysql_fetch_array($raw_results)){
   $raw_results = mysql_query("SELECT * FROM ORDERS WHERE id > 0");
   while($results = mysql_fetch_array($raw_results)){
?>

De variabelen worden overschreven.




Toevoeging op 09/09/2014 11:45:12:

Topic closed!

Merci SanThe & Jr Melgert

Het ging em inderdaad om het overschrijven van de variabelen
Eentje om te onthouden!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/09/2014 12:07:16
Quote Anchor link
Meerdere waardes in één kolom opslaan is niet verstandig.
Haal de kolom booknumbers weg uit de orders tabel, en maak daar een nieuwe tabel voor:

books_by_order
order_id(PK)
book_id(PK)
amount
selling_price



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$sql
= "SELECT o.id,
    o.name,
    bo.amount,
    bo.selling_price,
    bo.amount * bo.selling_price subtotal,
    m.omschrijving
FROM
    orders o
JOIN
    books_by_order bo
    ON o.id = bo.order_id
JOIN
    masterbase_volledig m
    ON bo.book_id = m.boeknummer
ORDER BY o.id"
;
    
if (false !== $result = mysqli_query($con, $sql) {
    $id = -1
    $total
= 0.00;
    while ($order_row = mysql_fetch_assoc($result) {
        if ($order_row['id' != $id) {
            if ($id != -1) {
                //hier de afsluitende dingen voor de eerdere order
            }
            $id = $order_row['id'];
            // een nieuw blok beginnen
        }
        $total += (float) $order_row['subtotal');
        // hier de gegevens tonen
    }
     // hier de afsluitende dingen voor de laatste order
}
?>

Om je een idee te geven hoe je dat kan uitlezen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.