Data optellen van 2 tabellen

Status
Niet open voor verdere reacties.

redskin

Gebruiker
Lid geworden
23 sep 2007
Berichten
90
Optellen / berekenen

Hallo,

Ik heb een pagina met een aantal tabellen gemaakt, (zie image).
tabel.jpg

bereken formula is A - B = C
Op de 3de tabel er zitten nog aantal fouten, met rode stripje gemarkeerd.
De php code is
PHP:
<table class="tabel" cellpadding="5" cellspacing="0">
	<tr bgcolor="#e5e5e5">A
		<td><span>No</span></td> <td><span>Model type</span></td> Begin voorraad<td><span>Voorraden</span></td> 
	</tr>
	<?php
	require "../lib/db.php";
    $res = mysql_query("SELECT type,aantal FROM producten ORDER BY type ASC");
    $i=1;
    while($row = mysql_fetch_row($res)){
    echo "<tr>
	<td><span>$i.</span></td> <td><span>$row[0]</td> <td><span>$row[1]</span></td> 
	</tr>";
	$i++;
    }
	?>
</table></td><td>
<table class="tabel" cellpadding="5" cellspacing="0">
	<tr bgcolor="#e5e5e5">B
	    <td><span>No</span></td> <td><span>Model</span></td> <td><span>Verkocht</span></td>
	</tr>
	<?php
	require "../lib/db.php";
    $res = mysql_query("SELECT type,aantal FROM besteld ORDER BY type ASC");
    $i=1;
    while($row = mysql_fetch_row($res)){
    echo "<tr>
	<td><span>$i.</span></td> <td><span>$row[0]</td> <td><span>$row[1]</span></td> 
	</tr>";
	$i++;
    }
	?>
</table></td><td>
<table class="tabel" cellpadding="5" cellspacing="0">
	<tr bgcolor="#e5e5e5">C
		 <td><span>Model</span></td> <td><span>Huidige voorraad</span></td>
	</tr>
	<?php
	require "../lib/db.php";
	$i=1;
	
	$res = mysql_query("SELECT type,aantal FROM producten ORDER BY type ASC");
	while($row = mysql_fetch_row($res)){
	$a = $row[1];
	$res = mysql_query("SELECT type,aantal FROM besteld ORDER BY type ASC");
	while($row = mysql_fetch_row($res)){
	$b = $row[1];
	$totaal = ($a - $b);

	echo "<tr>
	     <td><span>$i.</span></td>  <td><span>".$row[0]."</span></td> <td><span>".$totaal."</span></td>
		</tr>";
	$i++;
	}
	}
	?>
</table></td>
</tr></table>
Hopelijk er is iemand die mij verder kan helpen.
Alvast bedankt.
 
Laatst bewerkt:
Lijkt mij alleen om dit stuk te gaan.

MySQL kan gelukkig zelf rekenen :)
PHP:
$query= "SELECT p.type, (p.aantal-b.aantal) AS totaal 
        FROM producten p besteld b
        WHERE p.type=b.type
        ORDER BY p.type ASC";
$res = mysql_query($query); 
    while($row = mysql_fetch_assoc($res)){

    echo "<tr> 
         <td><span>$i.</span></td>  <td><span>".$row['type']."</span></td> <td><span>".$row['totaal']."</span></td> 
        </tr>"; 
    $i++; 
    } 
    ?>
Lijkt mij zo goed te komen :)
 
Laatst bewerkt:
Hoi,

Bedankt voor aanwijzing.
Heb al geprobeerd als resultaat krijg ik dit:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\EasyWAMP\www\test\stock.php on line 61

ander idea?

groet
 
Dan heb ik wat fout gedaan in de query, zet achter deze regel
PHP:
$res = mysql_query($query);
eens
PHP:
$res = mysql_query($query) or die(mysql_error());
Dan krijg je als het goed is een andere foutmelding.
 
Hoi,
Ik heb de pagina aangepast,
$res = mysql_query($query) or die(mysql_error());

andere foutmelding is
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'besteld b WHERE p.type=b.type ORDER BY p.type

groetjes
 
Ik had al een vermoeden dat het daar fout ging.

Daar moet volgens mij een komma bij.
Probeer dit:
PHP:
$query= "SELECT p.type, (p.aantal-b.aantal) AS totaal 
         FROM producten p, besteld b
         WHERE p.type=b.type
         ORDER BY p.type ASC";
 
Tja ,...super! :thumb:

Nu werk het naar behoren,... enkel door de komma tussen de tabellen zetten.

Alvast bedankt.
 
Nou het is niet echt alleen door die komma hoor.

Dit had je eerst:
PHP:
<?php 
require "../lib/db.php"; 
$i=1; 
     
$res = mysql_query("SELECT type,aantal FROM producten ORDER BY type ASC"); 
while($row = mysql_fetch_row($res)){
  $a = $row[1];
  $res = mysql_query("SELECT type,aantal FROM besteld ORDER BY type ASC"); 
  while($row = mysql_fetch_row($res)){ 
    $b = $row[1]; 
    $totaal = ($a - $b);
    echo "<tr> 
     <td><span>$i.</span></td>  <td><span>".$row[0]."</span></td> <td><span>".$totaal."</span></td> 
    </tr>"; 
    $i++; 
  } 
} 
?>
Hierin had je een omslachtige dubbele WHILE-lus, die niet alleen vertragend werkte maar ook een fout veroorzaakte.
De tweede query voer je niet specifiek uit op het juiste type (m.a.w. je doet geen WHERE type=$row[0] in je query)

Ook laat je nu PHP de berekening uitvoeren.

Dit heb je nu:
PHP:
<?php 
require "../lib/db.php"; 
$i=1; 

$query= "SELECT p.type, (p.aantal-b.aantal) AS totaal 
         FROM producten p besteld b
         WHERE p.type=b.type
         ORDER BY p.type ASC";
$res = mysql_query($query) or die(mysql_error()); 
while($row = mysql_fetch_assoc($res)){
   echo "<tr>
    <td><span>$i.</span></td>
    <td><span>".$row['type']."</span></td>
    <td><span>".$row['totaal']."</span></td>
  </tr>";
  $i++; 
} 
?>
Hier laat je MySQL de berekening in 1 query uitvoeren en heb je door het stukje WHERE p.type=b.type de goede berekening :)
 
Ja jij helemaal gelijk.

Eerst kreeg ik dit
$query= "SELECT p.type, (p.aantal-b.aantal) AS totaal
FROM producten p besteld b
WHERE p.type=b.type
ORDER BY p.type ASC";

de foutmelding was
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'besteld b WHERE p.type=b.type ORDER BY p.type

Omdat de data kwamen uit 2 verschillende tabellen moest er een komma komen tussen de tabelnamen.
Dus het werd:
$query= "SELECT p.type, (p.aantal-b.aantal) AS totaal
FROM producten p, besteld b

zo had ik bedoeld met de komma.

Toch nogmaals bedank ik heb weer iets nieuw geleerd :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan