Ik heb een reserveringsscript gemaakt voor een hotel hier in kan een kamer geboekt worden de gegevens zoals naam soortkamer en adres word gewoon in de database gezet alleen nu is de bedoeling dat er voor bijv. bij de aankomstdatum 23/05/2012 maar 5 reserveringen in de tabel gezet kunnen worden en als er dan weer 1 kamer vrij komt deze kamer dan weer 1x geboekt kan worden. hier onder voeg ik mijn stuke script ff toe.

<?php
// variabelen initialiseren:
$db= mysql_select_db('groep5', mysql_connect('localhost', 'groep5', '')) or die (mysql_error());

if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($_POST['naam'] == '' OR $_POST['adres'] == ''){
$fout = 'Niet alles is ingevuld!';
}

if(isset($fout)){
echo 'Er is een fout opgetreden: <span style="font-weight: bold; color: red;">'.$fout.'</span>';
}else{

$id = ($_POST['id']);
$naam = ($_POST['naam']);
$adres = ($_POST['adres']);
$postcode = ($_POST['postcode']);
$woonplaats = ($_POST['woonplaats']);
$telefoon = ($_POST['telefoon']);
$email = ($_POST['email']);
$datuma = ($_POST['datuma']);
$datumv = ($_POST['datumv']);

$sql = 'INSERT INTO business (naam, adres, postcode, woonplaats, telefoon, email, datuma, datumv) VALUES ("'.$naam.'","'.$adres.'","'.$postcode.'","'.$woonplaats.'","'.$telefoon.'","'.$email.'","'.$datuma.'","'.$datumv.'");';
$result = mysql_query($sql);

if($result){
header("Location: index.html");
}else{
echo 'Er is een fout opgetreden bij het toevoegen aan de database!';
}
}
}else{
?>
Haal je wachtwoord uit het script! en ten tweede.

ik zie geen:

foutafhandeling,
je maakt onnodige variablen ( regel 15 tm 22 dit kan gewoon in je query)

en hetgeen wat jij wilt kan je bereiken met je query aan te passen.

kijk is naar BETWEEN http://w3schools.com/sql/default.asp

[size=xsmall]Toevoeging op 23/05/2012 13:48:56:[/size]

edit : hier heb je een voorbeeld van hoe je sql insert netjes opbouwt. :)

https://github.com/WouterJ/sql-boilerplate/blob/mysql/query-insert.php
Toevoeging aan de post van Reshadd,

Escape je input, dus gebruik mysql_real_escape_string() voordat je het invoert. Anders is de kans groot dat je DB zo op straat ligt.
dus als ik het goed begrijp moet ik een between uitvoeren die laten counten en dan een if maken met iets als die count 5 is dan kan der geen kamer gereserveerd worden.
Gerard,

Hier maak je alleen een INSERT query, die insert dus een nieuw record in je database.

Als je wilt zien of er al 5 reserveringen zijn, zul je eerst een select query moeten uitvoeren, zodat je kunt kijken met een if statment of het veld waar je het aantal reserveringen opslaat 5 heeft met een bepaalde id.
ja dat dacht ik al oke ik ga ff wat proberen ik laat wel wat horen als het gelukt is.
@Gerard,

Wat is het nut van je vorige bericht nog eens te quoten? Je kunt ook gewoon antwoord geven, en anders Google gebruiken.

[size=xsmall]Toevoeging op 24/05/2012 11:29:40:[/size]

Als je het linkje van de BETWEEN hebt gezien, zie je ook dat je dat dus NIET nodig hebt en niet doet wat jij wil.

Hint: "SELECT aantal_reserveringen FROM tabel WHERE id='id van hotel/reservering'"

vervolgens met een fetch ophalen en dan kijken met een if statement of aantal_reserveringen groter of gelijk is aan 5. Zoja geef je een melding dat ze niet meer reserveren, zonee ga je naar je INSERT query toe.
@chris deze heeft hij zeker wel nodig. denk maar is even logisch na.

iemand wil reserveren dus de query doet een select.

select kamers uit tabel_kamers. op datum_post als aantal kamers => 5 dan kamer is vol

maar een kamer is toch niet voor 1 dag te boeken neem ik aan? dus met die between moet je kijken welke kamer tussen welke periode niet te boeken is. je moet je logica even goed hebben alvoor je de query gaat maken.

dus SELECT kamer FROM tabel WHERE datum BETWEEN start-verblijfdata AND eind-verblijfdata en dan met een if else constructie kijken of je huidige datum klopt met de datum uit je query. als deze 0 is kan je reserveren op die kamer zo niet dan is die kamer vol tussen die data
@Reshadd,

BETWEEN selecteerd velden die tussen twee waardes vallen. Hoe wil je met jou select dan een vergelijking doen op het aantal kamers als je alleen kamer selecteerd uit de database?
ja maar dat komt omdat zijn logica niet klopt. als je goede logica hebt moet je BETWEEN gebruiken. zoals ik al zei... een kamer is toch niet voor een dag geboekt?
je kan gewoon een kamer van 24 mei tot 25 mei boeken als je wil dus wel voor 1 dag

Reageren