login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Selecteren op bepaalde periode (Opgelost)

Offline Ruultje - 16/09/2009 13:59 (laatste wijziging 16/09/2009 14:05)
Avatar van RuultjeNieuw lid Hallo allemaal,

Ik ben bezig met een database waarin resultaten per periode te voorschijn moeten komen. Het gaat hier om periodes per dag, per week, per maand, per jaar en tussen twee tussenliggende datums.

Nu moet deze periodes geselecteerd worden via een dropdownmenu. Maar waarop ik ook zoek, ik kan niets hierover vinden wat mij zou kunnen helpen. Op de één of andere manier heb ik wel een idee maar in de uitvoering wil het niet lukken. Ik heb nu alleen onderstaande, maar dan rekent hij alleen voor september. Deze is dan per maand. Het gaat hier om werkzaamheden.


  1. <?php
  2. $sql = "
  3. SELECT *,
  4. DATE_FORMAT(datum, '%Y %M') AS maand, (`einduren` - `beginuren`) AS `aantal_uren`
  5. FROM
  6. diensten
  7. LEFT JOIN
  8. werknemers
  9. ON
  10. diensten.dienst_id = werknemers.werknemer_id
  11. WHERE MONTH( datum ) = '9'
  12. ";
  13.  
  14. if(!$result = mysql_query($sql)) {
  15. }
  16. else {
  17. $previous = '';
  18.  
  19. echo "<table class='report'>";
  20. echo "<tr>";
  21. echo "<td class='report-head'>Aantal uren</td>";
  22. echo "<td class='report-head'>Werkzaamheden</td>";
  23. echo "<td class='report-head'>Overuren </td>";
  24. echo "<td class='report-head'>Afdeling</td>";
  25. echo "<td class='report-head'>Werknemer </td>";
  26. echo "<td class='report-head'>Datum </td>";
  27. echo "</tr>";
  28.  
  29. while($row = mysql_fetch_assoc($result)) {
  30. if($row['maand'] != $previous) {
  31. // Nieuwe maand
  32. $previous = $row['maand'];
  33. echo $row['maand'].'<br /><br>';
  34.  
  35. }
  36.  
  37. echo "<tr>";
  38. echo "<td class='report'>".$row['aantal_uren']."</td>";
  39. echo "<td class='report'>".$row['werkzaamheden']."</td>";
  40. echo "<td class='report'>".$row['overuren']>."</td>";
  41. echo "<td class='report'>".$row['afdeling']."</td>";
  42. echo "<td class='report'>".$row['werknemer']."</td>";
  43. echo "<td class='report'>".$row['datum']."</td>";
  44. echo "</tr>";
  45. }
  46. }
  47. echo "</table>";
  48. ?>


Deze resultaten moeten dus zichtbaar zijn.

Heeft iemand een oplossing. Of een tip waarop ik kan zoeken. Heb in Nederland en in Engelse zoekwoorden gezocht maar kon niets vinden (Selectmenu per month, selectmenu per maand, dropdown per month etc.). Ik moet dus een selectmenu hebben. Al denk ik dat de sql code ook wel veranderd moet worden.
Koen schreef:
Heb even code-tags toegevoegd.

7 antwoorden

Gesponsorde links
Offline denniseik - 16/09/2009 23:54 (laatste wijziging 16/09/2009 23:56)
Avatar van denniseik Lid
  1. $maand = $_GET['maand'];

  1. WHERE MONTH( datum ) = '$maand'


Ik heb ook een soortgelijk script onlangs gemaakt. Hierbij heb ik het getal van de maand vervangen door een variabele. Die op zijn beurt weer verbonden met een formulier.
  1. <form method="get" action="sorteren.php">
  2. <select name="maand">
  3. <option value="1">Januari</option>
  4. <option value="2">Februari</option>
  5. <option value="3">Maart</option>
  6. <option value="4">April</option>
  7. <option value="5">Mei</option>
  8. <option value="6">Juni</option>
  9. <option value="7">Juli</option>
  10. <option value="8">Augustus</option>
  11. <option value="9">September</option>
  12. <option value="10">Oktober</option>
  13. <option value="11">November</option>
  14. <option value="12">December</option>
  15. </select>
  16. <input type="submit" value="Ga" />
  17. </form>


Is dit wat je bedoelt ?
Offline Ruultje - 17/09/2009 01:59 (laatste wijziging 17/09/2009 14:54)
Avatar van Ruultje Nieuw lid Super bedankt. Het is nu wel gelukt. Hij werkt nu per jaar, maand en dag. Nu moet ik alleen per week nog hebben. En geselecteerd tussen twee tussenliggende datums. Per week zit ik nu wel even mee vast (moet ook jaar bij).

Ik heb overigens bij maand ook het jaar toegevoegd zodat er voor elke jaar per maand iets te zien is. In ieder geval bedankt voor de code. Nu staat het tenminste heel goed.

Edit: Per week werkt nu ook. Klopte niet met de weeknummers vandaar kwam ik er niet uit. Moest in de query echter 1 erbij zetten en toen werkte het.

Nu moet alles wat tussen twee geselecteerde datums ligt. Hier kom ik er ook weer uit met de database maar zit ik wederom vast met de waardes in het dropdownmenu.

Ik heb onderstaande, maar krijg alleen een foutmelding dat hij hem niet kan uitlezen:

Hier de funtie selectperdatum

  1. function selectperdatum()
  2. {
  3.  
  4. echo "<br><br><form action = '$_SERVER[PHP_SELF]' method='GET'>";
  5. echo "<select name='jaarb' class='sitelink'>";
  6. for ($i = 2009; $i <= 2010; $i++)
  7. {
  8. echo "<option value=\"$i\">$i</option>";
  9. }
  10. echo "</select> ";
  11. echo "<select name='maandb' class='sitelink'";
  12. echo "<option value='1'>Januari</option>";
  13. echo "<option value='2'>Februari</option>";
  14. echo "<option value='3'>Maart</option>";
  15. echo "<option value='4'>April</option>";
  16. echo "<option value='5'>Mei</option>";
  17. echo "<option value='6'>Juni</option>";
  18. echo "<option value='7'>Juli</option>";
  19. echo "<option value='8'>Augustus</option>";
  20. echo "<option value='9'>September</option>";
  21. echo "<option value='10'>Oktober</option>";
  22. echo "<option value='11'>November</option>";
  23. echo "<option value='12'>December</option>";
  24. echo "</select>";
  25. echo "<select name='dagb' class='sitelink'>";
  26. for ($i = 1; $i <= 31; $i++)
  27. {
  28. if ($i < 10)
  29. $si = "0" . $i;
  30. else
  31. $si = $i;
  32. echo "<option value=\"$si\">$si</option>";
  33. }
  34. echo "</select> ";
  35. echo "<select name='jaare' class='sitelink'>";
  36. for ($i = 2009; $i <= 2010; $i++)
  37. {
  38. echo "<option value=\"$i\">$i</option>";
  39. }
  40. echo "</select> ";
  41. echo "<select name='maande' class='sitelink'";
  42. echo "<option value='1'>Januari</option>";
  43. echo "<option value='2'>Februari</option>";
  44. echo "<option value='3'>Maart</option>";
  45. echo "<option value='4'>April</option>";
  46. echo "<option value='5'>Mei</option>";
  47. echo "<option value='6'>Juni</option>";
  48. echo "<option value='7'>Juli</option>";
  49. echo "<option value='8'>Augustus</option>";
  50. echo "<option value='9'>September</option>";
  51. echo "<option value='10'>Oktober</option>";
  52. echo "<option value='11'>November</option>";
  53. echo "<option value='12'>December</option>";
  54. echo "</select>";
  55. echo "<select name='dage' class='sitelink'>";
  56. for ($i = 1; $i <= 31; $i++)
  57. {
  58. if ($i < 10)
  59. $si = "0" . $i;
  60. else
  61. $si = $i;
  62. echo "<option value=\"$si\">$si</option>";
  63. }
  64. echo "</select> ";
  65. echo "<input type='submit' value='Ga'>";
  66. echo "</form>";
  67.  
  68. }


Hier de code. Ik denk dat hier weinig van klopt.

  1. <?php
  2. selectperdatum();
  3.  
  4. $begindatum = $_GET['jaarb'] . "." . $_GET['maandb'] . "." . $_GET['dagb'];
  5. $einddatum = $_GET['jaare'] . "." . $_GET['maande'] . "." . $_GET['dage'];
  6.  
  7.  
  8. $sql = "SELECT *, (`einduren` - `beginuren`) AS `aantal_uren`
  9. FROM
  10. diensten
  11. LEFT JOIN
  12. werknemers
  13. ON
  14. diensten.dienst_id = werknemers.werknemer_id
  15. WHERE datum BETWEEN ". $begindatum ." AND ". $einddatum;
  16. ";
  17.  
  18. $result = mysql_query($sql)
  19. or die ("couldn't execute query");
  20. echo "<table class='site'><tr><td>";
  21.  
  22. echo "<table class='report'>";
  23. echo "<tr>";
  24. echo "<td class='report-head'>Aantal uren</td>";
  25. echo "<td class='report-head'>Werkzaamheden</td>";
  26. echo "<td class='report-head'>Overuren </td>";
  27. echo "<td class='report-head'>Afdeling</td>";
  28. echo "<td class='report-head'>Werknemer </td>";
  29. echo "<td class='report-head'>Datum </td>";
  30. echo "</tr>";
  31.  
  32. while ($row = mysql_fetch_array($result))
  33. {
  34.  
  35. echo "<tr>";
  36. echo "<td class='report'>".$row['aantal_uren']."</td>";
  37. echo "<td class='report'>".$row['werkzaamheden']."</td>";
  38. echo "<td class='report'>".$row['overuren']>."</td>";
  39. echo "<td class='report'>".$row['afdeling']."</td>";
  40. echo "<td class='report'>".$row['werknemer']."</td>";
  41. echo "<td class='report'>".$row['datum']."</td>";
  42. echo "</tr>";
  43.  
  44. echo "</table>";
  45. }
  46. ?>
  47.  
  48. </td></tr>
  49. </table>
Offline denniseik - 17/09/2009 15:43
Avatar van denniseik Lid Wat voor foutmelding krijg je ?
Offline Ruultje - 17/09/2009 15:54
Avatar van Ruultje Nieuw lid Hij geeft alleen dit aan (errorreporting staat aan)

couldn't execute query.

Ik denk zelf dat de fout ligt bij begindatum en einddatum.
Offline ArieMedia - 17/09/2009 16:10
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Ruultje schreef:
Hij geeft alleen dit aan (errorreporting staat aan)

couldn't execute query.

Ik denk zelf dat de fout ligt bij begindatum en einddatum.

Volgensmij moet je ook

BETWEEN DATE('.$begindatum.') AND DATE('.$einddatum.')

doen..
Offline Ruultje - 17/09/2009 16:30
Avatar van Ruultje Nieuw lid Ja super bedankt! Het werkt!
BETWEEN DATE('.$begindatum.') AND DATE('.$einddatum.')

Moest alleen de punten eruit halen anders gaf hij geen resultaat terug.
Offline ArieMedia - 17/09/2009 16:34
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Ruultje schreef:
Ja super bedankt! Het werkt!
BETWEEN DATE('.$begindatum.') AND DATE('.$einddatum.')

Moest alleen de punten eruit halen anders gaf hij geen resultaat terug.
Your Welcome 
Als het probleem opgelost is kan je op de desbetreffende knop drukken, dan gaat dit bericht uit de "actieve topic lijst"  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.244s