Buonasera,
ho un problema che per voi sarà banale ma io non ne vengo a capo.
Sto creando un programma in PHP dove vado ad inserire in un form i nomi delle persone con annesso orario da: a: e, tramite una spunta, se sono disponibili a lavorare il lunedì.
Il primo passo inserisco i valori nel DB, i campi sono 'id', 'nome', 'orario_da', 'orario_a', 'lunedi'
Fin qui nessun problema, ho impostato nella pagina di inserimento utente (create.php) i campi nome <input type="text"> ed orario come <input type="time"> e nel DB sono campi varchar(30) mentre il campo lunedi l'ho impostato come <input type="checkbox"> e nel DB varchar(11) così che nella pagina di inserimento utente mi compare il campo lunedì con la possibilità di fare il ceck o meno.
Il problema nasce nella pagina dell'index dove vedo tutto il DB e dove il campo lunedi, che è impostato nel DB come varchar(11), mi restituisce 'on' se la spunta è attiva, io vorrei che apparisse ancora come checkbox.... poi l'inserimento è possibile solo se il flag è attivo.
ma la cosa più grave è che nel momento in cui vado a richiamare per modificare l'utente (es: il lunedì non è più disponibile) il campo mi appare già non selezionato e se clicco sul tasto per aggiornare non mi modifica il campo, non restituisce errore ma non modifica il campo me lo restituisce sempre attivo!!!
Allego il codice della mia pagina principale:
<?php
require 'db.php';
$sql = 'SELECT * FROM people';
$statement = $connection->prepare($sql);
$statement->execute();
$people = $statement->fetchAll(PDO::FETCH_OBJ);
?>
<?php require 'header.php'; ?>
<div class="container">
<div class="card mt-5">
<div class="card-header">
<h2>Disponibili:</h2>
</div>
<div class="card-body">
<table class="table table-bordered">
<tr>
<th>ID</th>
<th>Name</th>
<th>Orario da</th>
<th>Orario a</th>
<th>Lunedi</th>
<th>Modifica</th>
</tr>
<?php foreach($people as $person): ?>
<tr>
<td><?= $person->id; ?></td>
<td><?= $person->name; ?></td>
<td><?= $person->orario_da; ?></td>
<td><?= $person->orario_a; ?></td>
<td><?= $person->lunedi; ?></td>
<td>
<a href="edit.php?id=<?= $person->id ?>" class="btn btn-info">Edit</a>
</td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
</div>
e anche quello della pagina che mi permette la modifica
<?php
require 'db.php';
$id = $_GET['id'];
$sql = 'SELECT * FROM people WHERE id=:id';
$statement = $connection->prepare($sql);
$statement->execute([':id' => $id ]);
$person = $statement->fetch(PDO::FETCH_OBJ);
if (isset ($_POST['name']) && isset($_POST['orario_da']) && isset($_POST['orario_a']) && isset($_POST['lunedi'])) {
$name = $_POST['name'];
$orario_da = $_POST['orario_da'];
$orario_a = $_POST['orario_a'];
$lunedi = $_POST['lunedi'];
$sql = 'UPDATE people SET name=:name, orario_da=:orario_da, orario_a=:orario_a, lunedi=:lunedi WHERE id=:id';
$statement = $connection->prepare($sql);
if ($statement->execute([':name' => $name, ':orario_da' => $orario_da, ':orario_a' => $orario_a, ':lunedi' => $lunedi, ':id' => $id])) {
header("Location: /");
}
}
?>
<?php require 'header.php'; ?>
<div class="container">
<div class="card mt-5">
<div class="card-header">
<h2>Aggiorna utente</h2>
</div>
<div class="card-body">
<?php if(!empty($message)): ?>
<div class="alert alert-success">
<?= $message; ?>
</div>
<?php endif; ?>
<form method="post">
<div class="form-group">
<label for="name">Name</label>
<input value="<?= $person->name; ?>" type="text" name="name" id="name" class="form-control">
</div>
<div class="form-group">
<label for="orario_da">orario_da</label>
<input type="time" value="<?= $person->orario_da; ?>" name="orario_da" id="orario_da" class="form-control">
</div>
<div class="form-group">
<label for="orario_a">orario_a</label>
<input type="time" value="<?= $person->orario_a; ?>" name="orario_a" id="orario_a" class="form-control">
</div>
<div class="form-group">
<label for="lunedi">lunedi</label>
<input type="checkbox" value="<?= $person->lunedi; ?>" name="lunedi" id="lunedi" class="form-control">
</div>
<div class="form-group">
<button type="submit" class="btn btn-info">Aggiorna</button>
</div>
</form>
</div>
</div>
</div>
Spero mi possiate aiutare con questo problema...
Grazie anticipatamente.