Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [php] form che chiama se stesso

    Ciao a tutti.
    Ci sto perdendo la testa da ore, e la cosa che mi fa rabbia e' che la soluzione sara' sicuramente dietro l'angolo...
    Allora, ho uno script php che mi stampa un form, che chiama a sua volta lo stesso script.
    Il passaggio avviene correttamente, ho verificato usando GET e effettivamente tutti i parametri compaiono accodati nella query string, nell'url.
    Il problema e' che lo script lavora come se tutte le variabili fossero nulle, mai inizializzate. Ho provato a stamparle con le echo, e infatti non stampa niente, anche quando invece le vedo apparire nella query string.
    Ho attivato anche i register globals, niente.
    Ho verificato che, se anziche' passare i parametri allo stesso script li passo a un altro, la cosa funziona!!
    Per favore datemi una mano
    Ciao belli

  2. #2
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    inutile dire.. al solito.. posta il codice e troviamo l'errore..
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  3. #3
    E hai ragione...
    Fa pressappoco cosi':
    codice:
    <?
    if($dove=='uno'){
    	echo "ancora qui?";
    	include ("chiudi.php");
    	exit;  
    }	
    ?>
    <form action="mercatino.php" method="GET">
      Categoria oggetto: 
      <select name="tipo"><option value=''>seleziona</option><optgroup label=''>
    	<option value='01'>batteria</option>
    	<option value='02'>piatti</option>
    	<option value='03'>meccaniche</option>
    	<option value='04'>accessori</option>
    	<option value='05'>elettronica</option>
    	<option value='06'>percussioni</option>
    	<option value='07'>altri strumenti</option>
    	<option value='08'>altri oggetti</option>
      </select>
    
    
    
    
    <?
    mysql_select_db("mercatino", $db);
    $query="select distinct marca from oggetto";
    $risultato=mysql_query($query);
    echo "Scegli la marca dal menu: <select name='marca'><option value=''>seleziona</option><optgroup label=''>";
    while ($array=mysql_fetch_row($risultato)){
    	 for ($i=0; $i< count($array); $i++){
    		echo "<option value=".$array[$i].">".$array[$i]."</option>";
    	}
    		
    }
    ?>
    	</optgroup><option value='ignota'>ignota</option></select>
    	
    se assente scrivila (correttamente) nel box accanto:
    	<input type='text' name='marca2' size='12' maxlength='20'>
    
    
    	
    
    	<input type=HIDDEN name=dove value='uno'>
    	<input type='SUBMIT' VALUE='avanti'>
    </form>
    Una volta eseguito il form e richiamato lo script dovrebbe riconoscermi la variabile $dove come uno ed eseguire quello che c'e' nelle graffe dell'if interrompendo l'esecuzione... ma non va.

    PS la connessione al db viene fatta in un file incluso, l'inclusione non compare nel codice che vi ho postato ma c'e'...

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    ma se fai na echo di $_GET['dove'] cosa ti dà? nulla?

    prova anke a mettere hidden in minuscolo..
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    Col minuscolo non cambia nulla.
    Pero' $_GET['dove'] mi da' il valore esatto, uno!
    Che vuol dire?
    Intanto grazie mille, siamo sulla buona strada!

  6. #6
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    vuol dire che devi usare quello al posto di $dove oppure all'inizio fai $dove=$_GET['dove'] e sei a posto..
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  7. #7
    Pero' di variabili che devo passare allo script stesso ce ne sono molte altre, nessuno mi sa spiegare come posso ripristinare lo "stato normale" delle cose, visto che in tutti gli altri script non occorre usare la sintassi + lunga?

  8. #8
    se funziona in altri mi sembra strano.. se prorpio nn riesci a configurare la cosa correttamente allora usa extract per esportare le variabili come desideri...

    ops.. ho risposto con l'account di un amico..

    Luke

  9. #9
    Le variabili che il form passa devono essere visualizzate "prima" dell'elemento della form che le ha inviate:
    cioè nel tuo caso prima delle <SELECT.
    Dopo le select le variabili sono di nuovo azzerate;
    per cui togli il campo 'HIDDEN (altrimenti spedisce sempre $dove="uno"
    e prova così:
    ===============
    <?
    if($dove=='uno'){
    echo "ancora qui?";
    include ("chiudi.php");
    exit;
    }
    echo $tipo;
    //oppure:
    echo $_GET["tipo"];
    echo $marca;
    //oppure:
    echo $_GET["marca"];
    ?>
    <form action="test.php" method="GET">
    Categoria oggetto:
    <select name="tipo"><option ecc.
    =================
    Ora le varibili vengono visualizzate per cui puoi proseguire con lo script, ma sempre prima dei campi di input.
    Se proprio tu volessi per ignoti motivi inserire codice dopo i campi,puoi rinominare in testa le variabili e lavorare coi nuovi nomi.
    Es:
    in testa
    $marca_nuova=$marca;
    $tipo_nuovo=$tipo;
    e nel seguito lavori con queste due nuove variabili che non vengono variate dalle <SELECT:
    pierogemin
    -------------
    -InterNET
    +CaberNET

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.