[GDRCD-5.6.0.2] Prenotazione stanze private
[GDRCD-5.6.0.2] Prenotazione stanze private postato il 10/03/2022 21:41:55 nel forum programmazione, open source e hosting
Ma sono io che ho toccato qualcosa per sbaglio o la pagina della prenotazione delle stanze private non funziona correttamente?
Il menu a discesa delle stanze rimane col primo campo vuoto e le stanze risultano non selezionabili. Se tolgo il "disabled" alla riga 29 le stanze sono selezionabili ma di fatto, la prenotazione non va in porto. Dice che la prenotazione è stata fatta ma in realtà, può essere rifatta perché la stanza è ancora disponibile. Ho cercato di modificare un po' il codice, ma quando provo a prenotare, mi viene detto che la prenotazione non è possibile.
Il codice originario è questo:
<?php /*Elenco stanze*/
if(isset($_POST['op']) === false) { ?>
<div class="form_gioco">
<?php
/*Seleziono i ruoli su cui l'account ha competenza*/
$query = "SELECT mappa.id, mappa.nome AS luogo, mappa.costo, mappa.proprietario, mappa.scadenza, mappa_click.nome FROM mappa JOIN mappa_click on mappa.id_mappa = mappa_click.id_click WHERE mappa.privata = 1 ORDER BY mappa.nome, mappa.costo DESC";
$result = gdrcd_query($query, 'result');
if((gdrcd_query($result, 'num_rows') == 0) || ($PARAMETERS['mode']['privaterooms'] == 'OFF')) {
echo '<div class="warning">'.gdrcd_filter('out', $MESSAGE['interface']['hotel']['no_room']).'</div>';
} else { ?>
<form action="main.php?page=servizi_prenotazioni"
method="post">
<div class="form_label">
<?php echo gdrcd_filter('out', $MESSAGE['interface']['hotel']['room']); ?>
</div>
<div class="form_element">
<select name="id">
<?php
while($row = gdrcd_query($result, 'fetch')) { ?>
<?php if($row['scadenza'] > strftime('%Y-%m-%d %H:%M:%S')) { ?>
<option value="" disabled>
<?php echo gdrcd_filter('out', $row['luogo'].', '.$row['nome']
).' ('.$row['proprietario'].', '.gdrcd_format_time($row['scadenza']).') '; ?>
</option>
<?php } else { ?>
<option value="<?php echo $row['id'].'-'.$row['costo']; ?>">
<?php echo gdrcd_filter('out', $row['luogo'].', '.$row['nome']
).' ('.$row['costo'].' '.strtolower($PARAMETERS['names']['currency']['plur']
).' '.$MESSAGE['interface']['hotel']['per_hour'].') '; ?>
</option>
<?php } ?>
<?php }//while
gdrcd_query($result, 'free');
?>
</select>
<select name="ore">
<?php
for($i = 1; $i <= 12; $i++) { ?>
<option value="<?php echo $i; ?>">
<?php echo $i.' '.gdrcd_filter('out', $MESSAGE['interface']['hotel']['hours']); ?>
</option>
<?php }//while
?>
</select>
</div>
<div class="form_submit">
<input type="hidden" name="op" value="book" />
<input type="submit" name="submit" value="<?php echo gdrcd_filter('out', $MESSAGE['interface']['forms']['submit']); ?>" />
</div>
</form>
<?php }//else
?>
</div>
<?php
}
Pagine → 1
10/03/2022 23:22:53 e modificato da haruka il 10/03/2022 23:27:12
Ciao, avevo fixato questa cosa perché avevo notato lo stesso problema.
E' passato del tempo. Prova a vedere se risolvi con questo codice:
<option value="<?php echo $row['id'].'-'.$row['costo']; ?>">
<?php echo gdrcd_filter('out', $row['luogo'].', '.$row['nome'] ).' ('.$row['costo'].' '.strtolower($PARAMETERS['names']['currency']['plur'] ).' '.$MESSAGE['interface']['hotel']['per_hour'].') '; ?>
</option>
da mettere al posto di:
<option value="" disabled>
<?php echo gdrcd_filter('out', $row['luogo'].', '.$row['nome']
).' ('.$row['proprietario'].', '.gdrcd_format_time($row['scadenza']).') '; ?>
</option>
11/03/2022 15:49:34 e modificato da werekoala il 11/03/2022 18:30:09
haruka ha scritto: Ciao, avevo fixato questa cosa perché avevo notato lo stesso problema.
E' passato del tempo. Prova a vedere se risolvi con questo codice:
<option value="<?php echo $row['id'].'-'.$row['costo']; ?>">
<?php echo gdrcd_filter('out', $row['luogo'].', '.$row['nome'] ).' ('.$row['costo'].' '.strtolower($PARAMETERS['names']['currency']['plur'] ).' '.$MESSAGE['interface']['hotel']['per_hour'].') '; ?>
</option>
da mettere al posto di:
<option value="" disabled>
<?php echo gdrcd_filter('out', $row['luogo'].', '.$row['nome']
).' ('.$row['proprietario'].', '.gdrcd_format_time($row['scadenza']).') '; ?>
</option>
Purtroppo non funziona. I soldi vengono scalati, ma la stanza rimane chiusa.
Ho risolto con la forza bruta: siccome non sono una grande programmatrice, ho notato che creando una stanza pubblica e rendendola privata dal database, la prenotazione funziona. Non so come mai...
08/05/2022 12:59:56
Abbiamo ricevuto diverse segnalazioni in merito alle varie anomalie presenti nella funzione di prenotazione stanze private, abbastanza da suggerirci una revisione di questa sezione.
Tra le tante correzioni apportate, una ha coinvolto anche il meccanismo di prenotazione delle stanze e il suo salvataggio sul database, in modo da assicurare effettivamente l'avvenuto passaggio di possesso.
Lascio qui i commit coinvolti nella revisione, parte della versione GDRCD 5.6.0.3 in rilascio, e ordinati in senso cronologico (dal più vecchio al più recente):
1 - https://github.com/GDRCD/GDRCD/commit/096808ef80251a00a852237cdfbf252cf8ffe11c ↗
2 - https://github.com/GDRCD/GDRCD/commit/7f7d08c1111de9d9d871eea96c754b796a8d982c ↗
3 - https://github.com/GDRCD/GDRCD/commit/21f242373c085a1b430e65a2f6c50a1072ad502d ↗
Puoi provare ad integrare queste correzioni e verificare se ti presenta ancora l'errore?
Kasa.
26/05/2022 20:23:00
Ho integrato le correzioni e se le chat hanno un costo superiore a 0, a me funziona tutto correttamente.
Ho però riscontrato il problema descritto nel primo post quando il costo della chat è 0: la chat risulta prenotata ma in realtà rimane prenotabile e non è possibile accedere (il campo "costo" nel db è decimal, non INT, non so se potrebbe essere dovuto a questo).
Ci sarebbe il modo di risolverlo?
26/05/2022 21:40:01 e modificato da kasa il 26/05/2022 22:48:32
backwaters ha scritto: Ho integrato le correzioni e se le chat hanno un costo superiore a 0, a me funziona tutto correttamente.
Ho però riscontrato il problema descritto nel primo post quando il costo della chat è 0: la chat risulta prenotata ma in realtà rimane prenotabile e non è possibile accedere (il campo "costo" nel db è decimal, non INT, non so se potrebbe essere dovuto a questo).
Ci sarebbe il modo di risolverlo?
È sufficiente cambiare le condizioni che gestiscono la variabile di controllo che rende la stanza prenotabile da così:
if(
$checkRoom['privata'] == 1
&& $checkRoom['costo'] > 0
&& $checkRoom['scadenza'] <= strftime('%Y-%m-%d %H:%M:%S')
) {
$bookableRoom = true;
} else {
$bookableRoom = false;
}
a così:
[code]
if(
$checkRoom['privata'] == 1
&& $checkRoom['costo'] >= 0
&& $checkRoom['scadenza'] <= strftime('%Y-%m-%d %H:%M:%S')
) {
$bookableRoom = true;
} else {
$bookableRoom = false;
}
Mettendo come operatore di confronto >= tieni in considerazione i costi pari o superiori a 0 per la prenotazione della stanza.
Kasa.
[/code]
27/05/2022 20:38:59
Ho installato la nuova versione di GDRCD ed ora le stanze private funzionano benissimo! 😃
27/05/2022 21:36:54
Ah, era una cosa semplicissima
Grazie mille, ora funziona perfettamente
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Cafuné ↗
Fallen Gods ↗
New Orleans ↗
War Thunder ↗
Imperion ↗
World of the Sea Battle ↗
Raja Dunia ↗