[SQL] Between query met MySQL

Pagina: 1
Acties:

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Ik wil waardes controleren die tussen enkele getallen liggen. Wanneer iemand begingetal 8 invoert en als eindgetal 11, moet er gecontroleer worden of niet iemand anders al dat getal heeft gekozen dat tussen 8 en 11 ligt.
Ik gebruik daarvoor onderstaande query. Alleen werkt de between niet in de query. Alles wordt gewoon ingevoerd in de database, maar er wordt niks gecontroleer d.m.v. between.

Weet iemand wat ik verkeerd doe?

PHP:
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
<?php
$check_reservering = "SELECT * FROM reserveringen
WHERE dag = '$dag' AND begin BETWEEN '$begin' AND '$eind' 
OR eind BETWEEN '$begin' AND '$eind'";
$result_reserveringen = mysql_query($check_reservering) or die();

if (mysql_num_rows($result_reserveringen) == 0){

$reservering = "INSERT INTO reserveringen (leerlingnummer, begin, eind, dag, regio, plaats, lesduur) 
VALUES ('$leerlingnummer', '$begintijd', '$eindtijd', '$datum', '$regio', '$plaats', '$lesduur')"; 
$result_reservering = mysql_query($reservering) or die(mysql_error()); 

echo "$check_reservering";

//echo "Je reservering is geplaatst op: $datum<br />
//Van $begintijd tot $eindtijd";

}

else {

echo "Deze heeft al iemand gekozen.";

}
}
?>

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Die quotes impliceren een string als datatype. Welk datatype heeft het veld "dag"?

'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.


  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Sorry, dit is de goede code.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php 
$check_reservering = "SELECT * FROM reserveringen 
WHERE dag = '$dag' AND begin BETWEEN '$begin' AND '$eind'  
OR eind BETWEEN '$begin' AND '$eind'"; 
$result_reserveringen = mysql_query($check_reservering) or die(); 

if (mysql_num_rows($result_reserveringen) == 0){ 

$reservering = "INSERT INTO reserveringen (leerlingnummer, begin, eind, dag, regio, plaats, lesduur)  
VALUES ('$leerlingnummer', '$begin', '$eind', '$dag', '$regio', '$plaats', '$lesduur')";  
$result_reservering = mysql_query($reservering) or die(mysql_error());  

echo "OK"; 

} 

else { 

echo "Deze heeft al iemand gekozen."; 

} 
} 
?>

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
$dag = maandag, dinsdag, woensdag enz.
In de database staat dit als text.

[ Voor 33% gewijzigd door Matthijs1982 op 17-07-2006 22:26 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Hoe wil MySQL zien of "maandag" groter of kleiner is dan "donderdag"? Voor MySQL zijn dat gewoon twee strings, en die worden gesorteerd op alfabetische volgorde. Sla het op in een fatsoenlijk datumtype, of kies desnoods de getallen 0-6 (of 1-7) voor dagnummers.

'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.


  • amoen
  • Registratie: Juni 2003
  • Laatst online: 18-11-2025
ik denk dat ie in de war raakt door de opeensomming van je AND's en OR.
probeer dit eens:

PHP:
1
2
3
$check_reservering = "
SELECT * FROM reserveringen WHERE dag = '$dag' 
AND ((begin BETWEEN '$begin' AND '$eind') OR (eind BETWEEN '$begin' AND '$eind'))";



edit:
Hoe wil MySQL zien of "maandag" groter of kleiner is dan "donderdag"?
dat wordt toch ook niet gevraagt in de query? het is toch WHERE dag = '$dag', verder niets?
het lijkt me natuurlijk wel handig als $begin en $eind in een 'DATE' timestamp staan of iets dergelijks (bijv. 2006-07-16)

[ Voor 60% gewijzigd door amoen op 17-07-2006 22:33 ]

heeeeee ..... hoe is het?


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Ik keek inderdaad verkeerd, ik moest natuurlijk vragen wat begin en eind voor type hebben. :)

'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.


  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Wanneer ik het tussen haakjes zet, houd ik het probleem.
De controle wordt niet uitgevoerd, maar de gegevens worden wel in de database weggeschreven.

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Nu werkt alles.
Bedankt voor jullie hulp.

[ Voor 175% gewijzigd door Matthijs1982 op 17-07-2006 22:56 ]

Pagina: 1