login  Naam:   Wachtwoord: 
Registreer je!
 Forum

overzicht

Offline Stefan14 - 11/02/2006 22:48 (laatste wijziging 11/02/2006 22:49)
Avatar van Stefan14PHP gevorderde ik zit met een beetje behoorlijk lastig script. het is namelijk zo dat ik een overzichtje wil kunnen printen iedere maand met alle inkomsten enz. en ik heb 2 tabellen die daarvoor gebruikt moeten worden. namelijk de tabel bestellingen en de tabel bedragen. de volgende gegevens worden hieruit gehaald.

bestellingen -> factuurnr, datum
bedragen -> factuurnr, totaalbedrag, verzendkosten, korting, btw, winst

en ik wil per dag weergeven hoeveel er is binnengekomen enz. oftewel de totaalbedragen optellen, en dat per dag weergeven. maar het probleem zit hem erin dat er meer dan 1 bestelling per dag binnenkomt. ik ben al heel wat aan het proberen geweest, maar het lukt maar niet.

ik heb nu het volgende script:

  1. <?php
  2. include('includeSecurity.php');
  3.  
  4. $begindatum = '2006-01-01';
  5. $einddatum = '2006-01-31';
  6.  
  7. $query = "SELECT * FROM bestellingen WHERE datum >= '".$begindatum."' AND datum <= '".$einddatum."'";
  8. $result = mysql_query($query);
  9.  
  10. echo('<table>');
  11.  
  12. while($row = mysql_fetch_array($result))
  13. {
  14. $bestellingsID = $row['id'];
  15. $datum = $row['datum'];
  16. $string = $datum;
  17. $array = explode("-", $string);
  18. $jaar = $array[0];
  19. $maand = $array[1];
  20. $dag = $array[2];
  21.  
  22. for ($dag=1;$dag<=31;$dag++)
  23. {
  24.  
  25. $query2 = "SELECT * FROM bedragen WHERE bestellingsID = ".$bestellingsID;
  26. $result2 = mysql_query($query2);
  27. $row2 = mysql_fetch_array($result2);
  28. $totaalbedrag = $row2['totaalbedrag'];
  29. $verzendkost = $row2['verzendkosten'];
  30. $korting = $row2['korting'];
  31. $btw = $row2['btw'];
  32. $winst = $row2['winst'];
  33.  
  34. $totaalbedragen += $totaalbedrag;
  35. $verzendkosten += $verzendkost;
  36. $kortingen += $korting;
  37. $btws += $btw;
  38. $winst += $winst;
  39.  
  40. echo('<tr><td>'.$dag.'</td><td>€ '.$totaalbedragen.'</td><td>€ '.$verzendkosten.'</td><td>€ '.$kortingen.'</td><td>€ '.$btws.'</td><td>€ '.$winsten.'</td></tr>');
  41. $totaalbedragen = 0;
  42. $verzendkosten = 0;
  43. $kortingen = 0;
  44. $btws = 0;
  45. $winst = 0;
  46. }
  47. }
  48. echo('</table>');
  49. ?>


uiteraard komt er later nog een formpje bij om de maand te kunnen kiezen.

EDIT: het resultaat van dit script is dat de eerste bestelling van die dag wordt weergegeven en dat dan op elke dag, dus er staat 31 keer hetzelfde totaalbedrag onder elkaar met de nummers 1 t/m 31 ervoor.
en daarna nog eens 31 keer voor de rest van de dagen. in totaal staan er dus 31x31 regels onder elkaar.

dus bijv.
dag 1 is als eerste bestelling voor 5 euro besteld
dag 2 is als eerste bestelling voor 15 euro besteld

dan wordt er weergegeven
1 - 5,00
2 - 5,00
3 - 5,00
t/m
31 - 5,00
1 - 15,00
2 - 15,00
3 - 15,00
t/m
31 - 15,00

en dit gaat dan door tot 31 dagen.

10 antwoorden

Gesponsorde links
Offline vinTage - 11/02/2006 23:03 (laatste wijziging 11/02/2006 23:12)
Avatar van vinTage Nieuw lid for ($dag=1;$dag<=31;$dag++)
{

je doet daar ook 31 queries, dat is toch normaal dat je dan 31 "uitkomsten" hebt ?


Ik DENK (ben nogal beginneling), dat je met :
$aap=mysql_num_rows($results);
for ($dag=1;$dag<=$aap;$dag++)
{


al een stukje verder bent, zoniet, dan...bewijs ik wederom dat ik me niet met php moet bezig houden (maar doe het lekker toch )
Offline Rens - 11/02/2006 23:11
Avatar van Rens Gouden medaille

Crew algemeen
Ik denk dat GROUP BY je wel kan helpen.
Offline haytjes - 11/02/2006 23:17 (laatste wijziging 11/02/2006 23:23)
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
  1. <?
  2. include('includeSecurity.php');
  3.  
  4. $begindatum = '2006-01-01';
  5. $einddatum = '2006-01-31';
  6.  
  7. $query = mysql_query(
  8. "SELECT sum(totaalbedrag) as tot_bedrag,
  9. sum(verzendkosten) as tot_verzend,
  10. sum(korting) as tot_korting,
  11. sum(btw) as tot_btw,
  12. sum(winst) as tot_winst,
  13. bestellingen.datum as datum
  14. FROM bestellingen, bedragen
  15. WHERE bestellingen.datum >= '".$begindatum."' AND
  16. bestellingen.datum <= '".$einddatum."' AND
  17. bestelling.id = bedragen.bestellingsID
  18. GROUP BY bestellingen.datum");
  19. while($row = mysql_fetch_object($query))
  20. {
  21. ?><table>
  22. <tr><td><?=$row->datum?></td>
  23. <td>€ <?=$row->tot_bedrag?></td>
  24. <td>€ <?=$row->tot_verzend?></td>
  25. <td>€ <?=$row->tot_korting?></td>
  26. <td>€ <?=$row->tot_btw?></td>
  27. <td>€ <?=$row->tot_winst?></td></tr>
  28. </table><?
  29. }
  30. ?>


zoiets moet werken, maar 'k heb die tabellen niet, dus heb het niet kunnen testen

ps: zo zie je de kracht van mysql (50 regels -> 30 regels)
Offline Stefan14 - 11/02/2006 23:43 (laatste wijziging 11/02/2006 23:46)
Avatar van Stefan14 PHP gevorderde ik heb de code van haytjes geprobeerd, en daar komt het volgende uit:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/stefan/domains/elektronica-onderdelen.nl/public_html/admin/boekhouding/resultaten.php on line 19

zou dit misschien komen omdat er nog aangegeven moet worden uit welke tabel totaalbedrag enz gehaald moet worden?

ik ga nu eerst de methode van Vintage even proberen
Offline vinTage - 11/02/2006 23:45
Avatar van vinTage Nieuw lid oh, maar mijne is nog lang niet goed, maar als het goed is komen er iig minder resultaten (denk ik)
Offline Maarten - 11/02/2006 23:46
Avatar van Maarten Erelid Maak van
  1. $query = mysql_query(
  2. "SELECT sum(totaalbedrag) as tot_bedrag,
  3. sum(verzendkosten) as tot_verzend,
  4. sum(korting) as tot_korting,
  5. sum(btw) as tot_btw,
  6. sum(winst) as tot_winst,
  7. bestellingen.datum as datum
  8. FROM bestellingen, bedragen
  9. WHERE bestellingen.datum >= '".$begindatum."' AND
  10. bestellingen.datum <= '".$einddatum."' AND
  11. bestelling.id = bedragen.bestellingsID
  12. GROUP BY bestellingen.datum");
het volgende:
  1. $query = mysql_query(
  2. "SELECT sum(totaalbedrag) as tot_bedrag,
  3. sum(verzendkosten) as tot_verzend,
  4. sum(korting) as tot_korting,
  5. sum(btw) as tot_btw,
  6. sum(winst) as tot_winst,
  7. bestellingen.datum as datum
  8. FROM bestellingen, bedragen
  9. WHERE bestellingen.datum >= '".$begindatum."' AND
  10. bestellingen.datum <= '".$einddatum."' AND
  11. bestelling.id = bedragen.bestellingsID
  12. GROUP BY bestellingen.datum") or die(mysql_error());

Dan krijg je een foutmelding op je scherm waaraan we kunnen zien wat de fout is.

Volgens mij ligt het aan "bestelling.id" dat "bestellingen.id" moet worden?
Offline Stefan14 - 11/02/2006 23:48
Avatar van Stefan14 PHP gevorderde ik heb eerst nog even bestellingen.id gemaakt van bestelling.id want dat moet inderdaad meervoud zijn, maar dat maakte geen verschil wat betreft foutmelding.

met de nieuwe code geeft hij het volgende:
Column: 'verzendkosten' in field list is ambiguous
Offline haytjes - 11/02/2006 23:50 (laatste wijziging 11/02/2006 23:51)
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
idd, 't ga dat zijn, merci Murfy
en ook in de sum moet er overal "bedragen." voor.
aangepaste versie:
  1. <?
  2. include('includeSecurity.php');
  3.  
  4. $begindatum = '2006-01-01';
  5. $einddatum = '2006-01-31';
  6.  
  7. $query = mysql_query(
  8. "SELECT sum(bedragen.totaalbedrag) as tot_bedrag,
  9. sum(bedragen.verzendkosten) as tot_verzend,
  10. sum(bedragen.korting) as tot_korting,
  11. sum(bedragen.btw) as tot_btw,
  12. sum(bedragen.winst) as tot_winst,
  13. bestellingen.datum as datum
  14. FROM bestellingen, bedragen
  15. WHERE bestellingen.datum >= '".$begindatum."' AND
  16. bestellingen.datum <= '".$einddatum."' AND
  17. bestellingen.id = bedragen.bestellingsID
  18. GROUP BY bestellingen.datum") or die(mysql_error());
  19. while($row = mysql_fetch_object($query))
  20. {
  21. ?><table>
  22. <tr><td><?=$row->datum?></td>
  23. <td>€ <?=$row->tot_bedrag?></td>
  24. <td>€ <?=$row->tot_verzend?></td>
  25. <td>€ <?=$row->tot_korting?></td>
  26. <td>€ <?=$row->tot_btw?></td>
  27. <td>€ <?=$row->tot_winst?></td></tr>
  28. </table><?
  29. }
  30. ?>
Offline Stefan14 - 11/02/2006 23:56 (laatste wijziging 11/02/2006 23:57)
Avatar van Stefan14 PHP gevorderde jongens, het werkt!

jullie zijn echt geweldig, ik kan behoorlijk goed php, maar dit was mij toch wat te ingewikkeld.

jullie hebben me uitstekend geholpen, ook heel snel enz. top!

hier kan ik wel op verder bouwen, betere layout enz.

harstikke bedankt!:D
Offline haytjes - 11/02/2006 23:58
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
solved = closed 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.257s