script eccezionale....bravo max!!!
script eccezionale....bravo max!!!
Mandagli un messaggio privatoOriginariamente inviato da biafuo83
script eccezionale....bravo max!!!![]()
E leggi il regolamento![]()
Benvenuto sul forum![]()
Il guaio per i poveri computers e' che sono gli uomini a comandarli.
Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
Consultate la discussione in rilievo: script / discussioni utili
Usate la funzione di Ricerca del Forum
ciao max...ho bisogno di te.
Premetto che ho letto tutti i post precedenti e il problema che sto esponendo è stato già presentato. Parlo del fatto che nel value della select vorremmo vedere il "Name" e non l'id.
Io ho provato a risolverlo in questo modo:
con questi 3 "post" prendo i valori delle tre select in "formato" id.
if ( isset($_POST['l3']) ) {
// Esegui operazioni
$citta=$_POST['l3'];
}
if ( isset($_POST['l2']) ) {
// Esegui operazioni
$provincia=$_POST['l2'];
}
if ( isset($_POST['l1']) ) {
// Esegui operazioni
$regione=$_POST['l1'];
}
a quel punto faccio una sorta di trasformazione e con questa query vado a fare la corrispondenza tra id e nome nelle tre tabelle famose l1, l2, l3:
$no2 ="SELECT l1_name FROM l1 WHERE l1_id='$regioneM'";
$ris = mysql_query($no2)or die("Errore nella query: " . mysql_error());
while($riga1 = mysql_fetch_array($ris)) {
$regioneM1= $riga1[l1_name];
}
$no4 ="SELECT l3_name FROM l3 WHERE l3_id='$cittaM'";
$ris2 = mysql_query($no4)or die("Errore nella query: " . mysql_error());
while($riga3 = mysql_fetch_array($ris2)) {
$cittaM1= $riga3[l3_name];
}
$malvio ="SELECT * FROM l4 WHERE id='$provinciaM'";
$malvio2 = mysql_query($malvio)or die("Errore nella query: " . mysql_error());
while($malvio3 = mysql_fetch_array($malvio2)) {
$provinciaM1= $malvio3[l4_name];
}
infine pronviciaM1, cittaM1, regioneM1 li vado a scrivere in un'altra tabella.
Ora all'inizio tutto sembrava perfetto ma ho notato che in realtà il campo provinciaM1 a volte viene scritto e a volte no, mentre Regione e Citta vengono sempre scritti.
In conclusione dico avete idea per quale motivo? oppure Max mi fai il miracolo e mi posti il codice che mi dia immediatamente nel Value della Select il nome e non l'id??
grazie in anticipo Biafuo83
Ciao a tutti e complmenti all'ideatore di questo script...
Ho testato il tutto su più browsers e questo è il risultato:
IE 6.0
----------------------
Select 1: OK
Select 2: Ok
Select 3: Ok
FLOCK 1.0.9
----------------------
Select 1: OK
Select 2: Ok
Select 3: Ok
MOZILLA FIREFOX 3.0.4
----------------------
Select 1: OK
Select 2: Ok
Select 3: Ok
OPERA 9.24
----------------------
Select 1: OK
Select 2: Loading...
Select 3: Disabilitato
SAFARI 3.1.2 (su windows xp)
----------------------
Select 1: OK
Select 2: Loading...
Select 3: Disabilitato
GOOGLE CHROME 1.0
----------------------
Select 1: OK
Select 2: Loading...
Select 3: Disabilitato
Spero di essere stato utile...
Cercando su internet ho trovato un database sql proto da esportare
popolato con tutte le Regioni Province e Comuni d'italia e scaricabile al seguente indirizzo web: http://www.sarnari.net/programmazion...atabase-mysql/
In seguito ho cambiato per esigenza personale i dati delle tabelle da così:
regioni____________ province____________comuni
idregione –>________idregione___________idcomune
nomeregione_______idprovincia –>_______idprovincia
__________________siglaprovincia_______nomecomune
__________________nomeprovincia
a così:
regioni_____________province____________comuni
id –>______________id_regione___________id
regione____________id –>_______________id_provincia
__________________siglaprovincia________comune
__________________provincia
di seguito ho modificato il codice per adattarlo al nuovo database nel seguente modo:
pagina getCity.php
pagina getState.phpcodice:<? include('inc/conn.inc.php'); include('inc/class/select.class.php'); $id = $_REQUEST['id']; //$id = 7; $obj = new select(); $comuni = $obj->getL3($id); $Js = ''; for($y=0;$y<count($comuni);$y++){ if($y < (count($comuni)-1)){ $end = ","; }else{ $end = ""; } $Js .= $comuni[$y]['id']."-".$comuni[$y]['comune'].$end; } echo $Js; ?>
pagina index.phpcodice:<? include('inc/conn.inc.php'); include('inc/class/select.class.php'); $id = $_REQUEST['id']; $obj = new select(); $regioni = $obj->getL1($id); $Js = ''; for($x=0; $x<count($regioni); $x++){ $province = $obj->getL2($regioni[$x]['id']); for($y=0;$y<count($province);$y++){ if($y < (count($province)-1)){ $end = ","; }else{ $end = ""; } $Js .= $province[$y]['id']."-".$province[$y]['provincia'].$end; } } //echo "text"; echo $Js; ?>
pagina getState.phpcodice:<? include('inc/conn.inc.php'); include('inc/class/select.class.php'); $obj = new select(); $regioni = $obj->getL1(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="it"> <head> <title>Select dinamiche con dati provenienti da Database</title> <script type="text/javascript"> var http = createRequestObject(); var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null; function createRequestObject() { var ro; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ ro = new ActiveXObject("Microsoft.XMLHTTP"); }else{ ro = new XMLHttpRequest(); } return ro; } function addElement(ogg,val,text){ var newOption; newOption = document.createElement("option"); newOption.value = val; newOption.text = text; ogg.add(newOption, where); } function removeElement(ogg){ if(ogg.options.length > 0){ while (ogg.options.length) { ogg.remove(0); } } } function disabledElement(ogg,val){ document.getElementById(ogg).disabled = val; } function loadingState(oggId){ var id = document.getElementById(oggId).value; var City = document.getElementById('comuni'); // inizializzazione Città removeElement(City); addElement(City,'sel','Seleziona una Città:'); disabledElement('comuni',true); http.open('GET','getState.php?id='+id, true); http.onreadystatechange = getState; http.send(null); } function loadingCity(oggId){ var id = document.getElementById(oggId).value; http.open('GET','getCity.php?id='+id, true); http.onreadystatechange = getCity; http.send(null); } function getState(){ var State = document.getElementById('province'); removeElement(State); id = document.getElementById('regioni').value; if(id == 'sel'){ disabledElement('province',true); addElement(State,'sel','Seleziona prima un Continente:'); }else{ if(http.readyState == 4){ if (http.status == 200) { var response = http.responseText; if(response == ''){ disabledElement('province',true); addElement(State,'sel','Nessuno Stato Presente'); }else{ removeElement(State); coppia = response.split(','); max = coppia.length; addElement(State,'sel','Seleziona uno Stato:'); for(x=0;x<max;x++){ val = coppia[x].split('-'); addElement(State,val[0],val[1]); } disabledElement('province',false); } } }else{ addElement(State,'sel','Loading...'); } } } function getCity(){ var City = document.getElementById('comuni'); removeElement(City); id = document.getElementById('province').value; if(id == 'sel'){ disabledElement('comuni',true); addElement(City,'sel','Seleziona una Città:'); }else{ if(http.readyState == 4){ if (http.status == 200) { var response = http.responseText; if(response == ''){ disabledElement('comuni',true); addElement(City,'sel','Nessuna voce'); }else{ removeElement(City); coppia = response.split(','); max = coppia.length; addElement(City,'sel','Seleziona una Città:'); for(x=0;x<max;x++){ val = coppia[x].split('-'); addElement(City,val[0],val[1]); } disabledElement('comuni',false); } } }else{ addElement(City,'sel','Loading...'); } } } </script> </head> <body> <form name="form"> <div id="content"> <div id="label1"> Select 1 </div> <div id="select1"> <select name="regioni" id="regioni" onChange="loadingState('regioni')"> <option value="sel" selected="selected">Seleziona un Continente:</option> <? for($x=0;$x<count($regioni);$x++){ ?> <option value="<?=$regioni[$x]['id']?>"><?=$regioni[$x]['regione']?></option> <? } ?> </select> </div> <div id="label2"> Select 2 </div> <div id="select2"> <select name="province" id="province" onChange="loadingCity('province')" disabled> <option value="sel" selected="selected">Seleziona uno Stato:</option> </select> </div> <div id="label3"> Select 3 </div> <div id="select3"> <select name="comuni" id="comuni" disabled> <option value="sel" selected="selected">Seleziona una Città:</option> </select> </div> </div> </form> </body> </html>
Ciao, ciao...codice:<?php class select{ function select(){ } function getL1($id=''){ if(!empty($id)){ $sSQL = "SELECT * FROM regioni WHERE id = $id"; }else{ $sSQL = "SELECT * FROM regioni Order by id"; } $ris = mysql_query($sSQL); while($row = mysql_fetch_assoc($ris)){ $list[] = array('id' => $row["id"], 'regione' => $row["regione"]); } return $list; } function getL2($id){ $sSQL = "SELECT * FROM province WHERE id_regione = $id Order By id"; $ris = mysql_query($sSQL); while ($row = mysql_fetch_assoc($ris)) { $list[] = array('id' => $row["id"], 'provincia' => $row["provincia"]); } return $list; } function getL3($id){ $sSQL = "SELECT * FROM comuni WHERE id_provincia = $id Order By id"; $ris = mysql_query($sSQL); while ($row = mysql_fetch_assoc($ris)) { $list[] = array('id' => $row["id"], 'comune' => $row["comune"]); } return $list; } } ?>![]()
Intendevo dire pronto da importare... :berto:Cercando su internet ho trovato un database sql proto da esportare...
Ciao,
c'è una soluzione per rendere compatibile questo script anche per i browser come safari, chrome, opera o devo studiarmi un'altra soluzione senza ajax ma solo php?
ho fatto alcune prove ma senza trovare una soluzione!!!
Ciao a tutti.
Allora io ho un problemino per una modifica su questo bello script. Vorrei introdurre una dinamicità di più, ovvero:
partendo da questo pezzo di codice:
...io vorrei poter rendere dinamica quelcodice:var http = createRequestObject(); var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null; function createRequestObject() { var ro; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ ro = new ActiveXObject("Microsoft.XMLHTTP"); }else{ ro = new XMLHttpRequest(); } return ro; } function getstructure(){ var unita = document.getElementById('unita'); var valore = unita.value; var id_unita = document.getElementById('id_unita'); if (valore != '') { http.open('GET','get.php?id='+valore, true); http.onreadystatechange = getState; http.send(null); } } function getState(){ var newOption; var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null; var State = document.getElementById('id_unita'); while (State.options.length) { State.remove(0); } [...]
e farlo diventare qualcosa tipo:codice:var State = document.getElementById('id_unita');
...quindi ho pensato di passare degli argomenti a getstructure() e getState(), ma quando provo a passare argomenti a getState(), modificando questo:codice:var State = document.getElementById(id);
in qualcosa dle genere:codice:http.onreadystatechange = getState;
mi restituisce come errore 'Tipo non corrispondente'.codice:http.onreadystatechange = getState(id);
Come faccio?
Purtroppo mi è indispensabile trasformare i campi fissi in variabili, perchè devo creare una pagina con più coppie di menu a tendina identiche, ma indipendenti tra loro.
Grazie mille!!![]()
Per puro caso, ho trovato la soluzione in questo topic:
http://forum.html.it/forum/showthrea...highlight=ajax
Posto la stringa di codice funzionante
codice:http.onreadystatechange = function() { getState(id); };
Scusa ma di javascript non ne capisco molto (nonostante sto cercando di imparare) ma dove andrebbe scritta la riga che hai postato?
Ho letto e riletto tutti i post, ho provato a fare copia incolla di tutto, è ormail 15 giorni ma non rieco a fare funzionare niente.
vedo che tutti siete contenti e non capisco dove sbaglio, questo regioni, province comuni mi sarebbe indispensabile per dei siti dove devo registrare utenti.
come posso fare a capire??, ho scaricato il DB dal sito
indicato da Rikka75 poi ho coppiato i sorgenti che ha allegato ma non funziona niente
se potete aiutarmi sarei grato Luigi
idem ho provato pure io a copiare esattamente quello postato da rikka75 ma una volta selezionato lo stato(regione) sulla provincia appare "loading.." e poi diene disabilitato come se fosse passato un attributo non valido o non riuscisse a caricare le informazioni dal db.
attualmente lo sto testando su IE7
Ciao a tutti, io l'ho modificato secondo le mie esigenze qualche mese fa e sono sicuro che funzionava sia con IE7 che con Firefox (non ricordo la versione) adesso l'ho ripreso in mano e ho visto che con Firefox 3.5.3 non funziona, mentre con IE8 (il 7 non l'ho più) funziona
Vivrò una vita intera e fortunatamente morirò una volta sola
veramente con $_REQUEST non è che acchiappa valori, anzi per la verità non ne acchiappa manco uno.