abonnement Unibet Coolblue
pi_72009043
Ik kom even ergens niet uit. Voor een resereringssysteem gebruik ik een tabel met de volgende gegevens.

id - kamer - vanaf - tot
int - varchar - timestamp - timestamp

nu heb ik in de database de volgende gegevens

1
2
3
4
1  1  20-08-2009  24-08-2009
2  2  21-09-2009  27-09-2009
3  1  25-08-2009  31-08-2009
4  3  18-08-2009  26-09-2009


Nu wil ik controlleren of kamer 1 beschikbaar is tussen 18 en 19 aug, echter krijg ik dat niet goed voor elkaar

Hoe doet men dit? ik probeerde het zo

1
2
3
4
5
6
7
8
SELECT reserveringen.*,
unix_timestamp(vanaf) AS vanaf,
unix_timestamp(tot) AS tot
FROM reserveringen
WHERE kamer =  '" . $DB->escape($_POST['kamers']) . "'
AND   (vanaf >= '" . $vanaf_tijd . "'
OR     tot <= '" . $tot_tijd . "')
LIMIT 1


Wat doe ik fout?
Just say hi!
  woensdag 19 augustus 2009 @ 14:36:43 #227
63192 ursel
"Het Is Hier Fantastisch!
pi_72010295
Kan je dan niet gewoon BETWEEN gebruiken?
pi_72010775
waarom gebruik je niet een DATE veld, en een $vanaf_datum en $tot_datum?
Of zitten er eigenlijk datums in die tijd velden?

WHERE vanaf >= $vanaf_datum zou gewoon moeten werken, wel zorgen dat je datum hetzelfde opgebouwd is als in je database, dus 2009-08-19 waarschijnlijk
pi_72013390
Ik krijg het ook met between niet echt voor elkaar, heb nu de velden wel omgezet naar idd gewoon date!!! :{

1
2
3
4
5
6
7
SELECT reserveringen.*,
unix_timestamp(vanaf) AS vanaf,
unix_timestamp(tot) AS tot
FROM reserveringen
WHERE kamer =  '2'
AND '1250719200' BETWEEN vanaf AND tot
LIMIT 1
Just say hi!
  vrijdag 21 augustus 2009 @ 18:23:38 #230
137690 Pizzahut
Het Bora Bora Gebergte
pi_72076929
quote:
Op woensdag 19 augustus 2009 13:44 schreef Swetsenegger het volgende:

[..]

enkele = is toewijzen
dubbele == is vergelijken
3 dubbel === is vergelijken op inhoud EN type.
enkele met .= is koppelen.

Voorbeeld:
[ code verwijderd ]


[ code verwijderd ]


[ code verwijderd ]


[ code verwijderd ]


[ code verwijderd ]


[ code verwijderd ]


[ code verwijderd ]


[ code verwijderd ]
Zou jij mij een voorbeeld kunnen geven waarbij de uitkomst van === true is?
Disturbed Mind
Het leven: Soms ben je de duif, soms het standbeeld.
  vrijdag 21 augustus 2009 @ 18:27:04 #231
75592 GlowMouse
l'état, c'est moi
pi_72077001
quote:
Op vrijdag 21 augustus 2009 18:23 schreef Pizzahut het volgende:

[..]

Zou jij mij een voorbeeld kunnen geven waarbij de uitkomst van === true is?
1
2
3
4
5
<?php
$i 
1;
if(
$i === '1') echo "$i === '1'";
if(
$i === 1) echo "$i === 1";
?>


[ Bericht 0% gewijzigd door GlowMouse op 21-08-2009 18:28:00 (double quotes zijn mooier hier) ]
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 21 augustus 2009 @ 18:31:01 #232
85514 ralfie
!Yvan eht nioj
pi_72077087
quote:
Op vrijdag 21 augustus 2009 18:23 schreef Pizzahut het volgende:

[..]

Zou jij mij een voorbeeld kunnen geven waarbij de uitkomst van === true is?
1
2
3
4
5
6
7
<?php
$x
=2
if ($x===2)
{
     
//true;
}
?>


EDIT:damn, ben traag vandaag...
  vrijdag 21 augustus 2009 @ 20:04:43 #233
67978 HenryHill
Fake it 'till you make it
pi_72079619
quote:
Op woensdag 19 augustus 2009 13:51 schreef Chandler het volgende:
Ik kom even ergens niet uit. Voor een resereringssysteem gebruik ik een tabel met de volgende gegevens.

id - kamer - vanaf - tot
int - varchar - timestamp - timestamp

nu heb ik in de database de volgende gegevens
[ code verwijderd ]

Nu wil ik controlleren of kamer 1 beschikbaar is tussen 18 en 19 aug, echter krijg ik dat niet goed voor elkaar

Hoe doet men dit? ik probeerde het zo
[ code verwijderd ]

Wat doe ik fout?
Even voor de duidelijkheid:
* de 'tot'-dag van een reservering is de laatste dag dat een kamer bezet is (eigenlijk dus tot-en-met)?
* je wilt weten of kamer 1 op zowel 18 als 19 augustus beschikbaar is?

Dit zijn volgens mij alle mogelijke combinaties waarop 2 tijdsperioden elkaar kunnen overlappen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   X--X
1.       RrrrrrrR

     X------X
2.       RrrrrrrR

           X--X
3.       RrrrrrrR

             X------X
4.       RrrrrrrR

                   X--X
5.       RrrrrrrR

     X--------------X
6.       RrrrrrrR

Alleen in optie 1 en optie 5 overlappen X en R elkaar niet. Met andere woorden, je zoekt een reservering voor kamer 1 waarvoor geldt: NOT(van > 19 Aug OR tot < 18 Aug) . Als je minimaal 1 zo'n rij vindt, dan is de kamer (in ieder geval voor een deel van) die periode bezet.

Oh, en een gratis tip van mij: sla geen datumranges op, maar een rij per dag waarop een kamer bezet is (elke datum-rij krijgt dan een FK-verwijzing naar de reservering zelf). Dit maakt je queries een heel stuk makkelijker.
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
  vrijdag 21 augustus 2009 @ 20:31:06 #234
137690 Pizzahut
Het Bora Bora Gebergte
pi_72080366
Logisch natuurlijk 8)7 (@ die ===)

Nu even iets anders, zo nu en dan werk ik met mod_rewrite, altijd handig voor SEO vriendelijke URL's enzo alleen hoe maak ik een dynamische?
Ik heb nu bijv. www.domein.nl/index.php?page=1 veranderd naar www.domein.nl/blog
alleen is bij mij ?page=7 mijn lees blog pagina (niet de front-page) en id=XX het blog item, dus index.php?page=7$id=5 kom je op een blog uit met reactie mogelijkheid etc. nu wil ik dit veranderen in bijv. www.domein.nl/blog/5 en waar de 5 is het blog item.

op mijn blog pagine (page=7) haal ik met een $_GET het id uit de url: $_GET['id'], hoe kan ik dit omzetten in een mod_rewrite.

heb nu:
1
2
3
RewriteEngine on
RewriteRule ^blog$ index.php?page=1 (dit is mijn frontpage)
RewriteRule ^blog/([0-9][0-9])$ index.php?page=7&id=$1 (mijn lees blog pagina)
Disturbed Mind
Het leven: Soms ben je de duif, soms het standbeeld.
pi_72081296
quote:
Op vrijdag 21 augustus 2009 20:04 schreef HenryHill het volgende:

Oh, en een gratis tip van mij: sla geen datumranges op, maar een rij per dag waarop een kamer bezet is (elke datum-rij krijgt dan een FK-verwijzing naar de reservering zelf). Dit maakt je queries een heel stuk makkelijker.
De meeste hotels willen dat je voor 12 uur vertrekt op de vertrekdag, en je kunt pas je kamer op na 3 of 4 uur 's middags. Dan kun je dus een dubbele reservering hebben voor een dag (persoon A vertrekt en persoon B komt aan). Of je moet dat op een andere manier ondervangen.
  vrijdag 21 augustus 2009 @ 21:15:27 #236
67978 HenryHill
Fake it 'till you make it
pi_72081600
quote:
Op vrijdag 21 augustus 2009 21:05 schreef Light het volgende:

[..]

De meeste hotels willen dat je voor 12 uur vertrekt op de vertrekdag, en je kunt pas je kamer op na 3 of 4 uur 's middags. Dan kun je dus een dubbele reservering hebben voor een dag (persoon A vertrekt en persoon B komt aan). Of je moet dat op een andere manier ondervangen.
Een dag loopt van 12 uur 's middags tot 12 uur 's middags de volgende dag. M.a.w.: als je laatst opgeslagen dag 21 Aug is, dan heb je tot 22 Aug 12 uur om uit te checken. Opgelost.

Ditzelfde principe was trouwens ook praktischer geweest bij het gebruik van datumranges, omdat boekingen dan niet 1 dag hoeven te overlappen.
So this is how liberty dies... with thunderous applause.
Truth? What's so great about the truth? Try lying for a change, it's the currency of the world
  zaterdag 22 augustus 2009 @ 10:19:10 #237
37634 wobbel
Da WoBBeL King
pi_72087444
Oke, dit is waarschijnlijk heel simpel....maargoed

Ik heb deze SQL query

1
2
3
4
5
6
7
SELECT * 
FROM G_Producten 
WHERE Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' 
AND ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
ORDER BY ProductTitel ASC 
LIMIT 40 


alleen is het probleem dat hij van alles selecteert, ongeacht $_GET['supplier']....
Dus ik denk dat m'n query niet zo goed is ofzo.... :P
pi_72087491
Ik denk dat je $_GET['data'] leeg is, waardoor je OR altijd true oplevert en alles dus terug komt.
pi_72087508
Je kunt beter mysql_real_escape_string() gebruiken ipv addslashes.

En verder gaat het mis omdat AND een hogere proriteit heeft dan OR. Er staat dus eigenlijk:
1
2
3
4
5
6
7
8
9
SELECT * 
FROM G_Producten 
WHERE (
    Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' 
   AND ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
)
OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
ORDER BY ProductTitel ASC 
LIMIT 40


En je wilt:
1
2
3
4
5
6
7
8
9
SELECT * 
FROM G_Producten 
WHERE Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' 
AND (
    ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
    OR IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
)
ORDER BY ProductTitel ASC 
LIMIT 40
pi_72087522
Je query wordt dus zo uitgevoerd:

1
2
3
4
5
6
7
8
9
10
11
12
SELECT * 
FROM G_Producten 
WHERE 

  Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' 
 AND 
  ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
)
OR 
 IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
ORDER BY ProductTitel ASC 
LIMIT 40 


Let op de haakjes die ik heb toegevoegd. Een AND heeft namelijk een hogere prioriteit dan een OR. Die haakjes die ik er nu met de hand in heb gezet, die zet MySQL er namelijk automatisch in.

Ik vermoed dat je zoiets wil:

1
2
3
4
5
6
7
8
9
10
11
12
SELECT * 
FROM G_Producten 
WHERE 
 Leverancier = '" . addslashes ( $_GET['supplier'] ) . "' 
AND
(
  ProductTitel LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
 OR 
  IdProduct LIKE '%" . addslashes ( $_GET['data'] ) . "%' 
)
ORDER BY ProductTitel ASC 
LIMIT 40 


Dus dan moet je er zelf nog haakjes in zetten.
pi_72087529
Hoi Light .
  zaterdag 22 augustus 2009 @ 10:42:07 #242
37634 wobbel
Da WoBBeL King
pi_72087691
Ah oke, dan ga ik mij daar maar eens wat verder in het verdiepen.
Ik wist dat het iets met die haakjes was (net zoals je dat in PHP zelf ook kan doen) maar ik weet niet helemaal hoe ze werken.

Dank u
pi_72103901
quote:
Op vrijdag 21 augustus 2009 20:31 schreef Pizzahut het volgende:
Logisch natuurlijk 8)7 (@ die ===)
Die === is vooral onmisbaar omdat het gedrag van == nogal idioot is:

1
2
3
4
5
6
7
8
$a = (0 == 'foo');
var_dump($a);// --> bool(true)
$a = (0 === 'foo');
var_dump($a);// --> bool(false)
$a = (true == 'foo');
var_dump($a);// --> bool(true)
$a = (true === 'foo');
var_dump($a);// --> bool(false)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 24 augustus 2009 @ 11:04:40 #245
63192 ursel
"Het Is Hier Fantastisch!
pi_72107102
Iemand een suggestie voor het volgende.

Ik heb klaarblijkelijk een corrupte tabel in een van mijn databases op onze development omgeving (gelukkig maar). Ziet er naar uit dat dit wat ontwikkel werk van mijn collega is die nu op vakantie is.

Maar zodra ik de tabel aanraak klapt de gehele MySQL service eruit. Ik kan niet eens de CHECK TABLE tablenaam uitvoeren.

Iemand een idee hoe ik er voor kan zorgen dat ik deze tabel kan reparen? Wil hem namelijk nog niet verwijderen, omdat dan zijn werk teniet gaat.. Overigens weet ik ook niet of dat wel gaat lukken..
pi_72108676
quote:
Op maandag 24 augustus 2009 07:36 schreef SuperRembo het volgende:

[..]

Die === is vooral onmisbaar omdat het gedrag van == nogal idioot is:
[ code verwijderd ]
Je kunt ook gewoon true == false aantonen op die manier
pi_72111387
Ik heb nog even een vraag; mijn vorige is net opgelost (Bedankt HenryHill).

eregi komt in de toekomstige versie 6 van php te vervallen, hoe en met welke functie moet ik nu strings checken? ik wil bv een string checken of het alleen bestaat uit a-zA-Z0-9-_ en niets meer..

Anyone?
Just say hi!
  FOK!-Schrikkelbaas maandag 24 augustus 2009 @ 14:31:10 #248
1972 Swetsenegger
Egocentrische Narcist
pi_72111467
quote:
Op maandag 24 augustus 2009 14:28 schreef Chandler het volgende:
Ik heb nog even een vraag; mijn vorige is net opgelost (Bedankt HenryHill).

eregi komt in de toekomstige versie 6 van php te vervallen, hoe en met welke functie moet ik nu strings checken? ik wil bv een string checken of het alleen bestaat uit a-zA-Z0-9-_ en niets meer..

Anyone?
preg_match?
  maandag 24 augustus 2009 @ 14:37:23 #249
63192 ursel
"Het Is Hier Fantastisch!
pi_72111628
Probleem opgelost.
Heb gewoon die pleuris tabel gedropped.
pi_72134034
Ok simpele vraag hier: Ik wil een pagina includen die tekens als ë, á etc bevat. Echter komt hiervoor in de plaats dit dingetje: �

Hoe krijg ik toch de accenten daarop, zonder rare alt-codes te hoeven gebruiken?

En nog een vraagje:
Ik wil een een variable switchen (case dingetje), maar ik moet er echt best veel invoeren. Kan dat met een array die je er in stopt?

[ Bericht 27% gewijzigd door Flaccid op 25-08-2009 11:23:10 ]
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')