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.
1.JPG
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!!!
2.JPG
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.