[Risolto] Gestione Prenotazioni script php

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Un saluto a tutta la community mrwebmaster, avrei la necessità di realizzare uno script per la gestione di appuntamenti, in sostanza avrei necessità di una cosa del genere:

Cognome|Nome|Azienda|Telefono|DataAppuntamento|OraAppuntamento|StatoAppuntamento|Note

Rossi|Mario|Topolandia|333333333|18/06/2016|09:00|Eseguito|qua le note...
Rossi|Giulia|Calzamia|333333333|18/06/2016|09:30|NonPresentato|qua le note...

mi dareste una mano a strutturare il tutto :(
 
ciao
ti schematizzo
intanto partirei dalla tabella
Codice:
id int(12) autoincrement primarikey
Cognome varchar(xy) not nul//con xy la unghezza del campo
Nome varchar(xy) not nul
Azienda varchar(xy) not nul
Telefono varchar(xy) not nul
DataAppuntamento date //dipende dal formato con cui immetterai le date
OraAppuntamento //potrebbe essere varchar(5)
StatoAppuntamento set('attesa', 'eseguito', 'non presentato') default 'attesa'//e/o altri valori
Note mediumtext // o longtext dipende dalla lunghezza
poi
1) pagina con form per inserimento dati appuntamento
2) pagina per vedere e con form per selezionare quello che vuoi vedere e gli opportuni pulsanti per update/delete
3) pagina con form per uddate o delete appuntamento

una piccola osservazione sulla tabella
se hai un'anagrafica clienti (nome azienda, tel, emali, piva, indirizzo ecc..) al posto dei campi comuni della tabella sopra metti un campo
id_azienda int(12) e poi fai le join tra le due tabelle
 
Ciao Borgo Italia,
intanto grazie tantissimo per la celere risposta, per il momento sto partendo da una situazione pulita (o meglio ho la tabella clienti, ma per un'altra applicazione e essendo che sto riprendendo a programmare dopo uno stop durato diversi anni, non vorrei incartarmi).

Quindi, procedo a creare la tabella come da schema suggerito, poi pian piano cercherò, spero insieme al supporto di mrwebmaster, di rimettermi in carreggiata.

:)
 
ciao,
io sono rimasto indietro a mysql, mysqli l'ho utilizzo solo per la connessione al db, quindi non sono capace (per ora) di trasformare le istruzioni da mysql a mysqli :oops:

Se provo ad implementarlo cosi com'è funziona lo stesso o da problemi, cosi magari inizio a farlo usare all' utente ed io con calma poi lavoro alla versione aggiornata mysqli
 
ciao
in prima istanza passare da mysql a mysqli è semplice
se hai un vecchio sito per modificare basta sostituire
per la connessione:
PHP:
<?php
$conn = mysql_connect($host,$username,$password) or die (mysql_error());
$sel = mysql_select_db($db) or die (mysql_error());
?>
con
PHP:
<?php
$conn = mysqli_connect($host,$username,$password, $db) or die (mysqli_error());
?>
per le query di select/update/delete
PHP:
<?php
$ris=mysql_query("......");
?>
con
PHP:
<?php
$ris=mysqli_query($conn,"......");//aggiungere la variabile $conn della connessione
?>
per tutte le altre basta aggiungere una i alle istruzioni
se invece hai un nuovo sito da fare allora ti conviene studiarlo per avere tutte le opportunità che offrono le mysqli e decidere se passare dalla programmazione procedurale a quella ad oggetti
comunque non far condividere mysql con mysqli
 
Perfetto,
mi attivo subito per apportare le modifiche da te suggerite al mio vecchio sito, grazie di vero vero cuore per le risposte ed il supporto
 
Ho creato la pagina per inserire le prenotazioni, funziona bene e i dati vengono correttamente inseriti nel db, adesso ho creato un form per la ricerca di questi dati che invia tramite post la richiesta al file qricapp.php che dovrebbe eseguire questa query ... ma non funziona :(

PHP:
<?php

// INCLUDO IL FILE PER LA CONNESSIONE AL DATABASE
include ("connessione.php");

if (trim($_POST['cliente']) == '' && trim($_POST['gestore']) == '' && trim($_POST['data']) == '' && trim($_POST['ora']) == '' && trim($_POST['stato_pren']) == '' && trim($_POST['telefono']) == ''&& trim($_POST['note']) == '')
{
    //REINDIRIZZO L'UTENTE AL MESSAGGIO DI ERRORE ATTENZIONE COMPILA ALMENO UN CAMPO
    echo "<center><h3><font color=\"red\">Attenzione non hai inserito nessun valore di ricerca</h3><a href=\"qricapp.php\"></br>Torna alla ricerca</a></center></br></br>";
}

else
{
$cliente = $_POST['cliente'];
$gestore = $_POST['gestore'];
$data = $_POST['data'];
$ora = $_POST['ora'];
$stato_pren = $_POST['stato_pren'];
$telefono = $_POST['telefono'];
$note = $_POST['note'];


$query = "SELECT *, DATE_FORMAT(appuntamenti.data,'%d/%m/%Y') as data_it FROM appuntamenti WHERE 1";


if (!empty($cliente)) {
    $query .= " AND `cliente` LIKE '%$cliente%'";
}

if (!empty($gestore)) {
    $query .= " AND `gestore` LIKE '%$gestore%'";
}

if (!empty($data)) {
    $query .= " AND `data` LIKE '%$data%'";
}

if (!empty($ora)) {
    $query .= " AND `ora` = '$ora'";
}

if (!empty($stato_pren)) {
    $query .= " AND `stato_pren` = '$stato_pren'";
}

if (!empty($telefono)) {
    $query .= " AND `telefono` LIKE '%$telefono%'";
}

if (!empty($note)) {
    $query .= " AND `note` LIKE '%$note%'";
}

    $query .= " ORDER BY id DESC";
}

// ESEGUO LA QUERY
$cerca = mysql_query($query);

// STAMPO LA QUERY PER IL DEBUG
echo $query;

echo "
    <center><table>
    <tr><th colspan='7'>RISULTATI RICERCA</th><th colspan='6'>OPERAZIONI</tr>
    <tr><th>Id<th>Cliente<th>Gestore<th>Data<th>Ora<th>Telefono<th>Note<th>Stato Pagamento<th>Allegato<th>Nuova<th>Visualizza<th>Modifica<th>Pdf<th>Elimina</tr>
</center>";


while ($riga = mysql_fetch_assoc($cerca)){
echo "<tr><td>$riga[idappuntamento]<td>$riga[cliente]<td>$riga[gestore]<td>$riga[data_it]<td>$riga[ora]<td>$riga[telefono]<td>$riga[note]</td><td><center><a href=\"duplicacommessa.php?id=$riga[id]\"><img src= \"img/duplica_32_32.png\"></a></center></td><td><center><a href=\"visualizza.php?id=$riga[id]\"><img src= \"img/visualizza_32_32.png\"></a></center></td><td><center><a href=\"modifica.php?id=$riga[id]\"><img src= \"img/modifica_32_32.png\"></a></center></td><td><center><a href=\"pstampa.php?id=$riga[id]\" \" target=\"_blank\"><img src= \"img/stampa_32_32.png\"></a></center></td><td><center><a href=\"elimina.php?id=$riga[id]\" onclick=\"return confirm('Cancellare definitivamente?')\"><img src=\"img/elimina_32_32.png\"></a></center></td></tr>";
}

echo "</table>";

// E chiudiamo la connessione a MySQL
mysql_close();

?>


:oops:
 
Buongiorno,
ho apportato la modifica suggerita ma la query non va ...

Codice:
SELECT *, DATE_FORMAT(appuntamenti.data,'%d/%m/%Y') as data_it FROM appuntamenti WHERE 1=1 AND data LIKE '%20/06/2016%' ORDER BY id DESC

viene correttamente eseguita ma non mostra risultati :(
 
ciao
altra correzione
$riga[idappuntamento]
con
$riga['idappuntamento']
analogo gli altri, $riga è un array associativo e quindi la chiave va tra virgolette
 
Grazie mille,
con i consigli vostri sono riuscito a saltare anche questo fosso, in sostanza il problema era legato a

Codice:
$query .= " ORDER BY id DESC";

che invece doveva essere :
Codice:
$query .= " ORDER BY idappuntamento DESC";


grazie grazie grazie :)
 
Sono agli sgoccioli, mi manca solo la parte per la modifica, ho completato tutto lo script, la query di update viene correttamente eseguita, ma non riesco a recuperare tramite $_REQUEST l'id per updatare i dati

Codice:
<?php
foreach ($_POST as $key => $value) {
    $_POST[$key] = addslashes($value);
}

// EFFETTUO L'UPPER CASE DEI CAMPI INSERITI
foreach ($_POST as $key => $value) {
    $_POST[$key] = strtoupper($value);
}

$idappuntamento = $_POST['idappuntamento'];
$cliente = $_POST['cliente'];
$gestore = $_POST['gestore'];
$data = $_POST['data'];
$ora = $_POST['ora'];
$stato_pren = $_POST['stato_pren'];
$tipoprenotazione = $_POST['tipoprenotazione'];
$telefono = $_POST['telefono'];
$note = $_POST['note'];

// INCLUDO IL FILE PER LA CONNESSIONE AL DATABASE
include ("connessione.php");
// PREPARO LA QUERY DI UPDATE
$sql = "UPDATE appuntamenti SET cliente =('$cliente'), gestore =('$gestore'),data = STR_TO_DATE('$data', '%d/%m/%Y'),ora =('$ora'),stato_pren =('$stato_pren'),tipo_pren =('$tipoprenotazione'),telefono =('$telefono'),note =('$note') WHERE idappuntamento='$_REQUEST[idappuntamento]'";

// STAMPO LA QUERY PER IL DEBUG
echo $sql;

// LANCIO LA QUERY
$result = mysql_query($sql);

// CONTROLLO L'ESITO
if (!$result) {
    die("Errore nella query $sql: " . mysql_error());
}

// CHIUDO LA CONNESSIONE A MYSQL
mysql_close();

?>


questo quello che viene stampato dalla query

Codice:
UPDATE appuntamenti SET cliente =('PIPPO PELO'), gestore =('NESSUNO'),data = STR_TO_DATE('21/06/2016', '%d/%m/%Y'),ora =('09:30:00'),stato_pren =('APP. CONFERMATO'),tipo_pren =('VERNICE'),telefono =('333333333'),note =('APPUNTAMENTO VERNICE  X') WHERE idappuntamento=''


Ultimo gradino :(o_O
 
ciao
proviene da qui
<a href=\"modifica.php?id=$riga[id]\"><img src=
?
se si non vedo il $_GET, da qualche parte dovresti
PHP:
<?php
//....
$idappuntamento = $_POST['idappuntamento'];
$cliente = $_POST['cliente'];
$gestore = $_POST['gestore'];
//però attento a quando usi il valore che proviene da un ?valore=123456
//devi fare una verifica
$id=(int)$_GET['id'];//leggo il get e lo forzo a intero
/*esempio se qualcuno scrive su suo bw
www.tuo_sito.it/modifica.php?id=33 OR 1=1
ti uppa tutti i record forzando ad intero rimane solo il 33
o se non contiene numeri risulta 0
e mettere anche un if
if($id==0) exit;//o rimandi dove vuoi
*/
$query="....WHERE idappuntamento=$id";
//.....
?>
 
la riga proviene da qua : <a href=\"mapp.php?idappuntamento=$riga[idappuntamento]\"><img src= \
 
ciao
due cose
la riga è in php o html, perche se in html devi fare
HTML:
<a href="mapp.php?idappuntamento=<?php echo $riga['idappuntamento']; ?>">...</a>
se invece viene stampata da php ricordati gli apici su $riga['idappuntamento'] (comunque anche sull'html)
e modifica il GET in
PHP:
$id=(int)$_GET['idappuntamento'];
 
La riga viene stampata da php

Codice:
echo "
    <center><table>
    <tr><th colspan='9'>RISULTATI RICERCA</th><th colspan='6'>OPERAZIONI</tr>
    <tr><th>Id<th>Cliente<th>Gestore<th>Data<th>Ora<th>Telefono<th>Note<th>Stato Prenotazione<th>Tipo Prenotazione<th>Nuova<th>Modifica<th>Elimina</tr>
</center>";

// NEL CICLO WHILE PER LA DATA STAMPO LA RIGA [57] E NON LA [56], LA [103] VIENE CREATA DALLA QUERY , DATE_FORMAT(appuntamenti.data,'%d/%m/%Y') as data_it
while ($riga = mysql_fetch_assoc($cerca)){
echo "<tr><td>$riga[idappuntamento]<td>$riga[cliente]<td>$riga[gestore]<td>$riga[data_it]<td>$riga[ora]<td>$riga[telefono]<td>$riga[note]<td>$riga[stato_pren]<td>$riga[tipo_pren]</td><td><center><a href=\"insapp.php\"><img src= \"img/duplica_32_32.png\"></a></center></td><td><center><a href=\"mapp.php?idappuntamento=$riga[idappuntamento]\"><img src= \"img/modifica_32_32.png\"></a></center></td><td><center><a href=\"delapp.php?idappuntamento=$riga[idappuntamento]\" onclick=\"return confirm('Cancellare definitivamente?')\"><img src=\"img/elimina_32_32.png\"></a></center></td></tr>";
}

echo "</table>";
 
Se modifico cosi:

Codice:
<?php
foreach ($_POST as $key => $value) {
    $_POST[$key] = addslashes($value);
}

// EFFETTUO L'UPPER CASE DEI CAMPI INSERITI
foreach ($_POST as $key => $value) {
    $_POST[$key] = strtoupper($value);
}

$id=(int)$_GET['idappuntamento'];
$idappuntamento = $_POST['idappuntamento'];
$cliente = $_POST['cliente'];
$gestore = $_POST['gestore'];
$data = $_POST['data'];
$ora = $_POST['ora'];
$stato_pren = $_POST['stato_pren'];
$tipoprenotazione = $_POST['tipoprenotazione'];
$telefono = $_POST['telefono'];
$note = $_POST['note'];

// INCLUDO IL FILE PER LA CONNESSIONE AL DATABASE
include ("connessione.php");
// PREPARO LA QUERY DI UPDATE
$sql = "UPDATE appuntamenti SET cliente =('$cliente'), gestore =('$gestore'),data = STR_TO_DATE('$data', '%d/%m/%Y'),ora =('$ora'),stato_pren =('$stato_pren'),tipo_pren =('$tipoprenotazione'),telefono =('$telefono'),note =('$note') WHERE idappuntamento=$id";

// STAMPO LA QUERY PER IL DEBUG
echo $sql;

// LANCIO LA QUERY
$result = mysql_query($sql);

// CONTROLLO L'ESITO
if (!$result) {
    die("Errore nella query $sql: " . mysql_error());
}

// SE VA A BUON FINE STAMPO A VIDEO IL MESSAGGIO
else
echo '</br>';
echo '</br>';
echo '</br>';

// CHIUDO LA CONNESSIONE A MYSQL
mysql_close();

?>
</body>
</html>


Viene valorizzato l'id a 0

Codice:
UPDATE appuntamenti SET cliente =('PIPPO PELO'), gestore =('NESSUNO'),data = STR_TO_DATE('21/06/2016', '%d/%m/%Y'),ora =('09:30:00'),stato_pren =('APP. CONFERMATO'),tipo_pren =('MECCANICA'),telefono =('3333333333'),note =('APPUNTAMENTO VERNICE XXX') WHERE idappuntamento=0
 

Discussioni simili