Pagina 1 di 1

form dati & php

Inviato: venerdì 26 settembre 2008, 22:11
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

Re: form dati & php

Inviato: sabato 27 settembre 2008, 2:21
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à...

Re: form dati & php

Inviato: sabato 27 settembre 2008, 12:53
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

Re: form dati & php

Inviato: sabato 27 settembre 2008, 14:21
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

Re: form dati & php

Inviato: sabato 27 settembre 2008, 14:54
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

Re: form dati & php

Inviato: sabato 27 settembre 2008, 14:58
da chiabgigi
@zoff
grazie proverò
@daemon_nio
grazie per il consiglio

vi sapro dire
ciao