Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP][Mysql] Loop om table te vullen.

Pagina: 1
Acties:

  • moijamie
  • Registratie: Augustus 2013
  • Laatst online: 26-10 23:14
Goede morgen allemaal,

Ik loop ergens tegen aan, ik ben momenteel bezig met het maken van een soort agenda in php met een mysql database waar de afspraken in staan. Ik heb een tabel waar de tijden van de dag links staan en rechts ernaast en vakje en die worden dan een andere kleur als daar een afspraak is. Dit werkt allemaal prima alleen als ik 2 afspraken heb op de zelfde dag laat ie alleen de eerste zien. Ik heb dat toen geprobeerd op te lossen met een while loop alleen dan krijg ik dus 2 tabellen :F dus nu is mijn vraag hoe krijg ik meerdere afspraken in de zelfde tabel _/-\o_ ?

code:

code:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php 
                    $result1 = mysqli_query($dbc,"SELECT * FROM `tbl_reservatie` WHERE op = '".$datum."' AND ruimte = 'activiteiten';");
                    while ($dataactiviteiten = mysqli_fetch_assoc($result1)) 
                    {
                        ?>
                    <table cellspacing="0" style="width:100%">
                      <tr>
                        <th>8:00</th>
                        <td <?php if($dataactiviteiten['van'] == "800"){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>8:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "830") && ($dataactiviteiten['tot'] >= "830" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>9:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "900") && ($dataactiviteiten['tot'] >= "900" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>9:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "930") && ($dataactiviteiten['tot'] >= "930" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>10:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1000") && ($dataactiviteiten['tot'] >= "1000" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>10:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1030") && ($dataactiviteiten['tot'] >= "1030" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>11:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1130") && ($dataactiviteiten['tot'] >= "1130" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>12:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1200") && ($dataactiviteiten['tot'] >= "1200" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>12:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1230") && ($dataactiviteiten['tot'] >= "1230" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>13:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1300") && ($dataactiviteiten['tot'] >= "1300" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>13:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1330") && ($dataactiviteiten['tot'] >= "1330" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>14:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1400") && ($dataactiviteiten['tot'] >= "1400" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>14:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1430") && ($dataactiviteiten['tot'] >= "1430" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>15:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1500") && ($dataactiviteiten['tot'] >= "1500" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>15:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1530") && ($dataactiviteiten['tot'] >= "1530" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>16:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1600") && ($dataactiviteiten['tot'] >= "1600" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>16:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1630") && ($dataactiviteiten['tot'] >= "1630" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>17:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1700") && ($dataactiviteiten['tot'] >= "1700" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>17:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1730") && ($dataactiviteiten['tot'] >= "1730" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>18:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1800") && ($dataactiviteiten['tot'] >= "1800" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>18:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1830") && ($dataactiviteiten['tot'] >= "1830" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>19:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1900") && ($dataactiviteiten['tot'] >= "1900" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>19:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "1930") && ($dataactiviteiten['tot'] >= "1930" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>20:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "2000") && ($dataactiviteiten['tot'] >= "2000" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>20:30</th>
                        <td <?php if(($dataactiviteiten['van'] <= "2030") && ($dataactiviteiten['tot'] >= "2030" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                      <tr>
                        <th>21:00</th>
                        <td <?php if(($dataactiviteiten['van'] <= "2100") && ($dataactiviteiten['tot'] >= "2100" )){echo 'class="bezet"';}else{ echo "class='beschikbaar'";} ?> ></td>
                      </tr>
                    </table>
                    
                    <?php } ?>

const { signature } = await fetchProfile()


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Niet om heel lullig te doen maar ik weet niet eens waar ik moet beginnen...

Je wil alle reserveringen van een bepaalde dag in een array zetten dat je makkelijk kan doorlopen. Daarna wil je niet over dat array loopen, maar over de tijden. Vervolgens wil je per tijd kijken of er een reservering in dat tijdvak staat door naar je reserveringsarray te kijken.

Verder nog wat WTF's in je code: je hebt een aparte "op" (wat zo te zien een datum is) en "van" en "tot" wat blijkbaar integers zijn om uren en minuten aan te geven. Waarom heb je niet gewoon datetimes voor "van" en "tot"? En waarom gebruik je wél MySQLi maar niet netjes prepared statements? Je query is door die $datum vast vatbaar voor SQL-injectie. En waarom selecteer je de ruimte op een stringwaarde en niet op zijn ID? En hoe precies is "activiteiten" een ruimte?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • moijamie
  • Registratie: Augustus 2013
  • Laatst online: 26-10 23:14
NMe schreef op woensdag 29 oktober 2014 @ 12:27:
Niet om heel lullig te doen maar ik weet niet eens waar ik moet beginnen...

Je wil alle reserveringen van een bepaalde dag in een array zetten dat je makkelijk kan doorlopen. Daarna wil je niet over dat array loopen, maar over de tijden. Vervolgens wil je per tijd kijken of er een reservering in dat tijdvak staat door naar je reserveringsarray te kijken.

Verder nog wat WTF's in je code: je hebt een aparte "op" (wat zo te zien een datum is) en "van" en "tot" wat blijkbaar integers zijn om uren en minuten aan te geven. Waarom heb je niet gewoon datetimes voor "van" en "tot"? En waarom gebruik je wél MySQLi maar niet netjes prepared statements? Je query is door die $datum vast vatbaar voor SQL-injectie. En waarom selecteer je de ruimte op een stringwaarde en niet op zijn ID? En hoe precies is "activiteiten" een ruimte?
Ja het is en beetje apart haha met wat ik zo heb gegeven ik loop stage momenteel bij een bedrijf en die verhuren 3 ruimtes een activiteiten ruimte een vergader ruimte en een digitale ruimte op is inderdaad een datum. Ik had eerste datetimes voor van en tot maar toen werkte het niet met mijn if statements en toen dus voor integers gekozen. als het goed is ben ik niet vat baar voor sqlinjecties heb dit bij datum staan
code:
1
$datum = mysqli_real_escape_string($dbc, $datum)


Extra informatie:

Ik heb een tabel in mijn database die heet tbl_reservaties.

array die ik terug krijg ziet eruit als volgt :

code:
1
Array ( [id] => 6 [ruimte] => activiteiten [voornaam] => vnaam [tv] => [achternaam] =>anaam [wie] => intern [van] => 0800 [tot] => 0930 [aantalpersonen] => 1 [opstelling] => carre [koffienthee] => ja [opmerking] => opmerking [beamer] => ja [laptop] => ja [mic] => ja [pointer] => ja [geluid] => ja [dvd] => ja [flipover] => ja [op] => 2014-10-31 )


elke ruimte heeft zijn eigen tabel met een ander kleurtje

[ Voor 16% gewijzigd door moijamie op 29-10-2014 13:06 ]

const { signature } = await fetchProfile()


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dan ben je inderdaad niet vatbaar voor SQL-injectie maar ik zou alsnog prepared statements gebruiken, dan kán het nooit fout gaan op dat vlak. ;)

Als jouw if-statements niet werken met datetimes dan zijn je if-statements niet goed.
PHP:
1
2
3
$tijd = strtotime($row['tijdVeldUitDatabase']);
$tijdInteger = (int)date('Hi', $tijd);
if ($tijdInteger >= 1200 && $tijdInteger <= 1300) //etc

En zo zijn er nog wel andere manieren om om te gaan met uren en minuten. Dit is nog een vrij lelijke maar die komt het meest in de buurt bij wat je nu doet.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Donderpoes
  • Registratie: April 2011
  • Laatst online: 11-05 23:09
Je kan je datums selecteren als UNIX_TIMESTAMP(van) as van, UNIX_TIMESTAMPS(tot) as tot.

Als je dan elke dag gaat loopen door de uren, deze uren zet je ook om naar een timestamp met bijvoorbeeld strtotime(), je afspraken haal je op als een array, dan moet je elk uur controleren of dat hij binnen een afspraak valt. En aaneengesloten afspraken zou je kunnen samenvoegen tot 1 afspraak, stel je hebt 6 afspraken waarvan er 4 achter elkaar zijn, kan je de starttijd van de 1e afspraak pakken en de eindtijd van de 4e afspraak, tenzij je ook nog details van deze afpsraken nodig hebt.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Afspraken samenvoegen tot één afspraak lijkt me vragen om problemen. En losse datums en tijden aan elkaar plakken is ook raar, doe dat gewoon direct bij de opslag goed in een datetime. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1