mistero di msql_query

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
Non sapevo dove post in quanto il problema riguara php e/o ajax e/o html. Penso inoltre che il più adatto (poveretto sempre lui) a darmi una risposta sia eliox in quanto si tratta di una modifica al suo tutoria (vedi mie post selec di select).
Ho modificato il tutorial nella parte relativa a select.html (come vedrete non perche voglia aggiungere regioni all'italia, ma per usarlo in altri casi)

questo è il codice parziale

Codice:
<form name="form1" method="post" action="scrivi.php">
<p>Regione:<br> 
<select onChange="GetProvince(this.options[this.selectedIndex].text)" id="regione" name="regione">
      <option value="0"></option>
	  <?php 
		$cerca_R="select * from regioni order by id_R";
		$query_R= mysql_query($cerca_R);
		while ($riga_R= mysql_fetch_array($query_R)){
			$REG=$riga_R[regione];
			echo "<option value=\"".$REG."\>".$REG."</option>";
		}
		mysql_close();
	  ?>
    </select>
    <br>
    Provincia:<br> 
    <select id="provincia" name="provincia">
    </select>
    <br>
......
e questo il mistero:

la tabella "regioni" del DB contiene tutte le regioni in ordine alfabetico /da Abruzzo a Veneto)
la tabella "province" contine tutte le province

chiamo select.php

appaiono le select

le regioni invece di 20 appaiono solo una decina e la prima è Basilicata (abruzzo dove è sparito)

delle regioni che appaiono selezionando appaioni (nella successiva selct ) le relative province

se faccio un'interrogazione (con un'altra pagina) a video ho tutto

ABRUZZO
tutte
chieti
l'aquila
BASILICATA
..... eccc

perche invece nella selct spariscono (anche se politicamente potrebbe essere un vantaggio)
 
Prova
PHP:
$query_R= mysql_query($cerca_R) or die (mysql_error());
e vedi se tu restituisce un errore.

Poi stampa

PHP:
print_r ($query_R);

e vedi se nell'array sono contenute tutte le regioni.

Inoltre ti consiglio di utilizzare una forma tipo:

PHP:
$REG=stripslashes($riga_R['regione']);
per gestire eventuali slash da accenti.

Infine non inserie mysql_close() fino a quando il tutto non funziona bene.
 
ho fatto come dicevi un passo uno alla volta

$query_R= mysql_query($cerca_R) or die (mysql_error());

nessun errore, poi

print_r ($query_R);

non vedo niente, poi

$REG=stripslashes($riga_R['regione']);

ininfluente, poi Sant ELiox ha fatto u miraculo

Infine non inserie mysql_close() fino ...

tolto il close tutto funziona. PERCHE'?????

parrebbe che il close si attivasse non alla fine della tabella (legge l'ultima regione) ma a meta per poi disattivarsi??????????
 
scusa ritiro quanto ho detto
da cogl.. dopo le correzioni ho chiamato per errore select.html per forza funzionava
ma quando ho chiamato select.php anche tolto close le regioni diventano 10 vine saltata la prima si visualizza la seconda e la terza si latnano le intermedie e si visualizzano le ultime 8
ho provato a chiamre il DB da altro scripit smplicissimo con solo query, while ed echo (vedi sotto) e le regioni e le province ci sono tutte.

Codice:
$query_R= mysql_query($cerca_R);
while ($riga_R= mysql_fetch_array($query_R)){ // primo while regioni
   $IDR=$riga_R[id_R]; //id primaria regioni
   $REG=$riga_R[regione];
   echo $REG." ".$IDR."<br>";
   $cerca_P= "select * from province where id_R='".$IDR."' order by id_P";
   $query_P=mysql_query($cerca_P);
   while ($riga_P= mysql_fetch_array($query_P)){ // secondo while province
		$IDP=$riga_P[id_P];// id primaria province
		$PRO=$riga_P[provincia];
		echo "&nbsp;&nbsp;".$PRO."&nbsp;&nbsp;".$IDP."<br>";
		//$elenco .= "\"".$PRO."\",";
		$elenco .= $PRO.",";
    }// fine secondo while
	//echo "elenco ".$elenco."<br>";
      $elenco = substr($elenco, 0,-1); // tolgo l’ultima virgola
	  //echo $elenco."<br>";
	  
      $province[$REG]=array($elenco);
	  $elenco="";
	  
   /*}// fine secondo while */
}// fine primo while

non capisco perchè debba fare il salto una cosa o funziona o non funziona. Verificato anche le tabelle con msqyadmin e tutto ok
 
Eureka

l'ho sempre detto che i PC sono estremante stupidi, ma mai come i loro pedroni

un piccolo merito ce l'ha anche sant eliox che mi ha fatto rivedere tutto il codice che posto. chi indovina l'errore?

Codice:
echo "<option value=\"".$REG."\">".$REG."</option>";

p.s. l'errore non è qui, qui è stato corretto

PREMIO
i primi tre che mi mandano una E-mail mettero il link del loro sito sul mio
([email protected])
 
Il maledetto escape!

A proposito, un piccolo errore l'hai fatto anche nel titolo del 3d :)
 

Discussioni simili