listbox e query

  • Creatore Discussione Creatore Discussione Lawliet
  • Data di inizio Data di inizio

Lawliet

Nuovo Utente
11 Lug 2013
16
0
0
Salve a tutti:
Io ho già creato un menù a tendina per caricare da database l'elenco di atleti e funziona.

Leggendo in un topic sempre in questo forum ho riutilizzato un pezzo di codice del moderatore alessandro199:
PHP:
<?php 
echo "<form name=\"form1\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">"; 
    echo "Atleti: <select name='Atleti'>";
	while ($temp = mysql_fetch_assoc($query)) {
    	echo "<option value='".$temp['codice']."'>".$temp['cognome']." ".$temp['nome']."</option>";
	}
	echo "</select>";
//poi ci vuole il pulsante di submit (ti metto quello) o un js per inviare 
echo "<input name=\"invia\" type=\"submit\" id=\"invia\" value=\"invia\">"; 
echo "</form>"; 

if($_POST['invia']){//si verifica che sia stato dato il submit 
    $atleta = filter_var($_POST['Atleti'], FILTER_SANITIZE_STRING);//leggo il valore della select 
}

e funziona perfettamente, però non mi soddisfano due cose:

la submit è possibile trovare un'altro modo, mi piacerebbe che quando clicco l'atleta tramite lista, mi faccia apparire i risultati, ma non ho idea sul come farlo.

Altra cosa, se volessi inserire per esempio al centro il nome dell'utente cercato, devo sempre usare $_POST[] vero?
Però ho notato che ad esempio in questo caso con submit

la listbox(inizia con A) è composta da:
A
B
C
D carico D mi ricarica pagina con tutti i dati relativi di D, però nella listbox appare il nome di A, e vorrei mettere D.

MI sono spiegato cosa vorrei fare?
 
Ultima modifica di un moderatore:
carico D mi ricarica pagina con tutti i dati relativi di D, però nella listbox appare il nome di A, e vorrei mettere D.
Se ti appare dopo che si aggiorna la pagina è normale.
Se vuoi che rimanesse il nome di quello che hai selezionato dovresti usare l'attributo selected dell'option.
 
Se ti appare dopo che si aggiorna la pagina è normale.
Se vuoi che rimanesse il nome di quello che hai selezionato dovresti usare l'attributo selected dell'option.

Mmm.. il problema è che ho una lista di oltre 90 atleti.. fare il "controllo" per ogni option value non mi conviene per nulla.
Comunque grazie, ora vado a nanna, domani ci rifletto su :D
 
Mmm.. il problema è che ho una lista di oltre 90 atleti.. fare il "controllo" per ogni option value non mi conviene per nulla.
Comunque grazie, ora vado a nanna, domani ci rifletto su :D

Niente, non riesco a venire a capo.
PHP:
echo "<form name=\"form1\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">"; 
    echo "Atleti: <select name='Atleti'>";
	while ($temp = mysql_fetch_assoc($query)) {
    	echo '<option value="'.$temp['codice'].'"';
    		if(isset($_GET['Atleti']) && $_GET['Atleti'] == $temp['codice'])
             	 echo 'selected="selected"';
          echo '>';
          echo $temp['cognome']; 
          //echo $temp['cognome']." ".$temp['nome'];
          echo'</option>'; 
	}
	echo "</select>";
	
//poi ci vuole il pulsante di submit (ti metto quello) o un js per inviare 
echo "<input name=\"invia\" type=\"submit\" id=\"invia\" value=\"invia\">"; 
echo "</form>";

Io vorrei che quando ricarica la pagina, la option value riparte da atleta che ho cliccato.
Ho provato a seguire Longo8 con l'attributo selected, ma non ci riesco. Cosa sbaglio?
 
Ultima modifica:
perchè non usi i cookies sono stati inventati per questo ceare una "memoria" nel protocollo http...? L'ultimo atleta lo memorizzi li...
 
non penso sia solo questo il codice perchè il get li non serve a niente come l' if ...
 
Ultima modifica:
perchè non usi i cookies sono stati inventati per questo ceare una "memoria" nel protocollo http...? L'ultimo atleta lo memorizzi li...
L'avevo letto di questi setcookie, forse hai ragione con questi forse mi levo qualsiasi impiccio.. ora provo a interagire con questi qua.
 
Puoi usare entrambi i metodi ma il dato già ce l'hai...direi che è inutile memorizzarlo di nuovo.
 
Allora ho risolto:
Ha ragione Longo8 era il POST e non GET. Sono ritornato a seguire quella strada, mi ricordavo che c'era un modo con il POST ma non me lo ricordavo proprio, sono anni che non lo uso più il PHP.
Altra cosa è totalmente sbagliata la if, io convinto che funzionasse, invece no la formattazione apici e doppi apici e posizione di select erano sbagliati, l'ho riscritta e quella corretta è:

if (isset($_POST['Atleti']) && $_POST['Atleti'] == $temp['codice'])
echo "<option value= '".$temp['codice']."' selected = \"selected\">" .$temp['cognome']." ".$temp['nome']."</option>";

E funziona perfettamente ;)

Grazie per l'aiuto a entrambi. Per il setcookie sarà per la prossima volta! :D

Ora ho un altro problema con il php e css che palline.
Continuo qui o apro un altro topic?
 
Ultima modifica:
Ora ho un altro problema con il php e css che palline.
Continuo qui o apro un altro topic?
Altro topic ma posta il codice completo che hai utilizzato per fare questo anche.
 
Altro topic ma posta il codice completo che hai utilizzato per fare questo anche.
Ok, ecco il codice corretto:

PHP:
<?php 
echo "<form name=\"form1\" method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">"; 
    echo "Atleti: <select name='Atleti' style=\"background-color: #DEF3CA\">";
	while ($temp = mysql_fetch_assoc($query)) {
    	if (isset($_POST['Atleti']) && $_POST['Atleti'] == $temp['codice'])  
            echo "<option style=\"background-color: #DEF3CA\" value= '".$temp['codice']."' selected = \"selected\">" .$temp['cognome']." ".$temp['nome']."</option>"; 
        else
            echo "<option style= \"background-color: #DEF3CA\"  value='".$temp['codice']."'>".$temp['cognome']." ".$temp['nome']."</option>"; 
	}
	echo "</select>";

//poi ci vuole il pulsante di submit (ti metto quello) o un js per inviare 
echo "<input name=\"invia\" type=\"submit\" id=\"invia\" value=\"invia\" style=\"background-color: #DEF3CA\" >"; 
echo "</form>"; 

if($_POST['invia']){//si verifica che sia stato dato il submit 
    $atleta = filter_var($_POST['Atleti'], FILTER_SANITIZE_STRING);//leggo il valore della select 
}

Vi aspetto nel prossimo topic! ;)
 
Ora sto pensando di inserire un altra option value che conterrà gli anni di stagione cioè: 2013-2012-2011.
Però per prendere entrambi dati sia atleta e sia l'anno di stagione come devo fare? Baster fare la stessa cosa con $_POST['Atleti] e aggiungere $_['Stagione']?

Per non fare confusione ulteriore, qui continuamo di listbox e query con l'option value e anche un pizzico di jquery.
Alessandro grazie per il codice, l'alternativa per togliere l'antiestetico submit sarebbe magnifico.
Dove lo vado a inserire questo pezzo di codice togliendo il submit?

Includi l'ultima versione di jQuery e poi:
HTML:
<script>
$(function() {
    $("select").change(function() {
        $("form").submit();
    });
});
</script>
(Questo funziona solo se hai un form e una select. In alternativa ti consiglio di assegnare a entrambi un ID univoco e usare quello per identificarli.)
Mi pare di avere sia la form e sia la select no?
 
Ho inserito lo script, e sembra funzionare, il problema è che non mi stampa nulla. Il valore non me lo prende.
Come faccio a prendere il valore della select?
 

Discussioni simili