Script banale ma non trovo l'errore

Dariolu

Nuovo Utente
4 Feb 2012
3
0
0
Buongiorno a tutti, sto impazzendo a trovare l'errore in questo script:

form di sinistra, non fa null'altro che aprire un il file zone.txt e creare un menù con una voce per ogni riga del file, la scelta viene passata con POST al fomr di destra che scrive un file con nomefile uguale alla voce di menù che ho scelto, il problema è che funziona solamente se scelgo l'ultima voce di menu, altrimenti nada.

codice del form di sinistra:

PHP:
<?php

session_start();

echo "
<html>
<body bgcolor='#FFFFFF' background='./img/sfondo1.PNG'>
";

$valore=file("./zone.txt");

echo "
<form name=MENU1 action=left2.php target=LEFT2 method=post>
<select name='Zone' onChange='document.MENU1.submit()'>
<option value=''>Scegli la locandina</option>
";

for ($i=0; $i < count($valore); $i++)
{
 $var1=strpos($valore[$i],'_');
 $var1++;
 $valore1[$i]=substr($valore[$i], $var1);
 echo "<option value='$valore[$i]' >$valore1[$i]</option>";
}

echo "
</body>
</html>
";

?>
codice del form di destra:

PHP:
<?php

session_start();

echo "
<html>
<body bgcolor='#FFFFFF' background='./img/sfondo2.PNG'>
";

$scrivi=fopen('./locandinetesti/'.$_POST[Zone].'.txt','a');
fwrite($scrivi);
fclose('./locandinetesti/'.$_POST[Zone].'.txt');

echo "
</body>
</html>
";

?>
sto impazzendo da giorni!!
Grazie a chi saprà aiutarmi
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
forse perchè non chiudi la select nel form di sinistra </select>

non so, prova

puoi usare anche questa sintassi

<select name='Zone' onChange='this.form.submit()'>

ed evitare di dare il name al form

meglio mettere gli apici

action='left2.php' e a method='post'
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
prova a mettere un var_dump (questo sconosciuto) per vedere cosa ti trasmette il form

PHP:
<?php
session_start();
var_dump($_POST[Zone]);//guarda se e cosa ti restituisce
echo "
<html>
<body bgcolor='#FFFFFF' background='./img/sfondo2.PNG'>";
$scrivi=fopen('./locandinetesti/'.$_POST[Zone].'.txt','a');
fwrite($scrivi);
fclose('./locandinetesti/'.$_POST[Zone].'.txt');
echo "
</body>
</html>
";
?>
poi, se non capisco male, le due cose sono nella stessa pagina? se si non sta bane avere due tag body e html nella stessa pagina, se ti serve per impaginare usa i div.
dimenticavo:
sui $_POST mancano gli apici: $_POST['Zone'].
p.s.
la prossima volta racchiudi sempre il codice tra gli appositi tag (ultime tre iconcine della seconda riga della formattazione del post) faciliti la lettura
 
Ultima modifica:

Dariolu

Nuovo Utente
4 Feb 2012
3
0
0
Innanzitutto grazie ad entrambi per la risposta velocissima.

Ho chiuso la /form e la /select che in effetti erano rimaste aperte, ed ho inserito gli apici come suggerito, purtroppo il comportamento rimane identico, funziona solamente se seleziono l'ultimo valore della select.

Le due parti di codice stanno in due frame diversi, avevo sbagliato a scrivere, intendevo frame di destra e frame di sinistra, non form di destra e form di sinistra, scusate. Quindi i tag body e html vanno in entrambi i frame.

Usando la var_dump ottengo esattamente ciò che mi aspetto, se scelgo la prima voce di menu (es. pippo) la var_dump mi restituisce: string(5) "pippo" e così via per ognuna delle voci di menù, il problema è che comunque il file viene scritto solamente in caso di scelta della ultima voce, sono allibito...
 
Ultima modifica:

Dariolu

Nuovo Utente
4 Feb 2012
3
0
0
ho trovato il bandolo della matassa, posto la soluzione per ringraziare del supporto e sperando di poter aiutare qualcuno con il mio stesso problema.

L'errore sta nel metodo di apertura file, mi spiego.

Usando
PHP:
$valore=file("./zone.txt");
per importare le righe del file nell'array non funziona

Usando invece

PHP:
$fs=fopen("./zone.txt", "r");
$valore=array();
while (!feof($fs))
 {
 $valore[]=trim(fgets($fs));
 }
funziona perfettamente!!