popolare una select da input

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
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.

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
 

Discussioni simili