Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    come si costruisce questo ciclo???

    in una pagina php ho questo codice inserito in un ciclo che si ripete sin quando finisce l'elenco di tutti le 'cittaX'

    <?php <div align="justify"><?php echo $row_rs_itin_an_filtr['cittaX']; ?> </div>

    <?php <div align="justify"><?php echo $row_rs_itin_an_filtr['monumento']; ?> </div>

    pero' con questo codice la medesima città viene ripetuta per ogni singolo monumento cioè

    ASSISI
    eremo delle carceri
    ASSISI
    Basilica
    ASSISI
    S.Chiara
    PERUGIA
    Fontana
    BEVAGNA
    Teatro Romano

    come si fa il ciclo per ottenere qualcosa di simile a quanto riportato qui sotto? (cioè come si fa il ciclo dicendo di scrivere i monumenti tutti di seguito sin quando il valore cittaX non cambia?)

    ASSISI
    eremo delle carceri
    Basilica
    S.Chiara
    PERUGIA
    Fontana
    BEVAGNA
    Teatro Romano

  2. #2
    Utente di HTML.it L'avatar di JoeP
    Registrato dal
    May 2004
    Messaggi
    558
    Ti salvi il valore di 'città' in una variabile tipo $precedente. La inizializzi a stringa vuota "", poi dentro al ciclo la confronti con la nuova, e stampi il nome solo se diversa. Prima della fine del ciclo imposti quindi $precedente col nuovo nome della città. Spero di essermi spiegato.

  3. #3
    ho provato a fare cosi ma non funziona.....
    …forse il problema non è cosi’ semplice come sembra o forse sono io che sono impedito.

    In pratica ho questa query

    $query_rs_itin_an_filtr = sprintf("SELECT i.itinerarioanaliticoID, i.itinerario, i.giornoX, i.cittaX, i.profilocittaX, g.giornocardinale, m.monumento, FROM tbl_itinerarianalitici i LEFT JOIN tbl_giornicardinali g ON i.giornoX = g.giornoID LEFT JOIN tbl_monumenti m ON i.itinerarioanaliticoID = m.itinID WHERE giornoX = $_GET['giornoX'] AND itinerario = $_GET['nomeitinerario'] ORDER BY giornoX"……

    $rs_itin_an_filtr = mysql_query($query_rs_itin_an_filtr, $server) or die(mysql_error());
    $row_rs_itin_an_filtr = mysql_fetch_assoc($rs_itin_an_filtr);
    $totalRows_rs_itin_an_filtr = mysql_num_rows($rs_itin_an_filtr);

    E a seguire il codice che stampa la pagina (per ogni itinerario vi è l’intestazione con scritto primo giorno o secondo giorno, ecc. e sotto vengono stampate le città con il loro profilo, monumenti e le curiosità e, anche se per voi questo non ha alcuna rilevanza, il tutto suddiviso per giornate con la stampa di una barra dove vengono elencati dei numeri e ad ogni numero corrisponde un giorno di visita)

    <?php if ($totalRows_rs_itin_an_filtr > 0) { // Show if recordset not empty ?>
    <?php //questo codice verifica e stampa la giornata di visita visualizzando il numero cardinale
    $prec = '0';
    $cercag = isset($_REQUEST['giornoX']) ? $_REQUEST['giornoX'] : '';
    do {
    $oggi = $row_rs_itin_an_filtr['giornoX'];
    $oggicard = $row_rs_itin_an_filtr['giornocardinale'];
    if (($oggi != $cercag) && ($cercag != ''))
    continue;
    if ($prec != $oggi)
    {
    $prec = $oggi;
    print <<<GIORNOCARD
    <h5 align="center"><class="bodyText Stile61">$oggicard</h5>
    GIORNOCARD;
    }
    ?><ul>[*]
    //il codice qui sotto richiama il nome della città
    <h6 align="left" class="bodyText Stile59"><?php echo $row_rs_itin_an_filtr['cittaX']; ?>
    </h6>
    [/list]
    <table width="727" height="131" border="0" cellpadding="3" cellspacing="0">
    <tr>
    // il codice qui sotto richiama la descrizione della città
    <td width="727"><div align="justify"><span class="bodyText"><?php echo $row_rs_itin_an_filtr['profilocittaX']; ?></span></div>
    </tr>
    </table>
    <div align="justify"></div>
    <h5 align="left" class="bodyText Stile58 Stile60">
    Cosa vedere </h5> //da qui si fa un elenco dei monumenti da vedere in questa citta
    <div align="justify"><?php echo $row_rs_itin_an_filtr['monumento']; ?> </div>
    <?php } while ($row_rs_itin_an_filtr = mysql_fetch_assoc($rs_itin_an_filtr)); ?>


    Esplora gli altri giorni
    <table>
    <tr>
    <?php
    $giorni = array('1','2','3','4','5','6','7','8','9','10','11 ','12');
    $barra = '';
    $ultimog = $row_maxgiorno['MAX(giornoX)'];
    $questog = $_GET['giornoX'];
    $itin = $_GET['nomeitinerario'];
    foreach($giorni as $giorno)
    {
    if ($giorno == $questog)
    $barra .= <<<SENZAURL
    <td>$giorno<td>
    SENZAURL;
    else
    if ($giorno <= $ultimog)
    $barra .= <<<CONURL
    <td>$giorno</td>
    CONURL;
    }
    print $barra ;
    ?>
    </tr>
    </table>
    <?php } // Show if recordset not empty ?>

    dove e come devo fare le modifiche ?

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    nella query

    ORDER BY giornoX

    mettici

    ORDER BY giornoX,cittaX



    e se non dovesse funzionare

    Codice PHP:
    <?php if ($totalRows_rs_itin_an_filtr 0) { // Show if recordset not empty ?>
    <?php 
    //questo codice verifica e stampa la giornata di visita visualizzando il numero cardinale
    $prec '0';
    $citta_precedente="";
    $cercag = isset($_REQUEST['giornoX']) ? $_REQUEST['giornoX'] : '';

    do {
    $oggi $row_rs_itin_an_filtr['giornoX'];
    $oggicard $row_rs_itin_an_filtr['giornocardinale'];
    if ((
    $oggi != $cercag) && ($cercag != ''))
    continue;
    if (
    $prec != $oggi)
    {
    $prec $oggi;
    print <<<GIORNOCARD
    <h5 align="center"><class="bodyText Stile61">$oggicard</h5>
    GIORNOCARD;
    }
    ?><ul>[*]
    //il codice qui sotto richiama il nome della città
    <h6 align="left" class="bodyText Stile59"><?php if ($citta_precedente != $row_rs_itin_an_filtr['cittaX']) echo $row_rs_itin_an_filtr['cittaX']; ?>
    </h6>
    [/list]
    <table width="727" height="131" border="0" cellpadding="3" cellspacing="0">
    <tr>
    // il codice qui sotto richiama la descrizione della città
    <td width="727"><div align="justify"><span class="bodyText"><?php echo $row_rs_itin_an_filtr['profilocittaX']; ?></span></div>
    </tr>
    </table>
    <div align="justify"></div>
    <h5 align="left" class="bodyText Stile58 Stile60">
    Cosa vedere </h5> //da qui si fa un elenco dei monumenti da vedere in questa citta
    <div align="justify"><?php echo $row_rs_itin_an_filtr['monumento']; ?> </div>
    <?php $citta_precedente$row_rs_itin_an_filtr['cittaX']; ?>
    <?php 
    } while ($row_rs_itin_an_filtr mysql_fetch_assoc($rs_itin_an_filtr)); ?>


    [i][b]Esplora gli altri giorni[/b][/i]
    <table>
    <tr>
    <?php
    $giorni 
    = array('1','2','3','4','5','6','7','8','9','10','11','12');
    $barra '';
    $ultimog $row_maxgiorno['MAX(giornoX)'];
    $questog $_GET['giornoX'];
    $itin $_GET['nomeitinerario'];
    foreach(
    $giorni as $giorno)
    {
    if (
    $giorno == $questog)
    $barra .= <<<SENZAURL
    <td>[b]$giorno[/b]<td>
    SENZAURL;
    else
    if (
    $giorno <= $ultimog)
    $barra .= <<<CONURL
    <td>[url="itinerari_dettagli.php?nomeitinerario=$itin&giornoX=$giorno"]$giorno[/url]</td>
    CONURL;
    }
    print 
    $barra ;
    ?>
    </tr>
    </table>
    <?php // Show if recordset not empty ?>


    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Originariamente inviato da dottwatson
    nella query

    ORDER BY giornoX

    mettici

    ORDER BY giornoX,cittaX
    non funziona. il risultato non cambia....


    e se non dovesse funzionare

    Codice PHP:

    $citta_precedente="";

    .........

    //il codice qui sotto richiama il nome della città
    <h6 align="left" class="bodyText Stile59"><?php if ($citta_precedente != $row_rs_itin_an_filtr['cittaX']) echo $row_rs_itin_an_filtr['cittaX']; ?>
    ...................
    Cosa vedere </h5> //da qui si fa un elenco dei monumenti da vedere in questa citta
    <div align="justify"><?php echo $row_rs_itin_an_filtr['monumento']; ?> </div>
    <?php $citta_precedente$row_rs_itin_an_filtr['cittaX']; ?>
    <?php 
    } while ($row_rs_itin_an_filtr mysql_fetch_assoc($rs_itin_an_filtr)); ?>
    ....................


    nemmeno cosi...non so che errore ci sia perchè su netson dà cmq pagina bianca in caso di errori (ho lasciato solo le modifiche da fare...sono giuste no?) la pagina di test è su itinerarimondo.netsons.org

  6. #6
    Originariamente inviato da thenax
    non funziona. il risultato non cambia....



    nemmeno cosi...non so che errore ci sia perchè su netson dà cmq pagina bianca in caso di errori (ho lasciato solo le modifiche da fare...sono giuste no?) la pagina di test è su itinerarimondo.netsons.org
    mi correggo! funziona quasi bene ...c'è solo il problema che ora non ripete più volte il nome della città come giustamente deve essere pero' ripete più volte il punto dell'elenco puntato, il profilocittaX e 'Cosa vedere' prima di passare al secondo monumento....

    cosa si deve modificare per impedire cio'? grazie

  7. #7
    Originariamente inviato da thenax
    mi correggo! funziona quasi bene ...c'è solo il problema che ora non ripete più volte il nome della città come giustamente deve essere pero' ripete più volte il punto dell'elenco puntato, il profilocittaX e 'Cosa vedere' prima di passare al secondo monumento....

    cosa si deve modificare per impedire cio'? grazie
    ecco il codice da modificare ma non so dove!!

    Codice PHP:
    <?php if ($totalRows_rs_itin_an_filtr 0) { // ?>
    <?php
    $prec 
    '0';
    $citta_precedente="";
    $cercag = isset($_REQUEST['giornoX']) ? $_REQUEST['giornoX'] : '';
    do {
    $oggi $row_rs_itin_an_filtr['giornoX'];
    $oggicard $row_rs_itin_an_filtr['giornocardinale'];
    if ((
    $oggi != $cercag) && ($cercag != ''))
    continue;
    if (
    $prec != $oggi)
    {
    $prec $oggi;
    print <<<GIORNOCARD
    <h5 align="center"><class="bodyText Stile61">$oggicard</h5>
    GIORNOCARD;
    }
    ?>
    <ul>[*]
                        <h1 align="left" class="Stile59 bodyText">[b]<?php if ($citta_precedente != $row_rs_itin_an_filtr['cittaX']) echo $row_rs_itin_an_filtr['cittaX']; ?>                    [/b]</h1>
                      [/list]
                    <table width="727" height="131" border="0" cellpadding="3" cellspacing="0">
                      <tr>
                        <td width="727"><div align="justify"><span class="bodyText"><?php echo $row_rs_itin_an_filtr['profilocittaX']; ?></span></div>
                          

                        <div align="center"><span class="bodyText Stile59">[img]<?php echo $row_rs_itin_an_filtr['fotocittaX']; ?>[/img]</span></div></td>
                      </tr>
                  </table>
                    <h6 align="left" class="bodyText Stile59"></h6>
                    <div align="justify"></div>
                    <h5 align="left" class="bodyText Stile58 Stile60">
    Cosa vedere </h5> 
    <div align="justify">
                    

     <?php $row_rs_itin_an_filtr['monumento'] = 
    preg_replace("/([a-zA-Z]+:\/\/[a-z0-9\_\.\-]+".
    "[a-z]{2,6}[a-zA-Z0-9\/\*\_\-\?\&\%\=\,\.]+)/"'[url="$1"]sito ufficiale[/url]'$row_rs_itin_an_filtr['monumento']);
    echo 
    $row_rs_itin_an_filtr['monumento'];
     
    ?> </p>
                    </div>
                    <?php if (($row_rs_itin_an_filtr['curiositacittaX'] != "")) { // Show if recordset not empty ?>
                      <h5 align="left" class="bodyText  Stile58">

                      <span class="bodyText  Stile58 Stile60">Curiosit&agrave;</span></h5>
                      <div align="justify">
                        

    <?php echo $row_rs_itin_an_filtr['curiositacittaX']; ?> 

                        </p>
                  </div>
                      <?php // Show if recordset not empty ?>
                      <?php if (($row_rs_itin_an_filtr['appunti'] != "")) { // Show if recordset not empty ?>
                      <h5 align="left" class="bodyText  Stile58">

                      <span class="bodyText  Stile58 Stile60">Diario di Viaggio</span></h5>
                      <div align="justify">
                        

    <?php echo $row_rs_itin_an_filtr['appunti']; ?> 

                        </p>
                  </div>
                      <?php // Show if recordset not empty ?>

                      <?php $citta_precedente$row_rs_itin_an_filtr['cittaX']; ?>
    <?php 
    } while ($row_rs_itin_an_filtr mysql_fetch_assoc($rs_itin_an_filtr)); ?>
                    

                  [i][b]Esplora  gli altri giorni[/b][/i] 
                  <table>
                    <tr>
                      <?php
                $giorni 
    = array('1','2','3','4','5','6','7','8','9','10','11','12');
    $barra '';
    $ultimog $row_maxgiorno['MAX(giornoX)'];
    $questog $_GET['giornoX'];
    $itin $_GET['nomeitinerario'];
    foreach(
    $giorni as $giorno)
    {
    if (
    $giorno == $questog)
    $barra .= <<<SENZAURL
    <td>[b]$giorno[/b]<td>
    SENZAURL;
    else
    if (
    $giorno <= $ultimog)
    $barra .= <<<CONURL
    <td>[url="itinerari_dettagli.php?nomeitinerario=$itin&giornoX=$giorno"]$giorno[/url]</td>
    CONURL;
    }
    print 
    $barra ;
    ?>
      </tr>
                  </table>
                  <?php // Show if recordset not empty ?>

  8. #8
    a nessuno viene in mente qualche brillante idea?

  9. #9
    Alla fine ho adottato questa soluzione molto piu' semplice e soprattutto funzionante!

    Codice PHP:
    <div align="justify">
                    

     <?php
                    $sql_mon 
    "SELECT monumento, descrizione, itinID FROM tbl_monumenti WHERE $itin = itinID";
                    
    $query_mon mysql_query($sql_mon);
                    while (list(
    $monumento) = mysql_fetch_row($query_mon))
                    {
                    echo 
    "$monumento: ";
    }
     
    ?> </p>
                    </div>
    se ora volessi aggiungere la descrizione del monumento subito dopo i ":" come va modificato il codice? grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.