form: variabile php in una select

  • Creatore Discussione Creatore Discussione l@ura
  • Data di inizio Data di inizio

l@ura

Nuovo Utente
19 Mar 2012
7
0
1
ciao a tutti! mi chiamo Laura :-)
premetto che sono alle prime armi con php, vi spiego il mio problemino sperando di riuscire a spiegarmi e di riuscire a risolverlo!

ho un form composto da un campo testo e da una select in html, quello che io seleziono/digito in questa form mi viene scritto su un file di testo ok?
ora, io voglio (vorrei!) che quello che io scrivo manualmente nel campo testo mi vada nella mia select in modo tale che selziono la select mi scriva sul file di testo quello che avevo scritto nel campo testo, spero di essermi spiegata!

vi allego il mio codicillo, che ovviamente non mi funziona :-(
in pratica se io scrivo nel campo testo "laura" e selziono dalla select la voce che ho chiamato "1" nel file di testo che viene creato mi scriva 2 volte "laura"

non ci riescooo :-(
questo è il mio file php:
PHP:
<?php
$nome = $_POST['nome'];
$select = $_POST['select'];

//scrive la pagina .PHP
$fp = fopen("testo.txt", "a") or die("ERRORE: non riesco a creare la pagina PHP");
fwrite($fp, "$nome \n");
fwrite($fp, "$select \n");
fclose($fp);

if ($_POST['submit']) {
print "file aggiornato";
}
?>
<html>
<body>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<table width="500" border="0" cellpadding="5" cellspacing="0">
<tr><td><input type="text" name="nome"></td></tr>
<tr><td>

<select size="1" name="select">
	<option value="">scegli</option>
	<option value="<?php echo $nome; ?>">1</option>
</select></td></tr></table>

<input type="submit" name="submit" value="submit">

</body></html>
 
dimenticavo!

al momento questo codice che vi ho postato mi da come risultato che se io scrivo laura e seleziono dalla select "1" mi scrive nel file di testo "laura",
se io lo rifaccio e scrivo "pippo" nel file di testo e seleziono "1" mi scrive "pippo" e "laura" :-( (lo tiene in memoria dalla volta prima?!)

scusate :-(
 
ciao
credo proprio che tu non possa fare quello che chiedi (anche se non capisco a che ti serva inviare due volte lo stesso valore) solo con php, credo proprio che ti serva ajax o come minimo js
a parte quello (considerato che dici di essere alle prime armi).
1. metti la lettura dei post+la scrittura del txt tutta dentro il'if e usa l'isset
2. anche se con le novità di php sembrerebbe permesso per ora è meglio scrivere
action="<?php echo $_SERVER['PHP_SELF'];?> comunque alla fine ci vuole il ;
3. manca il tag di chiusura </form>

PHP:
<?php
if (isset($_POST['submit'])) {
	$nome = $_POST['nome'];
	$select = $_POST['select'];
	//scrive la pagina .PHP
	$fp = fopen("testo.txt", "a") or die("ERRORE: non riesco a creare la pagina PHP");
	fwrite($fp, "$nome \n");
	fwrite($fp, "$select \n");
	fclose($fp);
	print "file aggiornato";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<table width="500" border="0" cellpadding="5" cellspacing="0">
<tr><td><input type="text" name="nome"></td></tr>
<tr><td>

<select size="1" name="select">
    <option value="">scegli</option>
    <option value="<?php $nome; ?>">1</option>
</select></td></tr></table>

<input type="submit" name="submit" value="submit">
</form>

p.s.
benvenuta nel forum
 
grazie Borgo, adesso mi studio il tuo codice :-)

questa cosa mi serve perchè ad esempio:
ho 2 campi testo "nome" e "cognome" e una select dove posso scegliere se stampare nome o cognome ma ovviamente queste 2 voci della select devono prendermi quello che io ho scritto nei 2 text box di prima quindi


PHP:
<?php
if ($_POST['submit']) {
print "file aggiornato";
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$select = $_POST['select'];

//scrive la pagina .PHP
$fp = fopen("testo.txt", "w") or die("ERRORE: non riesco a creare la pagina PHP");
fwrite($fp, "dalla text box: >$nome <\n");
fwrite($fp, "dalla select: > $select <\n");
fclose($fp);


}
?>
<html>
<body>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<table width="500" border="0" cellpadding="5" cellspacing="0">
<tr><td><input type="text" name="nome"> <input type="text" name="cognome"></td></tr>
<tr><td>

<select size="1" name="select">
    <option value="">scegli</option>
    <option value="<?php echo $nome; ?>">scrivi nome</option>
    <option value="<?php echo $cognome; ?>">scrivi cognome</option>
</select></td></tr></table>

<input type="submit" name="submit" value="submit">

</body></html>

quindi io scrivo nel mio testo.txt il nome o il cognome e poi dalla select ristampo o il nome oppure il cognome a seconda delle mie esigenze,
sembrerà una cosa inutile ma per quello che ho in mente io è utilissimo! :-)
 
ciao
se usi "visualizza sorgente del browser" ti accorgi perche non funzia.
1. chiami la pagina e guarda il sorgente, la select ti risulta

<select size="1" name="select">
<option value="">scegli</option>
<option value="">scrivi nome</option>
<option value="">scrivi cognome</option>
</select>
2. scrivi pinco pallo (se dopo scritto e prima del submit riguardi il sorgente vedi che le option hanno ancora value="")
3. dai il submit e ti si visualezza "file aggiornato", se a questo punto guardi il sorgente vedi che le option hanno il valore
<select size="1" name="select">
<option value="">scegli</option>
<option value="pinco">scrivi nome</option>
<option value="pallo">scrivi cognome</option>
</select>
4. scrivi sofonisba e asdrubale, e submit, i valori trasmessi sono sofonisba asdrubale e pinco o pallo (in funzione di cosa hai selezionato)
cioè i valori delle option sono sempre sempre in ritardo di un valore
puoi accorgertene anche mettendo
PHP:
<?php
if ($_POST['submit']) {
print "file aggiornato";
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$select = $_POST['select'];
echo "ho scritto il nome $nome<br>";
echo "e il cognome $cognome<br>";
echo "e ho selezionato $select<br>";
//...
?>
se ci pensi è logico:
php opera lato server: cioè il server deve avere prima una richiesta dal bw (il submit in questo caso) poi elabora e risponde
a te serve qualcosa che operi lato client, cioè prima che il bw invii la richiesta, quindi o javascrip o ajax
 
si Borgo penso tu abbia ragione, hai centrato il problema
purtroppo però non ho idea di come risolvere con javascript, in pratica cosa dovrei fare? :o
 
ciao
ti conviene postare nella sezione js o ajax (io ho una certa infarinatura di php, ma js non riesco a farmelo entrare in testa) penendo il problema di riempire le select coi valori dei campi di input
 

Discussioni simili