Popolare una tabella da utenti: nazione, città, provincia

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Mi riferisco sopratutto a borgo italia che all'epoca mi aiuto a risolvere un problema. Ossia il problema era che avevo la necessità di riempire un db con componenti e categorie di cui non sapevo assolutamente niente. Quindi non potevo prevedere cosa andasse ad inserire l'utente. In pratica era riuscito tramite un input "nuovo componente" a farlo inserire a mano e se successivamente si reinseriva lo stesso componente, invece di inserirlo due volte nella lista veniva selezionato direttamente dalla lista che si era creato con il primo componente inserito. Ora vorrei fare la stessa cosa quando un utente si registra e farli digitare la prima nazione, città o provincia. Inizialmente il db è vuoto. Quindi compare il campo "Nuova Nazione", una volta inserito ad esempio "Italia", se un altro utente si registra ed è di nazionalità italiana, dovrebbe comparire la select e farglielo inserire dalla select e non dall'input. Questo è il vecchio progetto propostomi da borgo italia che funziona egregiamente:

rivista.php

PHP:
<?php
$q=mysql_query("SELECT descrizione FROM tblcategoria ORDER BY descrizione");
$vuota=mysql_num_rows($q);
if($vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
	echo "Categoria: <select name=\"categoria\">";
		echo "<option value=\"\">-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=\"".$riga['descrizione']."\">".$riga['descrizione']."</option>";
	}//fine while
echo "</select> ";
}//fine if vuota

?>
	Nuova categoria da inserire: <input type='text' name='nuovacategoria'>
<?php
$q=mysql_query("SELECT descrizione FROM tblcomponenti ORDER BY descrizione");
$vuota=mysql_num_rows($q);
if($vuota > 0){//fa vedere la select solo se ci sono componenti e mostra solo il'input nuovocomponente, in pratica solo la prima volta
	echo "Componente: <select name=\"componente\">";
		echo "<option value=\"\">-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=\"".$riga['descrizione']."\">".$riga['descrizione']."</option>";
	}//fine while
echo "</select>";
}//fine if vuota
?>
	Nuovo componente da inserire: <input type='text' name='nuovocomponente' />
	Immagine 1:<input name='immagine1'  type='file'  /> <br> <br>
	Immagine 2:<input name='immagine2'  type='file'  /> <br> <br>
        Immagine 3:<input name='immagine3'  type='file'  /> <br> <br>
	Immagine 4:<input name='immagine4'  type='file'/> <br> <br>
	Immagine 5:<input name='immagine5'  type='file'  /> <br> <br>
	<a href="../../admin.php">torna</a>
	<input name='submit' type='submit' value='Salva' />
</table>
</form>
<?php
}else{
    $rivista = mysql_real_escape_string(strtolower(trim ($_POST['rivista'])));
	$anno =mysql_real_escape_string(strtolower(trim ($_POST['anno'])));
	$numero =mysql_real_escape_string(strtolower(trim ($_POST['numero'])));
	$pagina =mysql_real_escape_string(strtolower(trim ($_POST['pagina'])));
	$titolo = mysql_real_escape_string(strtolower(trim ($_POST['titolo'])));
	$fbcategoria =mysql_real_escape_string(strtolower(trim ($_POST['categoria'])));
	$fbcategoria_nuova = mysql_real_escape_string(strtolower(trim ($_POST['nuovacategoria'])));
	$componenti = mysql_real_escape_string(strtolower(trim ($_POST['componente'])));
	$componenti_nuovo = mysql_real_escape_string(strtolower(trim ($_POST['nuovocomponente'])));

        //CREO LE VARIABILI PER I FILE FILES['nomecampo']['tipo']

        $img1=$_FILES['immagine1']['name'];
	$tmp1=$_FILES['immagine1']['tmp_name'];
	$tipo1=$_FILES['immagine1']['type'];
	$img2=$_FILES['immagine2']['name'];
	$tmp2=$_FILES['immagine2']['tmp_name'];
	$tipo2=$_FILES['immagine2']['type'];
	$img3=$_FILES['immagine3']['name'];
	$tmp3=$_FILES['immagine3']['tmp_name'];
	$tipo3=$_FILES['immagine3']['type'];
	$img4=$_FILES['immagine4']['name'];
	$tmp4=$_FILES['immagine4']['tmp_name'];
	$tipo4=$_FILES['immagine4']['type'];
	$img5=$_FILES['immagine5']['name'];
	$tmp5=$_FILES['immagine5']['tmp_name'];
	$tipo5=$_FILES['immagine5']['type'];
	//inizio tutti i controlli, secondo me minimi indispensabili
	$errore="";
	if($rivista ==""){$errore .= "non hai inserito il titolo della rivista<br>";}
	if($anno==""){$errore .= "non hai inserito l'anno della rivista<br>";}
	if($numero==""){$errore .= "non hai inserito il numero della rivista<br>";}
	if($pagina==""){$errore .= "non hai inserito il numero della pagina<br>";}
	if($titolo==""){$errore .= "non hai inserito il titolo<br>";}
	if($fbcategoria=="" && $fbcategoria_nuova==""){$errore .= "non hai inserito la categoria<br>";}//uno dei due deve essere pieno
	if($componenti=="" && $componenti_nuovo==""){$errore .= "non hai inserito il componente<br>";}//uno dei due deve essere pieno
	$ammesse=array("image/gif","image/jpeg","image/pjpeg","image/png");
	if(!in_array($tipo1,$ammesse) || !in_array($tipo2,$ammesse) || !in_array($tipo3,$ammesse) || !in_array($tipo4,$ammesse) || !in_array($tipo5,$ammesse)){
            $errore .= "uno dei file non è un'immagine<br>";
	}
	//verifica inserimento nuova categoria o nuovo componente
	//categoria
	if($fbcategoria=="" && $fbcategoria_nuova !=""){//sto cercasndo di inserire una nuova categoria
		$q_cat=mysql_query("SELECT descrizione FROM tblcategoria WHERE descrizione='$fbcategoria_nuova'");
		$esiste=mysql_num_rows($q_cat);
		if($esiste==0){//non esiste quindi l'aggiungo
			$q_i=mysql_query("INSERT INTO tblcategoria(descrizione) VALUES('$fbcategoria_nuova')");
			$fbcategoria=$fbcategoria_nuova;//questo � il valore che andro ad inesrire nella tabella tblrivista
         }else{//se esiste  vuol dire che hai messo nel campo un valore che era nella selecct del form quindi
			$fbcategoria=$fbcategoria_nuova;//questo � il valore che andro ad inesrire nella tabella tblrivista
		}
	}
	//componente
	if($componenti=="" && $componenti_nuovo !=""){//sto cercasndo di inserire una nuova categoria
		$q_com=mysql_query("SELECT descrizione FROM tblcomponenti WHERE descrizione='$componenti_nuovo'");
		$esiste=mysql_num_rows($q_com);
		if($esiste==0){//non esiste quindi l'aggiungo
			$q_i=mysql_query("INSERT INTO tblcomponenti(descrizione) VALUES('$componenti_nuovo')");
			$componenti=$componenti_nuovo;//questo � il valore che andro ad inesrire nella tabella tblrivista
         }else{//se esiste  vuol dire che hai messo nel campo un valore che era nella selecct del form quindi
			$componenti=$componenti_nuovo;//questo � il valore che andro ad inesrire nella tabella tblrivista
		}
	}
	// a queto punti hai fatto i controlli indispensabili
	if($errore != ""){//c'� almeno un errore
		echo "<h1>$errore</h1>";//visualizzo il messaggio di errore e torno al form
		echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
		//SPOSTO LE IMAMGINI NELLA LORO CARTELLA
		$dir='foto/';
		$move1=move_uploaded_file($tmp1 , $dir.$img1);
		$move2=move_uploaded_file($tmp2 , $dir.$img2);
		$move3=	move_uploaded_file($tmp3 , $dir.$img3);
		$move4=	move_uploaded_file($tmp4 , $dir.$img4);
		$move5=	move_uploaded_file($tmp5 , $dir.$img5);
		//FACCIO UN COTROLLINO CHE HANNO FUNZIONATO
		if(!$move1 || !$move2 || !$move3 || !$move4 || !$move5){
			echo "<h1>caricamento immagini non riuscito</h1>";//e torno al form
			echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		}
		//l'insert in tblrivista/non la scrivo completa

		$q_i=mysql_query("INSERT INTO utenti(rivista, anno, numero, pagina, titolo, categoria, componenti,immagine1, immagine2, immagine3, immagine4, immagine5)
		 VALUES('$rivista','$anno','$numero','$pagina','$titolo', '$fbcategoria','$componenti','$img1','$img2','$img3','$img4','$img5')");
		echo "<h1>nuovo record inserito</h1>";//e torno al form
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}
}
?>

Questo è quello modificato da me che ho chiamato città.php (a proposito: si possono mettere le lettere accentate nei nomi delle pagine web come nel mio caso città.php o meglio lasciarle senza accento ?????).


città.php

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        
                // require_once("connettimysqli.php");
        if(!isset($_POST['submit'])){

         require_once("connetti.php");

   //Inizio controllo nel db se esiste la nazione categoria --> nazione tblcategoria --> localita -->
        
$q=mysql_query("SELECT descrizione FROM tblcategoria ORDER BY descrizione");
$vuota=mysql_num_rows($q);
if($vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
	echo "Categoria: <select name=\"categoria\">";
		echo "<option value=\"\">-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=\"".$riga['descrizione']."\">".$riga['descrizione']."</option>";
	}//fine while
echo "</select> ";
}//fine if vuota

?>
	Nuova Nazione da inserire: <input type='text' name='nuovanazione'>
<?php
$q=mysql_query("SELECT nazione FROM localita ORDER BY nazione");
$vuota=mysql_num_rows($q);
if($vuota > 0){//fa vedere la select solo se ci sono componenti e mostra solo il'input nuovocomponente, in pratica solo la prima volta
	echo "nazione: <select name=\"nazione\">";
		echo "<option value=\"\">-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=\"".$riga['nazione']."\">".$riga['nazione']."</option>";
	}//fine while
echo "</select>";
}//fine if vuota

//categoria
	if($nazione=="" && $nuovanazione !=""){//sto cercasndo di inserire una nuova categoria
		$q_cat=mysql_query("SELECT nazione FROM localita WHERE nazione='$nuovanazione'");
		$esiste=mysql_num_rows($q_cat);
		if($esiste==0){//non esiste quindi l'aggiungo
			$q_i=mysql_query("INSERT INTO localita(nazione) VALUES('$nuonanazione')");
			$nazione=$nuovanazione;//questo è il valore che andro ad inesrire nella tabella tblrivista
         }else{//se esiste  vuol dire che hai messo nel campo un valore che era nella selecct del form quindi
			$nazione=$nuovanazione;//questo è il valore che andro ad inesrire nella tabella tblrivista
		}
	}
         
         ?>
        
        <div style ="text-align: center; top: 60px;">
             
        <input name='submit' type='submit' value='Salva' />
      
        
        
  <?php
              }
           echo "<h1>nuovo record inserito</h1>";
  ?>
     
    </body>
</html>

Ovviamente ho tolto le parti riguardanti alle immagini perchè non m'interessano in questo caso. Solo che c'è qualcosa che non va. Spero che qualcuno di voi mi possa aiutare. Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
B Cercare il nome più popolare su una tabella PHP 11
M Popolare una tabella con numero righe e colonne prefissate PHP 6
Monital Popolare tabella con risultati di una query PHP 0
J Popolare tabella con risultati di una query PHP 2
felino Excel: popolare una cella con la data di modifica della riga a cui appartiene Windows e Software 3
L [MS Access] come popolare automaticamente i campi di una sottomaschera MS Access 8
P popolare una select da input PHP 0
K query per popolare una select tramite ajaxc php e xml ! Ajax 14
P Popolare un Database da una mappa di google map PHP 7
T popolare database di una directory Database 1
M Popolare una Listview da database MySql PHP 5
I Popolare una select da un'altra PHP 3
X Popolare una select a selezione multipla?!?! PHP 1
D popolare campi tra th alla select PHP 36
D Popolare array PHP 8
elpirata Popolare campi tabella con totali estratti da database PHP 24
F classic asp popolare combo box javascript Presentati al Forum 1
V popolare tabella da mysql PHP 7
S Popolare campi di input con metodo $.getJSON jQuery 6
F (Vendo) Spazio Banner - Guest Post a poco prezzo su Blog popolare Vendere e Acquistare pubblicita' online 0
pup3770 Popolare random Database - per test MySQL 1
M Popolare menu a tendina in EDIT PHP 18
neo996sps [Laravel 5.1 + ajax] Popolare select concatenate Regioni, Province, Comuni PHP 1
W Popolare select da Jquery jQuery 2
D [Java] Popolare jtable da db Mysql con DefaulTableModel Java 1
otto9due Popolare campi tabella excell da maschera access MS Access 0
F Popolare tabella MySQL con i dati di un file .CVS MySQL 1
F popolare tendina con dati tabella PHP 4
L Popolare uitableviewcontroller partendo da uiviewcontroller Sviluppo app per iOS 0
K Popolare select con piu campi in orizzontale PHP 1
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
A funzione per popolare un drop down list Javascript 4
P Popolare tabella da file .sql PHP 0
S [ACCESS]: Database e interfaccia grafica, popolare caselle dinamicamente MS Access 0
P Popolare tabella da file .sql PHP 3
P [Vb.Net] Popolare un List View da database .NET Framework 1
neo996sps [Visual Studio] Popolare datagrid tramite query Visual Basic 0
garrincha Come faccio a far diventare popolare un video su youtube ? Social Media Marketing 3
neo996sps Popolare un array con dati prelevati tramite while PHP 5
L Flash AS3: popolare array di oggetti presenti in libreria Flash 0
S popolare il database CMS (Content Management System) 4
A popolare simpleConnect da php Flash 0
A popolare simpleConnect da php PHP 0
F popolare array in modo esatto Classic ASP 3
B Popolare combo in base ad un'altra combo Classic ASP 13
peppoweb Popolare un Lista a Tendina Dinamicamente PHP 2
P C# Salvare una colonna del DataGridView XML 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
M Leggere in un report il valore di una casella combinata di una maschera Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0

Discussioni simili