Problema con codice php

  • Creatore Discussione Creatore Discussione c02y
  • Data di inizio Data di inizio

c02y

Utente Attivo
30 Nov 2012
30
0
0
Mi scuso per il titolo, ma non riesco a trovarne uno adatto.

Devo creare una pagina con una select, nella quale, ogni qual volta seleziono un colore, in una tabella viene riportato il numero di volte che ho selezionato il colore.

Il mio problema è che mi riporta solo una prima selezione, e non va oltre.

Per ora ho implementato solo i colori: rosso e blu.

Ecco un'immagine della pagina:

Immagine.jpg

Questo è il codice:

HTML:
<html>

<head>

<head>

<body>
	<div>	
		<table>
		
			<form method=post action=>
			
					<tr>	<td>Totale	<input type=text readonly value=0>	</tr>
					
					<tr>	<td><input type=submit name=ricalcola>			</tr>
					
									
			</form>
			
		</table>
	</div>	
		
													
	<?php // Codice 
													
			@$color=$_POST["select_color"];
					
			if ($color==1) // Se il colore selezionato è il ROSSO
			{
			$array_red[]=$color;
			session_start();
			$_SESSION["array_red"]=$array_red;
			}
					
			else
			{
				if ($color==2) // Se il colore selezionato è il BLU
					{
					$array_blue[]=$color;
					session_start();
					$_SESSION["array_blue"]=$array_blue;
					}
						
						
																}
					
					
					
	?>
					
					
					
					
<div>
	<table>
							
	<form method=post action=Php_Css.php>
								
<tr>	<td>Rossi	<input type=text readonly value=<?php if(!isset ($array_red)){ echo"0";} else {$conta_red=count($array_red); echo $conta_red;}?> name=inp_rossi style=background-color:red>	</tr>
									
<tr>	<td>Blu		<input type=text readonly value=<?php if(!isset ($array_blue)) {echo "0";} else {$conta_blue=count($array_blue); echo $conta_blue;}?> name=inp_blu	style=background-color:blue>	</tr>
									
<tr>	<td>Gialli	<input type=text readonly value=0 name=inp_gialli	style=background-color:yellow>	</tr>
									
<tr>	<td>	<select name=select_color>														
			<option  value=1 style=background-color:red> Rosso </option>
			<option  value=2 style=background-color:blue> Blu	</option>
			<option  value=3 style=background-color:yellow> Giallo </option>
	</select>
	</tr>
		<tr>	<td>	<input type=submit name=Aggiuungi>	</tr>
								
								</form>	
							</table>
					</div>


					
					
</body>

</html>
 
Ultima modifica:
Scusate se rispondo sotto.

Ho fatto un altro codice.

Sembra andare. Il problema è che non aggiorna come si deve.

Se seleziono rosso, e poi la seconda volta blu. Mi aggiunge il colore rosso. Se in seguito riseleziono blu, allora mi aggiunge un blu.

PHP:
<?php
session_start();

if (!isset ($_SESSION['colore']))
	{
	$_SESSION['cred']=0;
	$_SESSION['cyellow']=0;
	$_SESSION['cblu']=0;
	$_SESSION['colore']="";
	$_SESSION['colore']= $_POST['selcol'];

	}
	
else 
echo " l'ultimo è : " , $_SESSION['colore'] ;
{
	if ($_SESSION['colore']== "red")
	{
	$_SESSION['cred']=$_SESSION['cred']+1;
	}
	else if ($_SESSION['colore']== "yellow")
	{
	$_SESSION['cyellow']=$_SESSION['cyellow']+1;
	}
	else if ($_SESSION['colore']== "blu")
	{
	$_SESSION['cblu']=$_SESSION['cblu']+1;
	}
$_SESSION['colore'] = "";
$_SESSION['colore'] = $_POST ['selcol'];	
echo " il prossimo sarà : " , $_SESSION['colore'] ;
}


?>

HTML:
<table>
<form method=post action=colori.php>
<tr>	<td>Rossi	<input type=text value=<?php echo $_SESSION['cred']; ?> style=background-color:red> </tr>
<tr>	<td>Gialli	<input type=text value=<?php echo $_SESSION['cyellow']; ?> style=background-color:yellow> </tr>
<tr>	<td>Blu<input type=text value=<?php echo $_SESSION['cblu']; ?> style=background-color:blue> </tr>
<tr>	<td>	<select name=selcol>														
<option  style=background-color:red> red </option>
<option  style=background-color:yellow> yellow </option>
<option  style=background-color:blue> blu </option>
</select>
</tr>
<tr>	<td>	<input type=submit name=Aggiuungi>	</tr>
</form>	
</table>
 
ciao
intanto formatta come dio comanda il form secondo i principi html: chiusure dei tag e apici,
poi non vedo (ti sei dimenticato di postarla?) l'istruzione session_start visto che nel form usi le sessioni.
poi non ho capito bene cosa vuoi fare e quindi a che ti servono i campi di input tipo text, se ti servono per visualizzare qunte volte ai cliccato su un colore e non altro dovresti definirli readonly.
prova questo per vedere se è quello che volevi (ho aggiunto un paio di cose e nella stessa pagina per mia comodità di test)
PHP:
<?php
session_start();
if (!isset ($_SESSION) || isset($_POST['azzera'])){
	$_SESSION['cred']=0;
	$_SESSION['cyellow']=0;
	$_SESSION['cblu']=0;
}
if(isset($_POST['aggiungi'])){
	//var_dump($_POST['aggiungi']);
	switch($_POST['selcol']){
	 case "red": $_SESSION['cred']++;
	 break;
	 case "yellow": $_SESSION['cyellow']++;
	 break;
	 case "blu": $_SESSION['cblu']++;
	 break;
	}
}else{
	if (!isset ($_SESSION['cred']) && !isset ($_SESSION['cyellow']) && !isset ($_SESSION['cblu'])){
		$_SESSION['cred']=0;
		$_SESSION['cyellow']=0;
		$_SESSION['cblu']=0;
	}
}
//......
?>
<!-- ...... -->
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr><td>Rossi</td><td><input type="text" value="<?php echo $_SESSION['cred']; ?>" style="background-color:red" readonly></td></tr>
<tr><td>Gialli</td><td><input type="text" value="<?php echo $_SESSION['cyellow']; ?>" style="background-color:yellow" readonly></td></tr>
<tr><td>Blu</td><td><input type="text" value="<?php echo $_SESSION['cblu']; ?>" style="background-color:blue; color:#FFFFFF" readonly></td></tr>
<tr><td>&nbsp;</td>
	<td><select name="selcol">														
	<option  style="background-color:red" value="red">red</option>
	<option  style="background-color:yellow" value="yellow">yellow</option>
	<option  style="background-color:blue" value="blu">blu</option>
	</select></td>
</tr>
<tr><td>&nbsp;</td><td><input name="aggiungi" type="submit" value="aggiungi"></td></tr>
<tr><td>&nbsp;</td><td><input name="azzera" type="submit" value="azzera tutto"></td></tr>
</table>
</form>
<!-- ...... -->
 

Discussioni simili