Πρόβλημα με date validation check (php&mysql) από νέο μέλος

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
dtj
Δημοσιεύσεις: 8
Εγγραφή: 05 Ιουν 2007 13:42

Πρόβλημα με date validation check (php&mysql) από νέο μέλος

Δημοσίευση από dtj » 05 Ιουν 2007 14:07

Καλησπέρα από ένα νέο μέλος,

Είμαι νέος στον προγραμματισμό και άρχισα να πειραματίζομαι με php+mysql. Το πρόβλημά μου έχει ως εξής:

Προσπαθώ να δημιουργήσω μια εφαρμογή όπου ο χρήστης θα μπορεί να κάνει κρατήσεις δωματίων σε ξενοδοχεία. Αφού λοιπόν επιλέξει ξενοδοχείο (μέχρι εδώ όλα καλά) πρέπει να εισάγει start και end date της κράτησης που θέλει να κάνει. Ο κώδικας πρέπει να ελέγχει στη βάση τον πίνακα tresevations, να ελέγχει τις ημερομηνίες κρατήσεων για το συγκεκριμένο ξενοδοχείο και να του απαντά εάν είναι ή όχι διαθέσιμο το διάστημα μεταξύ start και end date. Εάν είναι διαθέσιμο θα μπορεί να κάνει την κράτηση εισάγοντας την στον πίνακα treservations.

Μόνο μεχρι εδώ εχω φτασει:

Κώδικας: Επιλογή όλων

<HTML>
<HEAD>
<TITLE>Select Date</TITLE>
</HEAD>
<BODY>


<?php
/* Connecting, selecting database */
$my_host = "localhost";
$my_user = "root";
$my_pass = "";
$my_database = "giannis2";
$my_table = "treservations";

$cat4=$_GET&#91;'cat4'&#93;;    /* ΤΟ id ΤΟΥ ΞΕΝΟΔΟΧΕΙΟΥ  ΑΠΟ ΤΗΝ ΠΡΟΗΓΟΥΜΕΝΗ ΚΑΡΤΕΛΑ*/ 


$link = mysql_connect&#40;$my_host, $my_user, $my_pass&#41;
or die&#40;"Could not connect &#58; " . mysql_error&#40;&#41;&#41;;
mysql_select_db&#40;$my_database&#41; or die&#40;"Could not select database"&#41;;
?>

 StartDate&#58;
<input accesskey="1" type="startdate"  name="startdate" size="10" maxlength="10">
</p>

<p>
EndDate&#58;
<input accesskey="2" type="enddate"  name="enddate" size="10" maxlength="10">
</p><br>

Ευχαριστώ για την βοήθεια προκαταβολικα

nastis
Δημοσιεύσεις: 124
Εγγραφή: 16 Φεβ 2005 16:28
Επικοινωνία:

Πρόβλημα με date validation check (php&mysql) από νέο μέλος

Δημοσίευση από nastis » 05 Ιουν 2007 14:36

Πρέπει να μας πείς και πώς έχεις σκεφτεί ότι θα καταχωρούνται στην βάση οι κρατήσεις. Συγκεκριμένα δηλαδή την δομή του πίνακα treservations (τι όνομα και αυτό, αλλού πάει το μυαλό σου).
πόσα δωμάτια έχει, εάν πηγαίνει reservation ανα δωμάτιο, κτλ.

Γενικά πως το έχεις σκεφτεί δηλαδή ότι θα δουλεύει.

Φιλικά
Β.
www.oktonia.com - Παγκόσμιο Χωριό Γνώσης Λυμένα Θέματα Εξετάσεων - Ασκήσεις

dtj
Δημοσιεύσεις: 8
Εγγραφή: 05 Ιουν 2007 13:42

Πρόβλημα με date validation check (php&mysql) από νέο μέλος

Δημοσίευση από dtj » 05 Ιουν 2007 15:36

Λοιπόν,

Ο πίνακας έχει τα εξής πεδία: reservationid, hotelid, customerid, townid, startdate, enddate, roomsleft

Ας υποθέσουμε ότι το ξενοδοχείο έχει 3 δωμάτια και τo reservation θα γίνεται 1 φορά για κάθε δωμάτιο.

Η πρώτη καρτέλα λοιπόν θα είναι η εξής:

Κώδικας: Επιλογή όλων

<?php
/* Connecting, selecting database */
$my_host = "localhost";
$my_user = "root";
$my_pass = "";
$my_database = "giannis2";
$my_table = "treservations";

$cat4=$_GET&#91;'cat4'&#93;;



$link = mysql_connect&#40;$my_host, $my_user, $my_pass&#41;
or die&#40;"Could not connect &#58; " . mysql_error&#40;&#41;&#41;;
mysql_select_db&#40;$my_database&#41; or die&#40;"Could not select database"&#41;;
?>



StartDate&#58;
<input accesskey="1" type="date"  name="StartDate" size="10" maxlength="10">
</p>

<p>
EndDate&#58;
<input accesskey="2" type="date"  name="Enddate" size="10" maxlength="10">
</p><br>


<?php
echo "<form method=post name=f1 action='CheckDate.php?cat4=$cat4;'>";
echo "<input type=submit value=Ok>";
echo "</form>";
?>
Στην δεύτερη ("CheckDate") πρέπει να ελέγχει το romsleft να είναι >0 και να τσεκάρει αν start date έως enddate είναι ήδη πιασμένες ή όχι.

thnx.

nastis
Δημοσιεύσεις: 124
Εγγραφή: 16 Φεβ 2005 16:28
Επικοινωνία:

Πρόβλημα με date validation check (php&mysql) από νέο μέλος

Δημοσίευση από nastis » 05 Ιουν 2007 16:05

Ο πίνακας έχει τα εξής πεδία: reservationid, hotelid, customerid, townid, startdate, enddate, roomsleft
το roomsleft δεν συστήνω να είναι σε αυτόν τον πίνακα. (δηλαδή να καταχωρείται ανα reservation id?? πολύ περίεργο το βλέπω). (και το townid δεν είναι χαρακτηριστικό του reservation of course, αλλά του hotel)

Εγω θα υπέθετα ότι θα ήταν στον πίνακα με το hotels ασπούμε το οποίο θα είχε π.χ. σαν αριθμό τα συνολικά δωμάτια για το συγκεκριμένο ξενοδοχείο.

Από εκεί και πέρα εσυ θα πρέπει να κάνεις πρώτα λίγο business logic στον κώδικα σου, ο οποίος θα ελέγχει εάν υπάρχουνε καταχωρήσεις για το συγκεκριμένο ξενοδοχείο και είτε η ημερομηνία εναρξης είτε η ημερομηνία αναχώρησης ανήκει στο διάστημα που θέλει να γίνει η καινούργια κράτηση.

Κώδικας: Επιλογή όλων

στο πολύ πολύ πολύ περίπου.....
SELECT count&#40;reservationid&#41; from treservations 
WHERE &#40;$_REQUEST&#91;'startdate'&#93; BETWEEN startdate and enddate&#41;
OR  &#40;$_REQUEST&#91;'enddate'&#93; BETWEEN startdate and enddate&#41;
// δηλαδή πόσα reservations πέφτουνε μέσα στο ενδιαφέροντα σου
// to query είναι προφανώς λάθος, αλλα το πιάνεις το νόημα.
Αφού κάνει ένα count τα reservations που ικανοποιούνε το διάστημα που σε ενδιαφέρει μετά θα το αφαιρείς από τα διαθέσιμα συνολικά δωμάτια, εάν υπάρχει ακόμα free τότε κάνεις την κράτηση.

Όπως και να έχει καλό θα ήταν να βάλεις το πρόβλημα σου πρώτα στο χαρτί και να το "λυσεις με το χέρι" πρίν αρχίσεις να γράφεις κώδικα. Θα σου γλιτώσει πολύ χρόνο.

Φιλικά
Β.
www.oktonia.com - Παγκόσμιο Χωριό Γνώσης Λυμένα Θέματα Εξετάσεων - Ασκήσεις

dtj
Δημοσιεύσεις: 8
Εγγραφή: 05 Ιουν 2007 13:42

Πρόβλημα με date validation check (php&mysql) από νέο μέλος

Δημοσίευση από dtj » 05 Ιουν 2007 16:24

Thnx για την βοήθεια, αλλά ασχολούμαι μόλις μια βδομάδα με το όλο subject. Επομένως δυσκολεύομαι να "πιάσω" την όλη λογική.

Το πεδίο townid είναι όντως άχρηστο εδώ. Και το roomsleft ή numberofrooms καλύτερα, πρέπει είναι στοιχείο του πίνακα thotels.

Anyway, θα συνεχίσω την προσπάθεια.

Thnx again

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Πρόβλημα με date validation check (php&mysql) από νέο μέλος

Δημοσίευση από Banavas » 05 Ιουν 2007 20:37

Κάνε πρώτα τον κώδικά σου σαν να είχες μόνο ένα ξενοδοχείο και μετά με ένα loop θα ελέγχεις για όλα τα ξενοδοχεία.
Happy coding....
Μάρκος
http://lasernet.gr

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες