agenda appuntamenti php/mysql

smartgyverblog

Nuovo Utente
9 Apr 2010
9
0
0
www.smartgyverblog.it
raga innanzittuto ciao a tutti..ho il seguente problema: premetto che è da un pò che non metto mani su mysql e php e sono un pò arrugginito.

Malgrado questo,ho realizzato il seguente database in allegato con le varie relazioni per un mio cliente(nello specifico un centro estetico) che non è altro che una agenda elettronica.

Praticamente quando un cliente prende un appuntamento l'orario X per determinati trattamenti non deve essere selezionabile nel menu a tendina da un altro cliente.

ES: prenoto il servizio X che dura 90 minuti alle 10:30,il prossimo che prenota NON DEVE visualizzare l'orario in questione per tutta la durata del trattamento(quindi dalle le 10:30,le 11:00,le 11:30 non saranno presenti nel menu a tendina).

inoltre la tabella APPUNTAMENTO di relazione intermedia ha i campi inizio e fine che hanno rispettivamente VARCHAR(10),e contengono proprio le stringhe con questo format XX:00 (es:10:00)

Che campi mi consigliate di utilizzare? Esistono funzioni che potrebbero di mysql che potrebbero aiutarmi? Come faccio a fare una query che non mi restituise gli orari in questione? Stavo pensando ad un left job,che ne pensate?
 

Allegati

  • db.jpg
    db.jpg
    23,2 KB · Visite: 834

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ho capito male il tuo problema potresti fare in questo modo
PHP:
<?php
$orario=array("00:00","00:30","23:30");//+ tutte le ore che mancano e/o che ti servono
$inizio=array();
$fine=array();
//vari $_POST o $_GET di scelta dell'utente
//poi fai la select della tabella appuntamenti
$query_str="SELECT * FROM appuntamento WHERE id_trattamento=$id_tratt_scelto";
$result=mysql_query($query_str));
//estrai per quel servizio gli orari occupati , immagino che ad ogni inizio corrisponda sempre una fine
while($riga=mysql_fetch_array($result)){
	$inizio[]=$riga['inizio'];
	$fine[]=$riga['fine'];
}
$numero_occupati=0;
$numero_occupati=count($inizio);
//prepari il menu a tendina non ho messo il tag form
echo "<select name=\"scelta orario\">";
//cicli l'array dell'orario
foreach($orario as $ora){
	//metto un flag a 0
	$flag=0;
	//cicli gli orari
		for($k=0; $k<=$numero_occupati;$k++){
			//verifico se $ora è compreso o se non ci sono orari occupati
			if($ora >= $inizio[$k] && $ora <= $fine[$k] && $numero_occupati!=0){
				$flag=1;
			}
		}//fine for
	if($flag==0){//se $ora non è compreso stampo
		echo "<option value=\"".$ora."\">$ora</option>";
	}
}//fine while
echo "</select>";
?>
guarda però che è solo un'idea e non so se funzi
 

smartgyverblog

Nuovo Utente
9 Apr 2010
9
0
0
www.smartgyverblog.it
ciao
se non ho capito male il tuo problema potresti fare in questo modo
PHP:
<?php
$orario=array("00:00","00:30","23:30");//+ tutte le ore che mancano e/o che ti servono
$inizio=array();
$fine=array();
//vari $_POST o $_GET di scelta dell'utente
//poi fai la select della tabella appuntamenti
$query_str="SELECT * FROM appuntamento WHERE id_trattamento=$id_tratt_scelto";
$result=mysql_query($query_str));
//estrai per quel servizio gli orari occupati , immagino che ad ogni inizio corrisponda sempre una fine
while($riga=mysql_fetch_array($result)){
	$inizio[]=$riga['inizio'];
	$fine[]=$riga['fine'];
}
$numero_occupati=0;
$numero_occupati=count($inizio);
//prepari il menu a tendina non ho messo il tag form
echo "<select name=\"scelta orario\">";
//cicli l'array dell'orario
foreach($orario as $ora){
	//metto un flag a 0
	$flag=0;
	//cicli gli orari
		for($k=0; $k<=$numero_occupati;$k++){
			//verifico se $ora è compreso o se non ci sono orari occupati
			if($ora >= $inizio[$k] && $ora <= $fine[$k] && $numero_occupati!=0){
				$flag=1;
			}
		}//fine for
	if($flag==0){//se $ora non è compreso stampo
		echo "<option value=\"".$ora."\">$ora</option>";
	}
}//fine while
echo "</select>";
?>
guarda però che è solo un'idea e non so se funzi


ti ringrazio tantissimo per lo spunto visto che è molto interessante..adesso lo provo e vediamo un pò come va.

Il controllo tuttavia dovrei eseguirlo sulla tabella di tipo appuntamenti che è molti a molti legata con clienti e trattamenti.

Vediam oche ne esce e posto il codice per usi futuri.

Grazie ancora!
 

smartgyverblog

Nuovo Utente
9 Apr 2010
9
0
0
www.smartgyverblog.it
1242 - Subquery returns more than 1 row

ragazzi c'è l'ho fatta: sono riuscito a crearla. Il problema è un altro: ho modificato i campi appuntamenti e li ho messi in formato TIME sia inizio che fine. Adesso però insorge un problema.

Tramite questa query:

select DATE_FORMAT(fine,'%H:%i') - (select DATE_FORMAT(inizio,'%H:%i') from appuntamento) AS calcolo from appuntamento where data = '2010-12-18'

sono riuscito a farmi restituire la differenza tra l'inizio e la fine del trattamento(nel caso sia ad esempio le 10:00:00 per il primo e le 12:00:00 per le altre mi restituisce 2). Tuttavia se i record sono più di uno mi restituisce il seguente errore:

#1242 - Subquery returns more than 1 row

come faccio dunque a farmi restuire due colonne con le rispettive differenze di orario?. ES: 10:00 - 12:00 : 2 altro record 14:00 17:00 : 3.

N.B: ho cercato una funzione per fare automaticamente calcoli con gli orari ma non ne ho trovati sulla guida di mysql. Ne esistono o no?
 

smartgyverblog

Nuovo Utente
9 Apr 2010
9
0
0
www.smartgyverblog.it
mi autorispondo così:

select DATE_FORMAT(fine,'%H:%i') AS fine,Date_FORMAT(inizio,'%H%:%i') AS inizio,TIME_FORMAT(TIMEDIFF(fine,inizio),'%k') AS differenza from appuntamento where data = "2010-12-18"
 
Discussioni simili
Autore Titolo Forum Risposte Data
asevenx Cerco plugin per gestire appuntamenti con agenda e campi di selezione WordPress 4
G Realizzazione di un agenda C/C++ 0
onweb [VENDO]Agenda Web - Block notes Altri Annunci 0
P Creazione agenda mysql PHP 0
A agenda legata a db PHP 5
G Inserimento Prenotazione con Agenda MySQL 0
F Agenda Eventi da database MySql MySQL 3
renegade Vendo Agenda prenotazioni sistema Drag & Drop Offerte e Richieste di Lavoro e/o Collaborazione 0
sgeuna@caffarel Una calendario-agenda con PHP e MySQL PHP 6
Monital php per Agenda PHP 2
tanaka Calendario/agenda in php-mysql PHP 5
Z vCard ed agenda con notifiche sms ed email Presenta il tuo Sito 0
F script agenda PHP 0
M Plugin Calendario Appuntamenti WordPress 1
E Calendario appuntamenti \dipendenti PHP 0
S Controllo appuntamenti disponibili sul db PHP 5
L Inserimento appuntamenti che si ripetono settimanalmente PHP 2
C Creare una macro per inserimento appuntamenti .NET Framework 1
B Creazione sito con videoconferenze, report, db appuntamenti fra sedi differenti PHP 9
O Selezionare appuntamenti da un calendario Classic ASP 2
M Appuntamenti Online [Retribuito] PHP 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0

Discussioni simili