select da riempire tramite text

paperinik4

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

Mi rivolgo a Borgo, perchè all'epoca mi aiutò kui a risolvere un piccolo problema: il problema è il seguente. Vorrei fare in modo che quando vado a compilare il profilo ad esempio il campo"occupazione", siccome sono infinite le occupazioni, ci dovrebbe essere un campo di tipo text quindi input, se nella select (menu a discesa) c'è l'occupazione, dovrebbe comparire un messaggio "è presente nella select", altrimenti l'aggiunge. posto il codice che mi avevi fatto te borgo:

PHP:
//Occupazione inserimento a manina e integrazione automatica della lista
 

 $q=mysql_query("SELECT occupazione FROM utenti");
$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 "Occupaziome: <select name=\"occupazione\">";
		echo "<option value=\"\">-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=".$riga['occupazione']."\">".$riga['occupazione']."</option>";
	}//fine while
echo "</select> ";
}//fine if vuota
?>
Occupazione da inserire: <input type='text' name='occupazione'>

La select dovrebbe comparire in unsecondo tempo, ossia quando compilo con la text, invece, compare subito. Si può sistemare per favore ???? In modo tale che quando è vuota, non coimpare e poi al primo inserimento dell'occupazione compare ???? Grazie. E buona domenica a tutti.
 
Ciao

Ciao Borgo,

Ho un piccolo problema. Mi rivolgo a te perchè il codice me l'avevi dato te. Dunque il problema è il seguente. Ho un campo formato text che si chiama occupazione. Siccome come campo è abbastanz avasto e ci sono impieghi di tutti i generi, avevo pensato mano a mano che le persone si iscrivevano e poi aggiornavano il loro profilo, di riempire la lista a discessa (per intederci). Quindi tu inserisci un 'impiegho e automaticamente viene compilata nella lista. Fino a qua sembrerebbe nessuno problema. Il problema sorge, quando devo selezionare l'occupazione dalla lista (che magari c'è già), e non mi fa l'aggiornamento. In pratica, l'aggiornamento me lo fa solo nel campo di input. Questo era la tua vecchia idea:

presa dal file rivistapapà4.php (ricordi ????)
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'>

In pratica c'è una tabella categoria e una tabella componenti e funziona magnificamente perkè l'ho riprovato. Però a me serve con un unica tabella che è sempre quella utenti. Come si potrebbe fare ??? Spero in una tua mano. Grazie.e
 
cioa
non ho capito bene: nella tabella utenti hai il campo "occupazione"?
se si basta che tu modifici
PHP:
<?php
$q=mysql_query("SELECT occupazione FROM utenti ORDER BY occupazione");
$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=\"occupazione\">";
        echo "<option value=\"\">-seleziona-</option>";
    while($riga=mysql_fetch_array($q)){
        echo "<option value=\"".$riga['occupazione']."\">".$riga['occupazione']."</option>";
    }//fine while
echo "</select> ";
}//fine if vuota
?>
    Nuova occupazione da inserire: <input type='text' name='nuovaoccupazione'>

poi per l'inserimento devi verificare che
1. entrambi non siano vuoti
2. se è vuoto il post dalla select devi inserire il valore che proviene dall'input nuovaoccupazione
2a. in questo caso verificare che l'occupazione comunque non esista di già ed è stato un errore dell'utente
3. se è vuoto il post nuovaoccupazione devi inserire il valore proveniente dalla select
4. se sono entrambi pieni prendi comunque il valore dalla select
 
Ciao

Si, ho il campo occupazione, cheandrà a finere per essere compilato non in fase di inserimento dati ma di aggiornamento profilo. Il problema è che quando vado a prendere un'occupazione nella select inserita da text, non mi aggiorna tale occupazione selezionata. Curiosità, del codice che ti ho dato hai modificato qualcosa ???? E un'alta cosa, come faccio la verifica inserendo dal text che non ci sia anche nella select ??? Poi mi sono dimenticato che c'è il file aggiornaprofilo.php, strutturato in questa maniera:

aggiornaprofilo.php

PHP:
$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$citta = mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
$provincia = mysql_real_escape_string(strtolower(trim ($_POST['provincia'])));
$anno_diploma =  mysql_real_escape_string(strtolower(trim ($_POST['anno_diploma'])));
$occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));


$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma',
    occupazione='$occupazione'
    
    WHERE id = '".$_SESSION['id']."'";  
 
 echo $qry;

Con l'aiuto di Alessandro alla fine sono riuscito a farlo funzionare. Questa è solo la parte riguardante l'aggiornamento.
 
Ultima modifica:
Ciao

I campi in fase di aggiornamentoprofilo, non sono nessuno obbligatori. Gli obbligatori sono i seguenti:

1) Nome,
2) Cognome,
3) Username,
4) Email,
5) Password

QUesti sono i campi obbligatori, e al momento non modificabili. Il resto a propria discrezione.
 
Ciao

I campi in fase di aggiornamentoprofilo, non sono nessuno obbligatori. Gli obbligatori sono i seguenti:

1) Nome,
2) Cognome,
3) Username,
4) Email,
5) Password

QUesti sono i campi obbligatori, e al momento non modificabili. Il resto a propria discrezione.

Io vado a cena, ci sentiamo dopo trabite tablet. Al limite domani. per adesso ti ringrazio e spero di trovare una soluzione insieme a te.
 
ciao
puoi provare così
PHP:
<?php
//......
$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$citta = mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
$provincia = mysql_real_escape_string(strtolower(trim ($_POST['provincia'])));
$anno_diploma =  mysql_real_escape_string(strtolower(trim ($_POST['anno_diploma'])));
if($_POST['occupazione']=="" && $_POST['nuovaoccupazione']==""){//l'utente non ha selezionato ne scritto
	$occupazione = "";//non essendo un campo obbligatorio puoi metterlo a vuoto
	//se fosse obbligatorio devi dare il messaggio di errore e tornare al form
}elseif($_POST['occupazione']!="" && $_POST['nuovaoccupazione']==""){
	//l'utente ha selezionato dalla select un'occupazione e non ha scritto
	$occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));
}elseif($_POST['occupazione']=="" && $_POST['nuovaoccupazione']!=""){
	$occupazione = mysql_real_escape_string(strtolower(trim ($_POST['nuovaoccupazione'])));
	//l'utente ha scritto una nuova occupazione quindi prima di inserirla devi verificare se per caso non esiste
	$q=mysql_query("SELECT occupazione FROM utenti WHERE occupazione='$occupazione'");
	if(mysql_num_rows($q) > 1){// a scritto una esistente
		$riga=mysql_fetch_array($q);
		$occupazione=$riga['occupazione'];
	}
}else{
	//l'utente ha selezionato e anche scritto, scegli il valore della select
	$occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));
}
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma',
    occupazione='$occupazione'
    WHERE id = '".$_SESSION['id']."'";
//......
?>
 
Ciao

Ciao Borgo,

Questo deve andare ovviamente tutto su aggiornaprofilo giusto ????


Ciao Borgo,

Nel tuo codice che mi ha postato, mancano le select ossia i menu di selezione. Difati se vado a farlo girare, mi da pagina bianca con du ebottini. Uno "aggiorna Profilo e l'altro Logout". Ho fatto così, ancora da testare:

PHP:
//Occupazione

$q=mysql_query("SELECT descrizione FROM utenti ORDER BY occupazione");
$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 "Occupazione: <select name=\"occupazione\">";
		echo "<option value=\>-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=\"".$riga['occupazione']."\">".$riga['occupazione']."</option>";
	}//fine while
echo "</select> ";
}//fine if vuota


echo "Nuova categoria da inserire: <input type='text' name='nuovacategoria'>";

if($_POST['occupazione']=="" && $_POST['nuovaoccupazione']==""){//l'utente non ha selezionato ne scritto
    $occupazione = "";//non essendo un campo obbligatorio puoi metterlo a vuoto
    //se fosse obbligatorio devi dare il messaggio di errore e tornare al form
}elseif($_POST['occupazione']!="" && $_POST['nuovaoccupazione']==""){
    //l'utente ha selezionato dalla select un'occupazione e non ha scritto
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));
}elseif($_POST['occupazione']=="" && $_POST['nuovaoccupazione']!=""){
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['nuovaoccupazione'])));
    //l'utente ha scritto una nuova occupazione quindi prima di inserirla devi verificare se per caso non esiste
    $q=mysql_query("SELECT occupazione FROM utenti WHERE occupazione='$occupazione'");
    if(mysql_num_rows($q) > 1){// a scritto una esistente
        $riga=mysql_fetch_array($q);
        $occupazione=$riga['occupazione'];
    }
}else{
    //l'utente ha selezionato e anche scritto, scegli il valore della select
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));
} 
?>             
<center> <br><br>

                <font face="Comic Sans MS">

<input type="submit"  value="Aggiorna Profilo" />
<input type="button" onClick="window.location.href='logout.php';" value="Logout" />
</center> </form>

aggiornaprofilo.php

PHP:
<?php
session_start();
require_once("connetti.php"); 

echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'; 

echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 
 

$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$citta = mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
$provincia = mysql_real_escape_string(strtolower(trim ($_POST['provincia'])));
$anno_diploma =  mysql_real_escape_string(strtolower(trim ($_POST['anno_diploma'])));
$occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));


        $qry = "UPDATE utenti SET 
            datadinascita='$datadinascita', 
            citta='$citta', 
            provincia='$provincia', 
            anno_diploma='$anno_diploma',
            occupazione='$occupazione'
            WHERE id = '".$_SESSION['id']."'";
  
 echo $qry;

if (mysql_query($qry)){ 
    echo "... Aggiornamento effettuato correttamente...."; 
     
} else { 
    echo " Errore: Non è stato possibile effettuare l'aggiornamento richiesto"; 

 
}   
?>


Pensi che potrebbe funzionare ?????
 
Ultima modifica:
Ciao

L'ho provato come te l'ho postato. Suddiviso e ho aggiunto la select che mancava. Ma non va. Se vuoi ti riposto tutto il codice. inoltre, mi da il seguente errore:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /volume1/web/utenti/provaaggiornaprofilo/index.php on line 41 Nuova categoria da inserire:

E a fianco mi compare il campo text da compilare. Una volta ch elo compilo mi dice aggiornamento effettuato correttamente, vado a vedere e il campo "occupazione" risulta vuoto. :(
 
Ciao

Ho fatto alcune prove ma non so se sono delle stronzate o meno. Ma sembra così di accettarmi solo il campo input e la lista non compare :(

index.php

PHP:
<?php
ob_start();//visto che usi header popo l'l'uotput html
session_start();//aggiungi questa e
require_once("connetti.php");
require_once("arraylistecitta.php");
?>

         <form action= 'aggiornaprofilo.php' method="POST">

<?php

if(isset($_SESSION['nome'])) {
$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

$array =  strtoupper($_SESSION['nome'] );
if(isset($_SESSION['nome']))  {   
  
   
echo "<div class=\"messaggio\"><h1>";

   //echo "<br> <br>";
    echo $id." ".$nome;
    
echo "<h1> <center> BENVENUTO ".$array."<br /></h1> </center> ";
    
echo "</h1></div>";
    echo "</body></html>";
}else{   
echo "<h1> <center>";
echo "Che minkia fai se non ti logghi o non ti registri, non puoi fare un kazzo. Ah cicio, non c'è provà e vedi da sparì...";
    header("Refresh: 4;URL=login.php");    
exit();
}

}
echo "</select>" ;

//Occupazione



if($_POST['occupazione']=="" && $_POST['nuovaoccupazione']==""){//l'utente non ha selezionato ne scritto
    $occupazione = "";//non essendo un campo obbligatorio puoi metterlo a vuoto
    //se fosse obbligatorio devi dare il messaggio di errore e tornare al form
     
echo "Nuova categoria da inserire: <input type='text' name='nuovaoccupazione'>";

}elseif($_POST['occupazione']!="" && $_POST['nuovaoccupazione']==""){
    //l'utente ha selezionato dalla select un'occupazione e non ha scritto
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));

    $q=mysql_query("SELECT descrizione FROM utenti ORDER BY occupazione");
$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 "Occupazione: <select name=\"occupazione\">";
		echo "<option value=\>-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=\"".$riga['occupazione']."\">".$riga['occupazione']."</option>";
	}//fine while
echo "</select> ";

    
}elseif($_POST['occupazione']=="" && $_POST['nuovaoccupazione']!=""){
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['nuovaoccupazione'])));
    //l'utente ha scritto una nuova occupazione quindi prima di inserirla devi verificare se per caso non esiste
    $q=mysql_query("SELECT occupazione FROM utenti WHERE occupazione='$occupazione'");
    if(mysql_num_rows($q) > 1){// a scritto una esistente
        $riga=mysql_fetch_array($q);
        $occupazione=$riga['occupazione'];
    }
}else{
    //l'utente ha selezionato e anche scritto, scegli il valore della select
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));

}
}

?>             
<center> <br><br>

                <font face="Comic Sans MS">

<input type="submit"  value="Aggiorna Profilo" />
<input type="button" onClick="window.location.href='logout.php';" value="Logout" />
</center> </form>

aggiornaprofilo.php

PHP:
<?php
session_start();
require_once("connetti.php"); 

echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'; 

echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 
 

$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$citta = mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
$provincia = mysql_real_escape_string(strtolower(trim ($_POST['provincia'])));
$anno_diploma =  mysql_real_escape_string(strtolower(trim ($_POST['anno_diploma'])));
$occupazione = mysql_real_escape_string(strtolower(trim ($_POST['nuovaoccupazione'])));        //E' na stronzata quella che ho fatto ????


        $qry = "UPDATE utenti SET 
            datadinascita='$datadinascita', 
            citta='$citta', 
            provincia='$provincia', 
            anno_diploma='$anno_diploma',
            occupazione='$occupazione',
            occupazione='$nuovaoccupazione'      //E' na stronzata quella che ho fatto ????
            WHERE id = '".$_SESSION['id']."'";
  
 echo $qry;

if (mysql_query($qry)){ 
    echo "... Aggiornamento effettuato correttamente...."; 
     
} else { 
    echo " Errore: Non è stato possibile effettuare l'aggiornamento richiesto"; 

 
}   
?>

Il risultato stavolta è positivo:

UPDATE utenti SET datadinascita='--', citta='', provincia='', anno_diploma='', occupazione='impiegato', occupazione='impiegato' WHERE id = '2'... Aggiornamento effettuato correttamente....

Solo che appunto non compare la select :(
 
Ciao

Ciao,

Ho fatto altre modifiche ma non va :( Sicuramente sbaglio qualcosa. Eccole le modifiche ultime che ho effettuato:

index.php

PHP:
?php
ob_start();//visto che usi header popo l'l'uotput html
session_start();//aggiungi questa e
require_once("connetti.php");
require_once("arraylistecitta.php");
?>

         <form action= 'aggiornaprofilo.php' method="POST">

<?php

if(isset($_SESSION['nome'])) {
$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

$array =  strtoupper($_SESSION['nome'] );
if(isset($_SESSION['nome']))  {   
  
   
echo "<div class=\"messaggio\"><h1>";

   //echo "<br> <br>";
    echo $id." ".$nome;
    
echo "<h1> <center> BENVENUTO ".$array."<br /></h1> </center> ";
    
echo "</h1></div>";
    echo "</body></html>";
}else{   
echo "<h1> <center>";
echo "Che minkia fai se non ti logghi o non ti registri, non puoi fare un kazzo. Ah cicio, non c'è provà e vedi da sparì...";
    header("Refresh: 4;URL=login.php");    
exit();
}

}
echo "</select>" ;

//Occupazione
if($_POST['occupazione']=="" && $_POST['nuovaoccupazione']==""){//l'utente non ha selezionato ne scritto
  $occupazione = "";//non essendo un campo obbligatorio puoi metterlo a vuoto  
    }elseif($_POST['occupazione']!="" && $_POST['nuovaoccupazione']==""){   
        //l'utente ha selezionato dalla select un'occupazione e non ha scritto
}
$q=mysql_query("SELECT occupazione FROM utenti ORDER BY occupazione");
$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 "Occupazione: <select name=\"occupazione\">";
        echo "<option value=\>-seleziona-</option>";
    while($riga=mysql_fetch_array($q)){
        echo "<option value=\"".$riga['occupazione']."\">".$riga['occupazione']."</option>";
    }//fine while
echo "</select> ";
}elseif($_POST['occupazione']=="" && $_POST['nuovaoccupazione']!=""){
        //l'utente ha scritto una nuova occupazione quindi prima di inserirla devi verificare se per caso non esiste - fine if vuota
echo "Nuova occupazione da inserire: <input type='text' name='nuovaoccupazione'>";
$q=mysql_query("SELECT occupazione FROM utenti WHERE occupazione='$occupazione'");
    if(mysql_num_rows($q) > 1){// a scritto una esistente
        $riga=mysql_fetch_array($q);
        $occupazione=$riga['occupazione'];
    }
}
?>             
<center> <br><br>

                <font face="Comic Sans MS">

<input type="submit"  value="Aggiorna Profilo" />
<input type="button" onClick="window.location.href='logout.php';" value="Logout" />
</center> </form>

aggiornaprofilo.php

PHP:
<?php
session_start();
require_once("connetti.php"); 

echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'; 

echo "<h1> Esecuzione in corso dell'aggiornameto profilo... </h1>"; 
 

$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$citta = mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
$provincia = mysql_real_escape_string(strtolower(trim ($_POST['provincia'])));
$anno_diploma =  mysql_real_escape_string(strtolower(trim ($_POST['anno_diploma'])));
$occupazione = mysql_real_escape_string(strtolower(trim ($_POST['nuovaoccupazione'])));
    
        $qry = "UPDATE utenti SET 
            datadinascita='$datadinascita', 
            citta='$citta', 
            provincia='$provincia', 
            anno_diploma='$anno_diploma',
            occupazione='$occupazione',
            occupazione='$nuovaoccupazione'
            WHERE id = '".$_SESSION['id']."'";
  
 echo $qry;

if (mysql_query($qry)){ 
    echo "... Aggiornamento effettuato correttamente...."; 
     
} else { 
    echo " Errore: Non è stato possibile effettuare l'aggiornamento richiesto"; 

 
}   
?>

Speravo di riuscire a cavarmela da solo ma invece nada. Il srisultato è il seguente, quando a selezionare dalla lista, non mi memorizza l'occupazione selezionata. Ecco il risultato della query:

UPDATE utenti SET datadinascita='--', citta='', provincia='', anno_diploma='', occupazione='', occupazione='' WHERE id = '2'... Aggiornamento effettuato correttamente....

Spero nel tuo genio :P Grazie.
 
Ciao

Ciao,

Ho fatto così come dicevi tu. Ho messo tutto nel file index.php

PHP:
<?php
ob_start();//visto che usi header popo l'l'uotput html
session_start();//aggiungi questa e
require_once("connetti.php");
require_once("arraylistecitta.php");

if (!isset($_POST['aggiorna'])) {

?>

<!--<form action= 'aggiornaprofilo.php' method="POST">-->

<form action= '' method="POST">
<?php

if(isset($_SESSION['nome'])) {
$array = mysql_query("SELECT * FROM utenti WHERE id=".$_SESSION['id']." '");

$array =  strtoupper($_SESSION['nome'] );
if(isset($_SESSION['nome']))  {   
  
   
echo "<div class=\"messaggio\"><h1>";

   //echo "<br> <br>";
    echo $id." ".$nome;
    
echo "<h1> <center> BENVENUTO ".$array."<br /></h1> </center> ";
    
echo "</h1></div>";
    echo "</body></html>";
}else{   
echo "<h1> <center>";
echo "Che minkia fai se non ti logghi o non ti registri, non puoi fare un kazzo. Ah cicio, non c'è provà e vedi da sparì...";
    header("Refresh: 4;URL=login.php");    
exit();
}

}
echo "</select>" ;
//Occupazione

$datadinascita = $anno . "-" . $mese . "-" . $giorno;  
$citta = mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
$provincia = mysql_real_escape_string(strtolower(trim ($_POST['provincia'])));
$anno_diploma =  mysql_real_escape_string(strtolower(trim ($_POST['anno_diploma'])));
if($_POST['occupazione']=="" && $_POST['nuovaoccupazione']==""){//l'utente non ha selezionato ne scritto
    $occupazione = "";//non essendo un campo obbligatorio puoi metterlo a vuoto
    //se fosse obbligatorio devi dare il messaggio di errore e tornare al form
}elseif($_POST['occupazione']!="" && $_POST['nuovaoccupazione']==""){
    //l'utente ha selezionato dalla select un'occupazione e non ha scritto
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));
}elseif($_POST['occupazione']=="" && $_POST['nuovaoccupazione']!=""){
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['nuovaoccupazione'])));
    //l'utente ha scritto una nuova occupazione quindi prima di inserirla devi verificare se per caso non esiste
    $q=mysql_query("SELECT occupazione FROM utenti WHERE occupazione='$occupazione'");
    if(mysql_num_rows($q) > 1){// a scritto una esistente
        $riga=mysql_fetch_array($q);
        $occupazione=$riga['occupazione'];
    }
}else{
    //l'utente ha selezionato e anche scritto, scegli il valore della select
    $occupazione = mysql_real_escape_string(strtolower(trim ($_POST['occupazione'])));
}
$qry = "UPDATE utenti SET 
    datadinascita='$datadinascita', 
    citta='$citta', 
    provincia='$provincia', 
    anno_diploma='$anno_diploma',
    occupazione='$occupazione'
    WHERE id = '".$_SESSION['id']."'"; 

echo qry;
if (mysql_query($qry)){ 
    echo "... Aggiornamento effettuato correttamente...."; 
     
} else { 
    echo " Errore: Non è stato possibile effettuare l'aggiornamento richiesto"; 

 
} 

} 


?>             
<center> <br><br>

                <font face="Comic Sans MS">

<!--<input type="submit"  value="Aggiorna Profilo" />-->
 <input type="submit" name="aggiorna" value="Aggiorna Profilo" />
<input type="button" onClick="window.location.href='logout.php';" value="Logout" />
</center> </form>

Ma non va ugualmente
 
Ciao

Non sono riuscito a farla funzionare nemmeno unendo tutto. Non so il perchè :( Spero che nmi potrai dare un'illuminazione. Fra le altre cose stavo cercando la vecchia conversazione dove era situato questo codice e nemmeno sono riuscito a trovarla :(:crying::crying::crying::crying::crying::crying::crying:
 
Ciao

Ciao Borgo,

Ho riprovato il tuo codice ma mi da pagina bianca con due bei pulsanti "aggiorna profilo" e "logout". Allora te lo riprogongo sperando che mi puoi dare una mano a risolvere gli incastri:

Questo è il tuo codice originario:

PHP:
//Occupazione


$q=mysql_query("SELECT occupazione FROM utenti ORDER BY occupazione");

if($_POST['occupazione']=="" && $_POST['nuovaoccupazione']==""){ //l'utente non ha selezionato ne scritto

    $occupazione = "";//non essendo un campo obbligatorio puoi metterlo a vuoto
}elseif($_POST['occupazione']!="" && $_POST['nuovaoccupazione']==""){
    }elseif($_POST['occupazione']=="" && $_POST['nuovaoccupazione']!=""){
         $q=mysql_query("SELECT occupazione FROM utenti WHERE occupazione='$occupazione'");
    if(mysql_num_rows($q) > 1){// a scritto una esistente
        $riga=mysql_fetch_array($q);
        $occupazione=$riga['occupazione'];
    }
}else{
}
?>

Questo era il codice preso da rivista4 tanto tempo fa.

PHP:
<?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' />

A me in praticcami mancano se non erro tre cose fondamentali che sono le seguenti:

PHP:
1) echo "Occupazione: <select name=\"occupazione\">";

2) Nuova occupazione da inserire: <input type='text' name='nuovaoccupazione' />

3) E infine, l'aggiornamento sia dalla tabella che dall'input

Come fare ??? Inoltre all'inizio la select non si dovrebbe vedere perchè è vuota. Dovrebbe comparire alla successva connessione con un'altro accounto o con lo stesso. Come funziona regolarmente su rivista4 che mi avevi proposto te. Perchèè qua avendo una tabella unica non fa la stessa cosa ??? Non riesco proprio a capire. Grazie. Lo so di essere un bel rompi scatole e che chiedo aiuto a destra e a manca. Ma senza di voi non saprei nemmeno scrivere "ciao" in php e html. Con voi vi sembrerà strano ma qualcosa ho imparatao anche se dovrei memorizzare meglio alcuni fasi.
 
Ciao

Chiedo scusa a tutto il forum e sopratutto a Borgo,

perdonami borgo, non avevo capito na sega di quello che mi avevi dato. oggi con più attenzione e con qualche illuminazione in più dall'alto, sono riuscito a far funzionare il tuo codice. Come si dice, meglio tardi che mai. E alla fine è andata.S ei stato un grande. Ti chiedo umilmente pietà, perdono in ginocchio sui ceci a dorso nudo (evitiamo sennò ci rimango secco). Alla fine era più semplice di bere un bicchier d'acqua. Grazie ancora del tuo preziosissimo aiuto anche se ho trovato difficoltà io. ma per mea culpa, mea grandissima culpa. Ti chiedo veramente infinitisimamente scusa. Questo post si può chiudere. graziue a tutti di avermi sopportato.
 
Ciao - Aspettate prima di chiudere la discussione, grazie

Ciao,

Scusa, ti devo chiedere una codsa che non ho capito. Perchè la select è presente quando il db è vuoto e contiene solo i nomi e le password degli utenti ??? Ti mando un'immagine per capire cosa intendo. Il codice è questo:

PHP:
//Occupazione

$q=mysql_query("SELECT occupazione FROM utenti ORDER BY occupazione");
$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 "Occupazione: <select name=\"occupazione\">";
		echo "<option value=\"\">-seleziona-</option>";
	while($riga=mysql_fetch_array($q)){
		echo "<option value=\"".$riga['occupazione']."\">".$riga['occupazione']."</option>";
	}//fine while
echo "</select>";
}//fine if vuota
?>
	Nuova occupazione da inserire: <input type='text' name='nuovaoccupazione' />

Con questa stringa non la dovrebbe far vedere giusto ????:

PHP:
if($vuota > 0){//fa vedere la select solo se ci sono componenti e mostra solo il'input nuovocomponente, in pratica solo la prima volta
 

Discussioni simili