Salve a tutti,
Ho il seguente problema. Dovrei popolare una select su una stessa tabella chiamata "utenti" quindi non debbo creare altre tabelle. In pratica l'utente quando si registra inizialmente va a compilare la nazionalità (è un campo esistente nel mio form) poi se la nazionalità è già presente nel db comparirà automaticamente una select da cui la selezionerà da lì altrimenti la dovrà inserire a mano. Questo è una prova che ho fatto e modificata (debbo ringraziare borgo che all'epoca mi fece una cosa simile per un'altro programma). Ma ovviamente funziona su una seconda tabella.
Così com'è strutturato lui inserirsce la nazionalità ma su una riga a parte invece deve stare sulla stessa riga dell'utente. Mi potreste autare a risolvere questo problemino ??? Grazie
Ho il seguente problema. Dovrei popolare una select su una stessa tabella chiamata "utenti" quindi non debbo creare altre tabelle. In pratica l'utente quando si registra inizialmente va a compilare la nazionalità (è un campo esistente nel mio form) poi se la nazionalità è già presente nel db comparirà automaticamente una select da cui la selezionerà da lì altrimenti la dovrà inserire a mano. Questo è una prova che ho fatto e modificata (debbo ringraziare borgo che all'epoca mi fece una cosa simile per un'altro programma). Ma ovviamente funziona su una seconda tabella.
PHP:
<!--Inizio e input con selettore nazionalità-->
<?php if (!empty($nazionalita)): ?>
<select name="nazionalita">
<option value="">-seleziona-</option>
<?php foreach ($nazionalita as $entry): ?>
<option value="<?= $entry ?>"><?= $entry ?></option>
<?php endforeach; ?>
</select>
<?php endif; ?>
<p>
Nuova nazionalità da inserire: <input type='text' name='nuovanazionalita'>
</p>
<?php
require_once("connettimysqli.php");
// Legge tutte le nazionalità dalla base di dati, memorizzandole in un vettore
$nazionalita = array();
$query = "SELECT nazionalita FROM utenti ORDER BY nazionalita";
$result = mysqli_query($con, $query);
if ($result === false) {
echo "SELECT failed: " . mysqli_error($con);
}
while ($row = mysqli_fetch_assoc($result)) {
$nazionalita[] = $row['nazionalita'];
}
mysqli_free_result($result);
// Aggiunge una nuova nazionalità alla base di dati, se non è già presente
if (isset($_POST['nuovanazionalita'])) {
$nuovanazionalita = mysqli_real_escape_string($con, trim($_POST['nuovanazionalita']));
// Procede con l'inserimento solo se la nuova nazionalità non è vuota e non è già presente
if (!empty($nuovanazionalita) && !in_array($nuovanazionalita, $nazionalita)) {
$stmt = mysqli_prepare($con, "INSERT INTO utenti(nazionalita) VALUES(?)");
mysqli_stmt_bind_param($stmt, "s", $nuovanazionalita);
mysqli_stmt_execute($stmt);
$nazionalita[] = $nuovanazionalita;
sort($nazionalita);
}
}
?>
Così com'è strutturato lui inserirsce la nazionalità ma su una riga a parte invece deve stare sulla stessa riga dell'utente. Mi potreste autare a risolvere questo problemino ??? Grazie