form dati & php

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
chiabgigi
Prode Principiante
Messaggi: 18
Iscrizione: venerdì 26 settembre 2008, 21:45
Località: lomellina
Contatti:

form dati & php

Messaggio da chiabgigi »

ciao sono nuovo del forum
ho un grosso problema e con tutta la mia buona volontà non riesco a venirne a capo
ho un form con diverse caselle sia txt che select, quest'ultime gestite con php per caricare i dati da tabella sql.
Mi servirebbe però che:
1. casella select 'Provincia', scegli Milano  -->
2. casella select 'Comune', scegli il comune -->
3. casella txt 'CAP', esce il cap del comune scelto

nb. bisogna tener conto che certe città hanno diversi cap

io ho la tabella sql così strutturata:

Codice: Seleziona tutto

TABLE tab_cap (
	id_cap INTEGER PRIMARY KEY, --0
	prov_cap TEXT, --1
	comu_cap TEXT, --2
	com2_cap TEXT, --3
	fraz_cap TEXT, --4
	fra2_cap TEXT, --5
	topo_cap TEXT, --6
	top2_cap TEXT, --7
	dugt_cap TEXT, --8
	nciv_cap TEXT, --9
	capi_cap TEXT  --10 
che ti da, giusto per capire il contenuto della tabella:

Codice: Seleziona tutto

(NULL, 'AN', 'ANCONA', '', '', '', 'ACHILLE BARILATTI', '', 'VIA', '', '60127');
(NULL, 'BA', 'BARI', '', '', '', 'GORIZIA', '', 'VICO III', '', '70129');
(NULL, 'PD', 'PADOVA', '', '', '', 'MANDRIA', '', 'VIA', '', '35142');
(NULL, 'RM', 'ROMA', '', '', '', 'CALVI', '', 'VIA', '', '00122');
cioè ci sono tutte le vie delle città più i paesi della provincia, es:

Codice: Seleziona tutto

(NULL, 'PD', 'VEGGIANO', '', '', '', '', '', '', '', '35030');
per favore potreste aiutarmi sono veramente nei casini
ciao gigi
gigi
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: form dati & php

Messaggio da Zoff »

Non ho ben capito il tuo problema...

Semplicemente una volta che hai fatto la select per ottenere i dati carichi i dati in un array e li utilizzi nelle select.

Esempio, puramente inventato:

Codice: Seleziona tutto

$ris = mysql_query("SELECT ....");
$select1 = "<select name='1'>";
$select2 = "<select name='2'>";
$select3 = "<select name='3'>";

while($riga = mysql_fetch_array($ris)){
	$select1 .= "<option value='".$riga[1]."'>".$riga[1]."</option>";
	$select2 .= "<option value='".$riga[2]."'>".$riga[2]."</option>";
	$select3 .= "<option value='".$riga[3]."'>".$riga[3]."</option>";
}

$select1 = "</select>";
$select2 = "</select>";
$select3 = "</select>";
Con questo codice generi le select per i campi 1,2,3 della tabella...
Basterà fare ad esempio:

Codice: Seleziona tutto

echo $select1;
per visualizzare la prima select.

Spero di essere stato di aiuto...

ciao

PS. Se quello che volevi è che una volta che hai selezionato una opzione ad esempio nella prima select lo script compili automaticamente con le voci che combaciano con la prima le altre select devi o ricaricare la pagina o usare Javascript/AJAX e caricare i dati in modo asincrono... Vedi tu cosa scegliere anche in base a cosa conosci già...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
chiabgigi
Prode Principiante
Messaggi: 18
Iscrizione: venerdì 26 settembre 2008, 21:45
Località: lomellina
Contatti:

Re: form dati & php

Messaggio da chiabgigi »

guarda sono sempre piu confuso  ::)

riepiloghiamo:  adesso nella mi form ho una select per i comuni e una per le provincie

Codice: Seleziona tutto

<td span class="tah11">Nato a *</span><br><select name="comune" size="1" class="tah11" id="com_nascita" tabindex="3">
<?php
$stringa_query="select * from comuni order by comune asc";
$elenco_comuni=mysql_query($stringa_query) or die(mysql_error());
while($row_comuni=mysql_fetch_array($elenco_comuni)){
$id_comune=$row_comuni[id];
$comune=$row_comuni[comune];
echo "<option value=\"$id_comune\">$comune</option>\n";
}
?>
</select> </td>
 
<td span class="tah11">Provincia di *</span><br><select name="provincia" size="1" class="tah11" id="nato_provincia" tabindex="4">
<?php
$stringa_query="select * from province";
$elenco_province=mysql_query($stringa_query) or die(mysql_error());
while($row_province=mysql_fetch_array($elenco_province)){
$id_provincia=$row_province[id];
$nome_provincia=$row_province[nome_provincia];
echo "<option value=\"$id_provincia\">$nome_provincia</option>\n";
}
?>
</select></td>
e fin qui tutto bene

(premettendo che sono ancora agli inizi con php) vorrei sapere se modificando il codice che fa comparire la select, una volta selezionata la voce interessata, questa in due semplici campi di testo (no select) mi restituisce i valori associati alla selezione contenuti nel database

in rete ho trovato diversi esempi http://www.studioinformatico.net/index.php/2008/03/13/script-popolamento-form-selezione-comuni-province-in-ajax-e-php/
pero con tutta la buona volonta non riesco a farlo funzionare

comunque, se ne hai voglia e tempo, ogni aiuto è benaccetto
ti/vi ringrazio anticipatamente
ciao
gigi
gigi
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: form dati & php

Messaggio da Zoff »

Come avevo supposto rientri nel caso indicato nel mio PS.
In effetti il codice non è di immediato apprendimento per chi si avvicina per la prima volta a php e javascript/ajax...

A grandi linee posso dirti che per cambiare dinamicamente il contenuto di alcuni input in base alla selezione puoi usare un codice simile a questo:

Codice: Seleziona tutto

<html>
<head>
	<title>Test select</title>
	<script type="text/javascript">
	<!--
		function faqualcosa(value){
			getItemCrossBrowser('in').value = value;
			getItemCrossBrowser('put').value = value;
		}
		//Funzione che ottiene l'oggetto DOM attraverso l'id dell'elemento
		function getItemCrossBrowser(id){
			var item;
			if(document.getElementById) item = document.getElementById(id);
			else item = document.all[id];
			return item;
		}
	-->
	</script>
</head>
<body>
<div>
	<select onchange="faqualcosa(this.value);" name="test">
		<option>1</option>
		<option>2</option>
		<option>3</option>
		<option>4</option>
		<option>5</option>
	</select>
	<input type="text"id="in" name="in" value="" />
	<input type="text" name="put" id="put" value="" />
</div>
</body>
</html>
Questo non fa altro che inserire il valore selezionati in 2 elementi .

Il tuo problema è che devi anche eseguire una richiesta al server tramite AJAX.
Per fare questo devi creare un "oggetto" per la richiesta, settare i parametri e la funzione che gestirà la ricezi0one della risposta ed eseguire tale richiesta...

Per capire meglio come/cosa fare guarda questa guida.

Se invece piu' che imparare hai bisogno subito di codice funzionante basta che lo dici e io ( o qualcun'altro del forum) ti proporrà una soluzione ad-hoc per te.

ciauz
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
daemon_nio
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1012
Iscrizione: lunedì 15 gennaio 2007, 14:18
Sesso: Maschile
Località: London
Contatti:

Re: form dati & php

Messaggio da daemon_nio »

Un altro consiglio che mi sento di darti è:
Se non vuoi buttarti subito nel fantastico ma difficile mondo dell'Ajax puoi pensare ad una soluzione un po' più semplice.

Puoi impostare sulla select una funzione javascript che parta all'evento onChange e che ricarichi la pagina.

Qualcosa di questo tipo:

Codice: Seleziona tutto

<script>
  // quando cambio il valore della select è come se cliccassi sul bottone del submit ma
  // in qualche modo (bisogna scriverlo in php sul server) indico che non voglio salvare i dati
  // ma solo mostrare una vista diversa ;D
  function reload()
    {document.forms.nomeForm.tipoReload='nomeCombo';
      document.forms.nomeForm.submit();
     }
</script>

...

<form action="..." method="..." name="nomeForm">
    <input type="hidden" name="tipoReload" value="" />
    ...
    <select name="nomeCombo" onchange="reload()">
        ...
    </select>
    ...
</form>

e poi non ti resta che gestire il form con il php e quindi controllare:

se ho il parametro tipoRelad == "nomeCombo" allora devo costruire una pagina, altrimenti ne devo costruire un'altra.
(in pratica differenzio i dati, effettuo l'azione solo quando non si tratta del caso reload, altrimenti non faccio altro che costruire una vista diversa, dove per vista intendo pagina HTML).

P.S. scusami ma prima mi era scappato il dito su invia e ho salvato un messaggio a metà :P
Ultima modifica di daemon_nio il sabato 27 settembre 2008, 15:02, modificato 1 volta in totale.
Sempre costruendo qualcosa di nuovo: Matag: The Game
Avatar utente
chiabgigi
Prode Principiante
Messaggi: 18
Iscrizione: venerdì 26 settembre 2008, 21:45
Località: lomellina
Contatti:

Re: form dati & php

Messaggio da chiabgigi »

@zoff
grazie proverò
@daemon_nio
grazie per il consiglio

vi sapro dire
ciao
gigi
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti