Inviare Valore di Option diverso dal "value"

  • Creatore Discussione Creatore Discussione apus84
  • Data di inizio Data di inizio

apus84

Nuovo Utente
2 Giu 2012
10
0
0
Buongiorno gente,
è il mio primo post che faccio, spero possiate aiutarmi perchè non riesco a venirci a capo, nemmeno facendo ricerche.
E' da pochi mesi che mi son cimentato nel php. Ora è arrivato il primo problema. Sto costruendo un sito amatoriale tra amici per il fantacalcio.
Il problema che ho riscontrato è che dovrei mandare dei dati al DB tramite un option e fin qua tutto ok, son riuscito nell'intento, peccato che il dato che invio non è quello che vorrei inviare. Io vorrei inviare il campo "$nome" ma lasciare in option come campo "value" quello attuale, in quanto dal javascript lui mi calcola una somma istantanea. E' possibile ciò?
Posto il codice:
PHP:
<?php
include ('header.php');
 $provasessione = $_SESSION['utente'];
 $controllorosa = mysql_query("SELECT * FROM squadra WHERE nomesquadra = '$provasessione' ");
 $controllorosa_i = mysql_num_rows($controllorosa);
 
 if ($controllorosa_i > 0) {
    
    echo 'Tutto OK!';

} else { 
    
    if (!isset($_POST['inviarosa'])) {
 $query="SELECT * FROM calciatore WHERE ruolo = 'POR' ";
 $risultati=mysql_query($query);
 
 $query2="SELECT * FROM calciatore WHERE ruolo = 'DIF' ";
 $risultati2=mysql_query($query2);
 ?>
 
 <script lang="javascript" type="text/javascript">
// <!CDATA[
//------------------------------------------------------
//restituisce la somma degli elementi passati come id
//alert( calcola_somma("Text1", "Text2") );
//alert( calcola_somma(["Text1", "Text2"]) );
//------------------------------------------------------
function calcola_somma()
{
    var s = 0;
    for(var i = 0; i < arguments.length; i++)
    {
        var n = null;
        var v = arguments[i];
        if( typeof(v) == "string" )
        {
            n = document.getElementById(v).value.replace(",", ".");
            s += ((isNaN(parseFloat(n)))?0:parseFloat(n));    
        }
        else if(v instanceof Array)
        {
            for(var i = 0; i < v.length; i++)
            {
                n = document.getElementById(v[i]).value.replace(",", ".");
                s += ((isNaN(parseFloat(n)))?0:parseFloat(n));    
            }
        }
    }
    return s;
}

function calcola()
{
    var somma = calcola_somma("Text1", "Text2");
    document.getElementById("div1").innerHTML = 500 - somma;
}

// ]]>
</script>

<div class="form">
<form method="post">
<label>Portiere:</label>
    <select id="Text1" onchange="calcola();" name="por1">
    <option disabled="disabled" selected="selected">Scegli il Primo Portiere</option>
    
    <?php
    while($rows = mysql_fetch_assoc($risultati)) {
        $nome = $rows['nome'];
        $fanta = $rows['fantamiliardi'];
         ?>
        
        <option value="<?php echo $fanta; ?>"><?php echo "$nome ($fanta)" ; ?></option>
        
<?php } ?>
</select>



<label>Portiere:</label>
    <select id="Text2" onchange="calcola();" name="dif1">
    <option disabled="disabled" selected="selected">Scegli il Difensore</option>
    
    <?php
    while($rows2 = mysql_fetch_assoc($risultati2)) {
        $nome2 = $rows2['nome'];
        $fanta2 = $rows2['fantamiliardi'];
         ?>
        
        <option value="<?php echo $fanta2; ?>"><?php echo "$nome2 ($fanta2)" ; ?></option>
        
<?php } ?>
</select><br />

Rimangono ancora: <div id="div1">500</div>
<input type="submit" value="Invia" name="inviarosa" />
</form>
</div>
<?php  


} else {
    
    //Controlla campi
    $por1 = mysql_real_escape_string($_POST["por1"]);
    $dif1 = mysql_real_escape_string($_POST["dif1"]);
    
    if ($por1 == "" || $dif1 == "") {
        
        echo "Devi Inserire Tutti I Campi";
        
    } else {
            
            mysql_query("INSERT INTO squadra (nomesquadra, por1, dif1) VALUES ('".$_SESSION['utente']."', '$por1', '$dif1' )");
            
            echo "Tutto Perfetto";
        }
        
    }
    
    }
?>
 

Ciao, modifica i campi in questo codice e fammi sapere se fa al caso tuo
Ciao
PHP:
<select name='regione'>
						<option value=''>Seleziona regione</option>";
						$query_regione = mysql_query("SELECT * FROM regioni ORDER BY descr_regione")
						or die("errore nella query_regione;".mysql_error());
						for($a = 0; $a < mysql_num_rows($query_regione); $a++)
							{
								$a_elenco_regione = mysql_fetch_assoc($query_regione);
								echo"
								<option value='".intval($a_elenco_regione['id_regione'])."'"; 
								if($id_regione == $a_elenco_regione['id_regione']) 
									{ 
										echo"selected"; 
									} 
								echo">"; 
								echo"$a_elenco_regione[descr_regione]"; 
								echo"</option>"; 
							}
						echo"
						</select>
 
Devo esser sincero sincero mi trovo in difficoltà a cambiarla.. :dipser::dipser::dipser: :crying::crying::crying:
 
Devo esser sincero sincero mi trovo in difficoltà a cambiarla.. :dipser::dipser::dipser: :crying::crying::crying:

PHP:
<select  name='port'>
<option value=''>Seleziona portiere</option>";
$query_portiere = mysql_query("SELECT * FROM portieri ORDER BY descr_portiere")
or die("errore nella query_portiere;".mysql_error());
for($a = 0; $a < mysql_num_rows($query_portiere); $a++)
	{
		$a_elenco_portieri = mysql_fetch_assoc($query_portiere);
		echo"
		<option value='".intval($a_elenco_portieri['id_portiere'])."'"; 
		if($id_portiere == $a_elenco_portieri['id_portiere']) 
			{ 
				echo"selected"; 
			} 
		echo">"; 
		echo"$a_elenco_portieri[descr_portiere]"; 
		echo"</option>"; 
	}
echo"
</select>
Prova così
Ciao
 
Niente da fare minatore. Avevo provato come mi hai postato tu togliendo però ORDER BY descr_portiere e modificando il richiamo "SELECT * FROM portieri" in "SELECT * FROM squadra" ..Ho fatto come mi hai appena scritto con ORDER BY descr_portiere ma niente da fare.
O sono io che non so come procedere o forse non fa a caso mio il tuo aiuto!
 
Niente da fare minatore. Avevo provato come mi hai postato tu togliendo però ORDER BY descr_portiere e modificando il richiamo "SELECT * FROM portieri" in "SELECT * FROM squadra" ..Ho fatto come mi hai appena scritto con ORDER BY descr_portiere ma niente da fare.
O sono io che non so come procedere o forse non fa a caso mio il tuo aiuto!

Posta il codice
Ciao
 
Devo postare il codice con integrato il tuo aiuto? Xkè altrimenti c'è già ad inizio post!
 
Ecco:

PHP:
<?php
include ('header.php');
 $provasessione = $_SESSION['utente'];
 $controllorosa = mysql_query("SELECT * FROM squadra WHERE nomesquadra = '$provasessione' ");
 $controllorosa_i = mysql_num_rows($controllorosa);
 
 if ($controllorosa_i > 0) {
    
    echo 'Tutto OK!';

} else { 
    
    if (!isset($_POST['inviarosa'])) {
 $query="SELECT * FROM calciatore WHERE ruolo = 'POR' ";
 $risultati=mysql_query($query);
 
 $query2="SELECT * FROM calciatore WHERE ruolo = 'DIF' ";
 $risultati2=mysql_query($query2);
 ?>
 
 <script lang="javascript" type="text/javascript">
// <!CDATA[
//------------------------------------------------------
//restituisce la somma degli elementi passati come id
//alert( calcola_somma("Text1", "Text2") );
//alert( calcola_somma(["Text1", "Text2"]) );
//------------------------------------------------------
function calcola_somma()
{
    var s = 0;
    for(var i = 0; i < arguments.length; i++)
    {
        var n = null;
        var v = arguments[i];
        if( typeof(v) == "string" )
        {
            n = document.getElementById(v).value.replace(",", ".");
            s += ((isNaN(parseFloat(n)))?0:parseFloat(n));    
        }
        else if(v instanceof Array)
        {
            for(var i = 0; i < v.length; i++)
            {
                n = document.getElementById(v[i]).value.replace(",", ".");
                s += ((isNaN(parseFloat(n)))?0:parseFloat(n));    
            }
        }
    }
    return s;
}

function calcola()
{
    var somma = calcola_somma("Text1", "Text2");
    document.getElementById("div1").innerHTML = 500 - somma;
}

// ]]>
</script>

<div class="form">
<form method="post">
<label>Portiere:</label>
    <select id="Text1" onchange="calcola();" name="por1">
    <option disabled="disabled" selected="selected">Scegli il Primo Portiere</option>
    <option value=''>Seleziona portiere</option>";
    
    <?php
        
      
$query_portiere = mysql_query("SELECT * FROM squadra ORDER BY descr_portiere")
or die("errore nella query_portiere;".mysql_error());
for($a = 0; $a < mysql_num_rows($query_portiere); $a++)
    {
        $a_elenco_portieri = mysql_fetch_assoc($query_portiere);
        echo"
        <option value='".intval($a_elenco_portieri['id_portiere'])."'"; 
        if($id_portiere == $a_elenco_portieri['id_portiere']) 
            { 
                echo"selected"; 
            } 
        echo">"; 
        echo"$a_elenco_portieri[descr_portiere]"; 
        echo"</option>"; 
    }
echo" "                                
        
 ?>
</select>



<label>Portiere:</label>
    <select id="Text2" onchange="calcola();" name="dif1">
    <option disabled="disabled" selected="selected">Scegli il Difensore</option>
    
    <?php
    while($rows2 = mysql_fetch_assoc($risultati2)) {
        $nome2 = $rows2['nome'];
        $fanta2 = $rows2['fantamiliardi'];
         ?>
        
        <option value="<?php echo $fanta2; ?>"><?php echo "$nome2 ($fanta2)" ; ?></option>
        
<?php } ?>
</select><br />

Rimangono ancora: <div id="div1">500</div>
<input type="submit" value="Invia" name="inviarosa" />
</form>
</div>
<?php  


} else {
    
    //Controlla campi
    $por1 = mysql_real_escape_string($_POST["por1"]);
    $dif1 = mysql_real_escape_string($_POST["dif1"]);
    
    if ($por1 == "" || $dif1 == "") {
        
        echo "Devi Inserire Tutti I Campi";
        
    } else {
            
            mysql_query("INSERT INTO squadra (nomesquadra, por1, dif1) VALUES ('".$_SESSION['utente']."', '$por1', '$dif1' )");
            
            echo "Tutto Perfetto";
        }
        
    }
    
    }
?>
 

Ciao, scusami ho letto meglio il post, ti spiego
con il codice che ti ho scritto, all'evento onchange ricarica la pagina mantenendo il nome da te scelto.
Mentre per il problema che hai tu, quando selezioni esempio un portiere tu riceverai come risultato un numero,per trasformarlo in nome devi fare una query su 2 tabelle, tipo
PHP:
// il tuo risultato 34
$query=mysql_query("select squadra.*, portieri.*
from squadra, portieri
where portieri.id_portiere = squadra.id_portiere
&& portieri.id_portiere = '34'")
a questo punto puoi ricavarti il nome del portiere
PHP:
$pippo = mysql_fetch_array($query)
echo"$pippo[campo tabella nome portiere]";
se ti da errore prova a mettere gli apici tra le parentesi quadre
Ciao, spero che funzioni
 

Ciao, ho fatto un casino, non ho capito bene il problema,
tu quando fai la insert vuoi nel db il nome del giocatore.
Scusami
 
Lo proverò spero entro stasera, altrimenti domani mattino!
Ti ringrazio anticipatamente! Ti farò sapere quanto prima!

Ciao
 
Appena rientrato da un matrimonio, ancora non ho provato il tuo secondo aiuto ma da quanto ho capito non mi risolve il problema in quanto mi hai scritto:

minatore ha scritto:
Ciao, ho fatto un casino, non ho capito bene il problema,
tu quando fai la insert vuoi nel db il nome del giocatore.
Scusami

Perfetto, questo è quello che io voglio :o:o:o
 

Ciao, prova così, ho fatto una tabella calciatori per provare
PHP:
?>
<label>Portiere:</label> 
<select id="Text1" onchange="calcola();" name="por1"> 
<option selected="selected">Scegli il Primo Portiere</option> 
 
<?php 
$query = mysql_query("SELECT * FROM calciatori WHERE ruolo = '1'"); 
while($ris = mysql_fetch_assoc($query)) 
	{ 
?> 
	<option value="<?php $ris['nome']; ?>"><?php echo "$ris[nome] ($ris[costo])" ; ?></option> 
	 
<?php } 

?> 
</select>
Ricorda tu riceverai come valore sempre quello che metterai nel value.
Comunque un consiglio prima di andare avanti fai una rivisitina al db, perchè non corretto passargli il nome, ma dovresti salvare l'id del calciatore.
Ciao
 
Così funziona come vorrei io però non mi calcola la somma instantanea perchè il value dell'option non è quanto costa il calciatore ma il nome del calciatore. Mi sa che devo fare tutt'altro. Devo andare a rileggere un pò di mysql e php :dipser: ..

Comunque grazie per il tuo aiuto minatore, appena trovo una soluzione ti farò sapere.
 

Discussioni simili