Campi aggiuntivi da form ma nascosti.

  • Creatore Discussione Creatore Discussione salql
  • Data di inizio Data di inizio

salql

Nuovo Utente
28 Apr 2012
8
0
0
Ciao a tutti, lurkando sovente questo forum, mi sono iscritto per fare una domanda, visto che sto iniziando ad applicare concretamente il php nei miei lavori, vi pongo un quesito sperando che qualcuno possa rispondermi.

Ho un campo select, nella quale vorrei aggiungere al valore che indico nelle opzioni, un campo nascosto da visualizzare in seguito in un file che mi fa vedere cio' che viene inserito, vi posto l'esempio di cio' che intendo:


inserisci.php


PHP:
<label>Colore:
<select name="colore">
<option value="0">:: seleziona ::</option>
<option value="1">rosso</option>
<option value="2">blu</option>
<option value="3">giallo</option>	  
</select>
</label>

questo form passa ovviamente tramite una query INSERT nel db come questa:

$query = "INSERT INTO test (rosso)
VALUES ($colore)";

io vorrei in soldoni, che se uno mi seleziona "rosso" oltre a inserire "rosso" nel db, mi inserisca anche il prezzo, che è un valore non selezionabile dall'utente, andandolo poi a stampare in un'altra pagina che si chiama visualizza.php una cella con scritto "rosso" e nella cella affianco "15€"

vi posto anche il visualizza, visto che comunque credo che vada applicata qua la modifica della visualizzazzione:



PHP:
$query = "SELECT colore FROM test";

$result = mysql_query($query);

if (!$result) {
	die("Errore nella query $query: " . mysql_error());
}

$colore_arr = array('&nbsp;','rosso','blu','giallo');

while ($row = mysql_fetch_assoc($result)) {

$colore = $colore_arr[$row['colore']];
echo "<tr>
	<td>$colore  |  $prezzocolore</td>
      </tr>";
}


questo dovrebbe essere cio' che mi esce fuori... qualcuno puo' aiutarmi? :)
 
Potresti fare semplicemente cosi:
PHP:
$query = "SELECT colore FROM test"; 

$result = mysql_query($query); 

if (!$result) { 
    die("Errore nella query $query: " . mysql_error()); 
} 

$colore_prezzi = array("10€","20€", "30€");
$colori = array("rosso","giallo","verde");

while ($row = mysql_fetch_assoc($result)) { 
 
echo "<tr> 
    <td>".$colori[$row['colore']]." | ".$colore_prezzi[$row['colore']]."</td> 
      </tr>"; 
}
 
Potresti fare semplicemente cosi:
PHP:
$query = "SELECT colore FROM test"; 

$result = mysql_query($query); 

if (!$result) { 
    die("Errore nella query $query: " . mysql_error()); 
} 

$colore_prezzi = array("10€","20€", "30€");
$colori = array("rosso","giallo","verde");

while ($row = mysql_fetch_assoc($result)) { 
 
echo "<tr> 
    <td>".$colori[$row['colore']]." | ".$colore_prezzi[$row['colore']]."</td> 
      </tr>"; 
}

ah ti ringrazio, ma quindi giusto per vedere se imparo.. aggiungendo "_campo" a un array, questo mi diventa assegnabile? ottimo ;) però una domanda.. se i prezzi che assegniamo in questo array, io alla fine della lista li dovessi sommare, sarebbe fattibile anche senza inserirli nel db?
 
Se ho capito bene (forse) tu intendi assegnare il nome di un campo di un array? beh ecco un esempio
PHP:
$colori = array("rosso" => "10€","giallo" => "20€","verde" => "30€");

Seconda cosa, se intendi sommare tutti i prezzi dei colori scelti fai cosi:

PHP:
$query = "SELECT colore FROM test";  

$result = mysql_query($query);  

if (!$result) {  
    die("Errore nella query $query: " . mysql_error());  
}  

$colore_prezzi = array(10,20,30); 
$colori = array("rosso","giallo","verde"); 

while ($row = mysql_fetch_assoc($result)) {  
  
echo "<tr>  
    <td>".$colori[$row['colore']]." | ".$colore_prezzi[$row['colore']]."€</td>  
      </tr>"; 
$totale = $totale + $colore_prezzi[$row['colore']];
}  
echo "Prezzo totale: $totale";
 
Se ho capito bene (forse) tu intendi assegnare il nome di un campo di un array? beh ecco un esempio
PHP:
$colori = array("rosso" => "10€","giallo" => "20€","verde" => "30€");

Seconda cosa, se intendi sommare tutti i prezzi dei colori scelti fai cosi:

PHP:
$query = "SELECT colore FROM test";  

$result = mysql_query($query);  

if (!$result) {  
    die("Errore nella query $query: " . mysql_error());  
}  

$colore_prezzi = array(10,20,30); 
$colori = array("rosso","giallo","verde"); 

while ($row = mysql_fetch_assoc($result)) {  
  
echo "<tr>  
    <td>".$colori[$row['colore']]." | ".$colore_prezzi[$row['colore']]."€</td>  
      </tr>"; 
$totale = $totale + $colore_prezzi[$row['colore']];
}  
echo "Prezzo totale: $totale";

esattamente quello che intendevo, terro' tesoro di questo, ti ringrazio molto.
 
Ti chiedo scusa ancora, provando anche l'ultimo codice, non riesco comunque ad ottenere il risultato totale, perchè se vado a intuito e cerco di capire qualcosa nello script, noi andiamo a sommare la riga, essendo pero' in un ciclo while, dovrei sommare proprio l'intera colonna coi costi, una cosa del genere intendo:

COLORE COSTO
rosso 10
blu 20
verde 20




totale: 50.

io interpretando comunque ho capito grazie alle tue semplici e chiare righe, che posso anche sommare piu' cose nella stessa riga, e mi è comunque tornato comodo, ma non riesco proprio a interpolare il totale :(
 
Prova cosi
PHP:
$query = "SELECT colore FROM test";   

$result = mysql_query($query);   

if (!$result) {   
    die("Errore nella query $query: " . mysql_error());   
}   

$colore_prezzi = array(10,20,30);  
$colori = array("rosso","giallo","verde");  

while ($row = mysql_fetch_assoc($result)) {   
   
echo "<tr>   
    <td>".$colori[$row['colore']]." | ".$colore_prezzi[$row['colore']]."€</td>   
      </tr>";  
$totale += $colore_prezzi[$row['colore']]; 
}   
echo "Prezzo totale: $totale";
 
Perfetto, ora lo script funziona alla grand e riesco anche a sommarmi qualunque campo voglia tramite array, solo una cosa, sai dirmi perchè in testa alla pagina, esce questo errore?

PHP:
Notice: Undefined variable: totale3 in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\test\vedi.php on line 60

è ovvio che riguarda l'ultima variabile applicata, e l'ho messa esattamente come l'hai incollata te, eppure nonostante tutto funziona, scusa se approfitto del tuo tempo :hammer:


ho editato, perchè avevo un'altra cosa nel copia, l'errore si è generato quando ho applicato un'altra modifica:

$totale = $opzione_prezzi[$row['opzione']] + $opzione1_prezzi[$row['opzione1']];
$totale3 += $totale;

eppure funziona benissimo :D
 
Ultima modifica:
Ciao,
devi valorizzare la variabile $totale3 prima di incrementarla
prova cosi:

PHP:
$totale3 = 0;
$totale = $opzione_prezzi[$row['opzione']] + $opzione1_prezzi[$row['opzione1']];
$totale3 += $totale;

se sei in un cilco la valorizzi al di fuori
 
allora ecco il codice:

PHP:
while ($row = mysql_fetch_assoc($result)) {
	$id      = htmlentities($row['id']);
	$data      = htmlentities($row['data']);
	$nome      = htmlentities($row['nome']);
	$numero     = htmlentities($row['numero']);
	$note = htmlentities($row['note']);
	$note = nl2br($note);

	if(!$numero)     $numero = '&nbsp;';
	if(!$note) $note = 'Tutto OK';

	$nazione = $row['nazione'] ? 'Straniero' : 'Italiano';
	$categoria = $row['categoria'] ? 'Aziendale' : 'Privato';
	$tipo = $row['tipo'] ? 'Test' : 'test2';
	
    $totale = $opzione_prezzi[$row['opzione']] + $opzione1_prezzi[$row['opzione1']] + $classe_prezzi[$row['classe']];
	$totale3 += $totale;

	echo "<tr>
			<td><center>$id</center></td>	
			<td>$data</td>			
			<td>$nome</td>
			<td>$numero</td>
			<td>".$opzione_arr[$row['opzione']]."</td>
			<td>".$opzione_prezzi[$row['opzione']]."</td>
			<td>".$opzione1_arr[$row['opzione1']]."</td>
			<td>".$opzione1_prezzi[$row['opzione1']]."</td>
			<td>$nazione</td>
			<td>$tipo</td>
			<td>$categoria</td>
			<td>".$classe_arr[$row['classe']]."</td>
			<td>".$classe_prezzi[$row['classe']]."</td>
			<td>".$ricarica_arr[$row['ricarica']]."</td>
			<td>$note</td>
			<td>$totale</td>			
		</tr>";
	
}

echo "</table><p>
totale  $totale3";

se aggiungo

PHP:
$totale3 = 0;

mi somma solo la riga, e non piu' il totale di tutto come ero riuscito ad ottenere, mi scuso ancora per l'ignoranza ma sto imparando mille cose ogni volta che postate :)
 
Ma l'hai messo fuori dal ciclo prima di while?

PHP:
$totale3 = 0;
while ($row = mysql_fetch_assoc($result)) {
 
Ma l'hai messo fuori dal ciclo prima di while?

PHP:
$totale3 = 0;
while ($row = mysql_fetch_assoc($result)) {

ah ecco, va messo prima di while, ora tutto funziona benone, in sostanza sbagliavo perchè ogni volta che ciclava mi resettava il totale se non ho capito male?
 
Edit: hai risolto

ah ecco, va messo prima di while, ora tutto funziona benone, in sostanza sbagliavo perchè ogni volta che ciclava mi resettava il totale se non ho capito male?
Si nel ciclo ogni volta tornava 0 e dava solo il valore finale
 

Discussioni simili