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