Newsgroup: it.comp.www.php
Titolo: errore di sintassi!

vorrei che la riga <option value richiamasse al verificarsi di una 
determinata condizione, il nome della nazione. qualcuno mi sa dire dove 
sbaglio?
<select name="nomenazione" id="nomenazione" onchange="window.location = 
('<?php echo $_SERVER['PHP_SELF']; 
?>?nazioneID='+nomenazione.options[this.selectedIndex].value)">
 <?php if($_GET['regioneID'] && $_GET['regioneID'] > 0)  //se hai 
selezionato una regione
 {
 <option value=echo $row_rs_regione['nazione']</option>   //allora richiama 
la sua nazione
 }
 else       // altrimenti
 {
  <option value="null">Tutti</option>  //imposta "tutti" in automatico
  } ?> 

   } ?> 
MTC,
David
-- 
 . ''`.  Debian packager! | 
http://snipurl.com/gofoxygo/
 : :'  :   User #334216   |  
http://www.hanskalabs.net/
 `. `'`   GPG: 1392B174   | 
http://www.debianizzati.org/
   `-   2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174

 value='".$row_rs_regione['nazione']."'>".$row_rs_regione['nazione']."</option>";
ok grazie, digerisce il codice ma senza ruttino! l'elenco delle nazioni mi 
rimane bianco.....
boh! 

Marco ha scritto:

non si capisce granché ma se quello che vuoi fare è selezionare uno dei 
valori della select da php devi attraversare la stessa con un ciclo e 
quando il valore (value) coincide con quello che vuoi selezionare 
imposti l'attributo "selected" dentro il tag


sě! č proprio quello che vorrei fare..
diciamo allora che dovrebbe essere piu o meno cosi quello che dici tu:
if($_GET['regioneID'] && $_GET['regioneID'] == $row_rs_nazioni['regione'])
{
?>
      <option value="<?php echo $row_rs_nazioni['nazioneID']?>" 
selected="selected"><?php echo $row_rs_nazioni['nomenazione']?></option>
      <?php
   } else {
?>
<option value="<?php echo $row_rs_nazioni['nazioneID']?>"><?php echo 
$row_rs_nazioni['nomenazione']?></option>
ma non so come inserire questo ciclo all'interno di quest'altro...
<tr>
    <td nowrap="nowrap"><em>Per Nazione</em></td>
    <td><select name="nomenazione" id="nomenazione" 
onchange="window.location = ('<?php echo $_SERVER['PHP_SELF']; 
?>?nazioneID='+nomenazione.options[this.selectedIndex].value)">
 <?php
 if($_GET['regioneID'] && $_GET['regioneID'] > 0)
 {
 echo "<option 
value='".$row_rs_regione['nazione']."'>".$row_rs_regione['nazione']."</option>";
 }
 else
 {
  echo "<option value='null'>Tutte</option>";
  }
  ?>
  <?php
do {
if($_GET['nazioneID'] && $_GET['nazioneID'] == $row_rs_nazioni['nazioneID'])
{
?>
<option value="<?php echo $row_rs_nazioni['nazioneID']?>" 
selected="selected"><?php echo $row_rs_nazioni['nomenazione']?></option>
<?php
} else {
?>
<option value="<?php echo $row_rs_nazioni['nazioneID']?>"><?php echo 
$row_rs_nazioni['nomenazione']?></option>
<?php
}
} while ($row_rs_nazioni = mysql_fetch_assoc($rs_nazioni));
  $rows = mysql_num_rows($rs_nazioni);
  if($rows > 0) {
      mysql_data_seek($rs_nazioni, 0);
   $row_rs_nazioni = mysql_fetch_assoc($rs_nazioni);
  }
?>
    </select></td>
  </tr>
  <tr> 

 sì! è proprio quello che vorrei fare..

secondo me è meglio se ti costruisci la select tutta da php:
$myselect = "<select name=..>";
//supponiamo che $query_nazioni sia la query elenco nazioni..
while($result_nazioni =  mysql_fetch_row($query_nazioni))
{
	$myselect .= "<option value=\"".$result_nazioni['nazione_id']."\"";
	if($result_nazioni['nazione_id'] ==  $_GET['nazioneID'])
		$myselect .= " selected ";
	$myselect .= ">".$result_nazioni['nazione']."</option>";
}
$myselect .= "</select>";
echo $myselect;
ci sarà forse qualche errore ma almeno spero di averti reso l'idea

 secondo me è meglio se ti costruisci la select tutta da php:
Anche io ho fatto esattamente in questa maniera per un caso analogo, mi 
sembra la soluzione migliore a livello di concetto.
Però per la miseria che quoting esagerato!

>
io ho fatto cosi ma mi dà parse errore
     </select>
    </form>    </td>
  </tr>
  <tr>
    <td nowrap="nowrap"><em>Per Nazione</em></td>
    <td><?php $myselect = "<select name="nomenazione" id="nomenazione">";
 while ($row_rs_nazioni = mysql_fetch_assoc($rs_nazioni))
 {
 $myselect .="<option value=\"".$row_rs_nazioni['nazioneID']."\"";
 if($row_rs_nazioni['nazioneID'] == $_GET['nazioneID'])
 $myselect .=" selected ";
 $myselect .=">".$row_rs_nazioni['nomenazione']."</option>";
 }
 $myselect .= "</select>";
 echo $myselect;
 $rows = mysql_num_rows($rs_nazioni);
  if($rows > 0) {
      mysql_data_seek($rs_nazioni, 0);
   $row_rs_nazioni = mysql_fetch_assoc($rs_nazioni);
  }
?>
</td> 

  
all'occhio balza subito la mancanza degli escape tipo
  name=\"nomenazione\"

 ?php $myselect = "<select name="nomenazione" id="nomenazione">";
Proteggi i doppi apici.

 ha scritto nel messaggio 
news:suppanews-9FEE5...@nntp.aioe.org...

ok ma non funziona comunque cioè se seleziono regione la casella nazione non 
cambia pur essendo giusta la query! manca qualcosa? 

Marco ha scritto:

si e ti sarà sempre molto utile: imparare ad isolare l'errore o il problema
siccome mi pare non ti dia più errori vuol dire che la condizione if non 
viene mai soddisfatta.
Allora fai cosi:
  if($row_rs_nazioni['nazioneID'] == $_GET['nazioneID'])
{
	echo "trovata!!: ".$row_rs_nazioni['nazioneID'];
   $myselect .=" selected ";
}
se non leggi "trovata!" nella pagina.. trai le conclusioni

>> Proteggi i doppi apici.
ma è giusto che
<select name="nomenazione" id="nomenazione" onchange="window.location =
('<?php echo $_SERVER['PHP_SELF'];
?>?nazioneID='+nomenazione.options[this.selectedIndex].value)">
diventi
<?php $myselect = "select name=\"nomenazione\" id=\"nomenazione\" 
onchange=\"window.location = echo 
$_SERVER['PHP_SELF'];?nazioneID='+nomenazione.options[this.selectedIndex].value)">
?


Newsgroups: it.comp.www.php
Sent: Wednesday, May 02, 2007 2:27 PM
Subject: Re: errore di sintassi!
alla fine ho ottenuto quello che volevo e lasciando quasi tutto invariato 
seppure con errore di duplicazione
(scegliendo umbria mi spunta due volte italia). come mai?
la query sulle nazioni modificata è questa
mysql_select_db($database_server, $server);
if($_GET['regioneID'] && $_GET['regioneID'] > 0)
{
$query_rs_nazioni = "SELECT nazioneID, nomenazione, nazione, regioneID FROM
tbl_nazioni, tbl_regioniitaliane WHERE tbl_nazioni.nazioneID =
tbl_regioniitaliane.nazione AND tbl_regioniitaliane.regioneID =
$_GET[regioneID]";
} else {
$query_rs_nazioni = "SELECT nazioneID, nomenazione FROM tbl_nazioni ORDER BY
nomenazione ASC";
}$rs_nazioni = mysql_query($query_rs_nazioni, $server) or
die(mysql_error());
$row_rs_nazioni = mysql_fetch_assoc($rs_nazioni);
$totalRows_rs_nazioni = mysql_num_rows($rs_nazioni);
dove gli dico che se ho selezionato una regione (variabile url) allora deve
tirare fuori solo la nazione relativa a quella regione
invece il modulo è questo
    <td nowrap="nowrap"><em>Per Nazione</em></td>
    <td><select name="nomenazione" id="nomenazione"
onchange="window.location = ('<?php echo $_SERVER['PHP_SELF'];
?>?nazioneID='+nomenazione.options[this.selectedIndex].value)">
 <?php
 if($_GET['regioneID'] && $_GET['regioneID'] > 0)
 {
 echo "<option
value='".$row_rs_nazioni['nazioneID']."'>".$row_rs_nazioni['nomenazione']."</option>";
 }
 else
 {
  echo "<option value='null'>Tutte</option>";
  }
  ?>
  <?php
do {
if($_GET['nazioneID'] && $_GET['nazioneID'] == $row_rs_nazioni['nazioneID'])
{
?>
<option value="<?php echo $row_rs_nazioni['nazioneID']?>"
selected="selected"><?php echo $row_rs_nazioni['nomenazione']?></option>
<?php
} else {
?>
<option value="<?php echo $row_rs_nazioni['nazioneID']?>"><?php echo
$row_rs_nazioni['nomenazione']?></option>
<?php
}
} while ($row_rs_nazioni = mysql_fetch_assoc($rs_nazioni));
  $rows = mysql_num_rows($rs_nazioni);
  if($rows > 0) {
      mysql_data_seek($rs_nazioni, 0);
   $row_rs_nazioni = mysql_fetch_assoc($rs_nazioni);
  }
?>
    </select></td>

 ?
che casino senza avere tutto il codice sottomano
Prova cosi separando la parte javascript con una funzione
echo "\n <script type=\"text/JavaScript\"> \n";
echo "function RldPage(selectedvalue){  \n ";
echo "window.location = 
\"".$_SERVER['PHP_SELF']."?nazioneID=\"+selectedvalue+\"\";\n";
echo "} \n ";
echo "</script>\n";
$myselect = "<select name=\"nomenazione\" id=\"nomenazione\"
  onchange=\"RldPage(nomenazione.options[this.selectedIndex].value);\">";
nella pagina e nell'url del browser verifica sempre  se i parmentri 
passano bene o no altrimenti diventi pazzo

 news:46386265$0$7737$5fc...@news.tiscali.it...
ilc odice ora è     questo
  <tr>
    <td nowrap="nowrap"><em>Per Nazione</em></td>
    <td>
 <?php
 echo "\n <script type=\"text/JavaScript\"> \n";
echo "function RldPage(selectedvalue){  \n ";
echo "window.location =
\"".$_SERVER['PHP_SELF']."?nazioneID=\"+selectedvalue+\"\";\n";
echo "} \n ";
echo "</script>\n";
$myselect = "<select name=\"nomenazione\" id=\"nomenazione\"
  onchange=\"RldPage(nomenazione.options[this.selectedIndex].value);\">";
  while ($row_rs_nazioni = mysql_fetch_assoc($rs_nazioni))
 {
 $myselect .="<option value=\"".$row_rs_nazioni['nazioneID']."\"";
 if($row_rs_nazioni['nazioneID'] == $_GET['nazioneID'])
 $myselect .=" selected ";
 $myselect .=">".$row_rs_nazioni['nomenazione']."</option>";
 }
 $myselect .= "</select>";
 echo $myselect;
 $rows = mysql_num_rows($rs_nazioni);
  if($rows > 0) {
      mysql_data_seek($rs_nazioni, 0);
   $row_rs_nazioni = mysql_fetch_assoc($rs_nazioni);
  }
?>
    </select></td>
  </tr>
il problema è che ora non spunta più già da subito l'opzione "tutte" 
collegato al valore "null"

....
meglio se posti tutta la pagina a questo punto. anche quella sul web magari

 ha scritto nel messaggio 
news:4639038a$0$7737$5fc...@news.tiscali.it...


news:4639038a$0$7737$5fc...@news.tiscali.it...

in effetti! cosi mi sembra sempre piu un casino ...
allora in pratica aprendo la pagina le selezioni preimpostate in automatico
sono "Tutte" sia per nazione che per regione (tutte=null) se io scelgo una
regione tra tutte quelle presenti (ad esempio umbria o regione di bruxelles)
io vorrei che nell'elenco "per nazione" mi spuntasse in automatico Italia
(per l'umbria) o Belgio (per bruxelles) ma se poi dovessi andare ad  aprire
la tendina delle nazioni l'elenco deve rimanere completo (cioè ci sia la
possibilita di selezionare gli itinerari di "tutte" le nazioni o una di esse
comunque)
allora la pagina è  
http://itinerarimondo.netsons.org/itinerari.php
le tabelle sono
tbl_nazioni
nazioneID      nomenazione
1                    Italia
2                    Belgio
3                    Regno Unito
4                    Irlanda
5                    Germania
tbl_regioniitaliane (cambiero' nome dopo....)
regioneID       nomeregione       nazione
1                    Umbria                    1
2                    Toscana                  1
3                    Emilia Romagna       1
4                    Regione di Bruxelles 2
quello che voglio dirgli è che se seleziono una regione nell'elenco "per
regione" allora la prima selezione automatica dell'elenco "per nazione" deve
corrispondere alla nazione del paese selezionato altrimenti deve essere
selezionato su "Tutte"
bisogna tenere in considerazione anche il fatto che non tutte le nazioni
hanno una regione e se seleziono una regione abbiamo una variabile url
denominata "regioneID". (pensavo a una query del tipo seleziona nomenazione
dove nazioneID = nazione e variabile url = regione ID che mi pare
funzionasse ma se selezionavo umbria, l'italia compariva due volte e il
"Tutte" scompariva completamente.
il codice della pagina è questo
queste sono le query
<?php..............
mysql_select_db($database_server, $server);
if($_GET['nazioneID'] && $_GET['nazioneID'] > 0)
{
$query_rs_nomeitinerario = "SELECT itinerarioID, nomeitinerario, nazioni,
regione FROM tbl_itinerari WHERE nazioni = $_GET[nazioneID] ORDER BY
nomeitinerario ASC";
}
elseif($_GET['regioneID'] && $_GET['regioneID'] > 0)
{
$query_rs_nomeitinerario = "SELECT itinerarioID, nomeitinerario, nazioni,
regione FROM tbl_itinerari WHERE regione = $_GET[regioneID] ORDER BY
nomeitinerario ASC";
} else {
$query_rs_nomeitinerario = "SELECT itinerarioID, nomeitinerario, nazioni,
regione FROM tbl_itinerari ORDER BY nomeitinerario ASC";
}
$rs_nomeitinerario = mysql_query($query_rs_nomeitinerario, $server) or
die(mysql_error());
$row_rs_nomeitinerario = mysql_fetch_assoc($rs_nomeitinerario);
$totalRows_rs_nomeitinerario = mysql_num_rows($rs_nomeitinerario);
$query_rs_nazioni = "SELECT nazioneID, nomenazione FROM tbl_nazioni ORDER BY
nomenazione ASC";
$rs_nazioni = mysql_query($query_rs_nazioni, $server) or die(mysql_error());
$row_rs_nazioni = mysql_fetch_assoc($rs_nazioni);
$totalRows_rs_nazioni = mysql_num_rows($rs_nazioni);
$query_rs_continente = "SELECT * FROM tbl_continenti";
$rs_continente = mysql_query($query_rs_continente, $server) or
die(mysql_error());
$row_rs_continente = mysql_fetch_assoc($rs_continente);
$totalRows_rs_continente = mysql_num_rows($rs_continente);
if($_GET['nazioneID'] && $_GET['nazioneID'] > 0)
{
$query_rs_regioni = "SELECT regioneID, nomeregione, nazione FROM
tbl_regioniitaliane WHERE nazione = $_GET[nazioneID] ORDER BY nomeregione
ASC";
} else {
$query_rs_regioni = "SELECT regioneID, nomeregione, nazione FROM
tbl_regioniitaliane ORDER BY nomeregione ASC";
}$rs_regioni = mysql_query($query_rs_regioni, $server) or
die(mysql_error());
$row_rs_regioni = mysql_fetch_assoc($rs_regioni);
$totalRows_rs_regioni = mysql_num_rows($rs_regioni);
?>
questo è tutta la tabella contenente gli elenchi di scelta
<table width="95%" border="1" align="center" cellpadding="3"
cellspacing="0">
  <tr>
    <td nowrap="nowrap"><em>Per Continente </em></td>
    <td width="59%"><form id="frm_percontinente" name="frm_percontinente"
method="post" action="">
      <select name="select">
        <?php
do {
?>
        <option value="<?php echo
$row_rs_continente['continenteID']?>"><?php echo
$row_rs_continente['nomecontinente']?></option>
        <?php
} while ($row_rs_continente = mysql_fetch_assoc($rs_continente));
  $rows = mysql_num_rows($rs_continente);
  if($rows > 0) {
      mysql_data_seek($rs_continente, 0);
   $row_rs_continente = mysql_fetch_assoc($rs_continente);
  }
?>
      </select>
    </form>    </td>
  </tr>
  <tr>
    <td nowrap="nowrap"><em>Per Nazione</em></td>
    <td><select name="nomenazione" id="nomenazione"
onchange="window.location = ('<?php echo $_SERVER['PHP_SELF'];
?>?nazioneID='+nomenazione.options[this.selectedIndex].value)">
  <option value='null'>Tutte</option>  <?php
do {
if($_GET['nazioneID'] && $_GET['nazioneID'] == $row_rs_nazioni['nazioneID'])
{
?>
<option value="<?php echo $row_rs_nazioni['nazioneID']?>"
selected="selected"><?php echo $row_rs_nazioni['nomenazione']?></option>
<?php
} else {
?>
<option value="<?php echo $row_rs_nazioni['nazioneID']?>"><?php echo
$row_rs_nazioni['nomenazione']?></option>
<?php
}
} while ($row_rs_nazioni = mysql_fetch_assoc($rs_nazioni));
  $rows = mysql_num_rows($rs_nazioni);
  if($rows > 0) {
      mysql_data_seek($rs_nazioni, 0);
   $row_rs_nazioni = mysql_fetch_assoc($rs_nazioni);
  }
?>
    </select></td>
  </tr>
  <tr>
    <td nowrap="nowrap">Per Regione </td>
    <td><select name="nomeregione" id="nomeregione"
onchange="window.location = ('<?php echo $_SERVER['PHP_SELF'];
?>?regioneID='+nomeregione.options[this.selectedIndex].value)">
  <option value="null">Tutte</option>
      <?php
do {
  if($_GET['regioneID'] && $_GET['regioneID'] ==
$row_rs_regioni['regioneID'])
{
?>
      <option value="<?php echo $row_rs_regioni['regioneID']?>"
selected="selected"><?php echo $row_rs_regioni['nomeregione']?></option>
      <?php
   } else {
?>
<option value="<?php echo $row_rs_regioni['regioneID']?>"><?php echo
$row_rs_regioni['nomeregione']?></option>
<?php
}
} while ($row_rs_regioni = mysql_fetch_assoc($rs_regioni));
  $rows = mysql_num_rows($rs_regioni);
  if($rows > 0) {
      mysql_data_seek($rs_regioni, 0);
   $row_rs_regioni = mysql_fetch_assoc($rs_regioni);
  }
?>
    </select>
</td>
  </tr>
  <tr>
    <td nowrap="nowrap"><em>Scegli tra tutti gli itinerari </em></td>
    <td><form id="frm_peritinerario" name="frm_peritinerario" method="get"
action="itinerari_dettagli.php">
      <select name="nomeitinerario" id="nomeitinerario">
<option value="null">-------</option>
<?php
do {
?><option value="<?php echo $row_rs_nomeitinerario['itinerarioID']?>"
selected="selected"><?php echo
$row_rs_nomeitinerario['nomeitinerario']?></option>
<?php
} while ($row_rs_nomeitinerario = mysql_fetch_assoc($rs_nomeitinerario));
$rows = mysql_num_rows($rs_nomeitinerario);
if($rows > 0) {
mysql_data_seek($rs_nomeitinerario, 0);
$row_rs_nomeitinerario = mysql_fetch_assoc($rs_nomeitinerario);
}
?>
        </select>
      <input name="Submit" type="submit" id="Submit" value="Submit" />
      <input name="giornoX" type="hidden" id="giornoX" value="1" />
    </form>    </td>
  </tr>
</table>
grazie della pazienza infinita
ciao Marco

 allora in pratica aprendo la pagina le selezioni ...................
mamma mia ora capisco. Quello che chiedi è piuttosto complesso da 
realizzare anche se sulla carta sembra semplice.
Purtroppo non ho il tempo di scrivertelo e provarlo.
In ogni caso penso sia  piu logico un percorso di scelta progressivo 
nazione - regione - città ecc.. e non bidirezionale come vuoi fare tu e 
  tra le altre cose è molto piu semplice da realizzare

 realizzare
allora non sono io che sono tonto! 

 ha scritto nel messaggio 
news:4639f41a$0$20803$5fc...@news.tiscali.it...

più che altro, come mai il modulo non funziona su firefox???