[PHP] query all'interno di un ciclo while

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti.
Situazione:
ho una pagina (corsi.php) che presenta il calendario delle lezioni ordinate per anno, poi per mese e infine per giorno.
Ogni singola lezione ha un codice unico.
Ho aggiunto una tabella al mio db per i partner di ogni singola lezione con due campi: "id_lezione" e "partner".
Adesso mi serve che mi si aggiunga una riga di testo col partner (se c'è) in un determinato punto tra i dati della singola lezione.
Quindi all'interno del ciclo while che mi estrae i dati della singola lezione ho inserito questo:
Codice:
$part = ("SELECT partner FROM calendario_partner WHERE id_lezione = '$id'");
         $partnerok = mysql_query($part);
         $partnertrovato = mysql_result($partnerok, 0);
Poi naturalmente ho aggiunto un echo $partnertrovato dove mi serve che appaia la riga.
Lasciamo perdere per ora i controlli che aggiungerò poi per visualizzare la riga solo se è valorizzata o altri affinamenti.
Utilizzando il costrutto di cui sopra, ricevo un errore.
Se lo cambio utilizzando fetch_assoc con un ciclo while (perchè non mi ricordo mai come fare quando sono certo che il risultato sia di una sola riga) funziona correttamente con la prima lezione della tabella con un partner, ma poi mi riporta lo stesso partner su tutte le lezioni successive...
Non so se mi sono spiegato bene.
Se serve posto tutta la pagina, che è lunghetta (sono 513 righe)...
Dove sbaglio?
 
Dove sbaglio?
non facendo una query unica che estrae tutti i dati che servono

pubblicare 3 righe di codice che ottengono un unico risultato ... non puoi pretendere che leggiamo il tuo codice non pubblicato
 
beh, hai ragione...
Non mi fa includere tutta la pagina perchè troppo lunga, comunque questa è la parte di codice su cui sto avendo il problema:
PHP:
<table>
    
      <?php

         /*visualizzo i dati delle lezioni */
    
         $i=0;
           while ($i < $num) {
        $id=mysql_result($fatto,$i,"id_lezione");
           $giorno=mysql_result($fatto,$i,"giorno");
           $weekday=mysql_result($fatto,$i,"weekday");
           $t7invita=mysql_result($fatto,$i,"t7invita");
           $chef=mysql_result($fatto,$i,"chef");
           $titolo=mysql_result($fatto,$i,"titolo");
           $sottotitolo=mysql_result($fatto,$i,"sottotitolo");
           $dettagli=stripslashes(mysql_result($fatto,$i,"dettagli"));
           $dettagli = str_replace("\n","<BR>",$dettagli);
           $euro=mysql_result($fatto,$i,"euro");
           $posti=mysql_result($fatto,$i,"posti");
         if ($posti <= 0) {
          $postiveri = $posti;
           $posti = 0;
         }

         $part = ("SELECT partner FROM calendario_partner WHERE id_lezione = '$id'");
         $partnerok = mysql_query($part);
         $partnertrovato = mysql_result($partnerok, 0);

         $groupon = ("SELECT * FROM utentiscuola WHERE pagamento = 'Groupon' AND id_lezione = '$id'");
         $controllo = mysql_query($groupon);
         $grouponisti = mysql_numrows($controllo);

         $nn = 0;
         $postigroupon2 = 0;

         while ($nn < $grouponisti) {
           $postigroupon1 = mysql_result($controllo,$nn, "postiprenotati");
           $postigroupon2 += $postigroupon1;
           $nn++;
         }
        
         if ($postigroupon2 < 5) {
           $messaggiogroupon = "Se vuoi utilizzare un voucher Groupon o simili scrivi a<br>"."<a href='mailto:iscrizioni@teatro7.com'>"."<b>iscrizioni@teatro7.com</a></b>";
         }if ($postigroupon2 >= 5) {
          
          $messaggiogroupon = "<span class='rosso'>LEZIONE NON PIU' DISPONIBILE CON VOUCHER GROUPON</span>";
         }

          
        
      ?>

      <tr>
          <td width="15%">Cod. lezione: <strong><? echo $id; ?></strong></td>
          <td align="center"><strong><? echo "$weekday, $giorno"; ?></strong></td>
          <td align="right">Posti Disponibili: <? echo $posti; ?></td>
          <td align="right">

            <form action="riepilogo_ordine.php" method="post" target="_top">
            <!-- <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> -->

              <?php
              // verifico che ci siano ancora posti disponibili

              if ($posti <= 0) {
                echo "<b>LEZIONE COMPLETA. (".$postiveri.")</b>";
              }else{
                if ($euro != 0) {
                  echo "<b>Quanti posti vuoi prenotare? <input type='number' name='quantity' min='0' max='100' step='1' value='1' size='3'></b>";
                }
                
              }

              ?>
            
      
          </td>
          <td align="center"><?php echo "$posti_prenotati"; ?></td>
          </tr>


        <tr>
          <td>&nbsp;</td>
          <td colspan="2" class="rosso"><? echo $t7invita; ?></td>
          <td align="right">
            <?
            if ($posti > 0 && $euro != 0) {
              echo $messaggiogroupon."<br>Hai un codice sconto di teatro7? inseriscilo qui sotto:" . "<br>" .
            "<input type='text' name='codice_sconto' size='20' onChange='prendisconto(this.value)'> ";
            }
            ?>
            
            
              
               <input type="hidden" name="item_name" value="Corso <?php echo $titolo; ?> a teatro7 | Lab" />
              
              
              
               <input type="hidden" name="custom" value="<? echo $id; ?>" />
                
            
          </td>
          <td>&nbsp;</td>
          </tr>

        <tr>
    <td>&nbsp;</td>
    <td colspan="4" class="rosso"><strong>Chef: <? echo $chef; ?></strong></td>
    </tr>

  <tr>
    <td>&nbsp;</td>
    <td colspan="4" class="rosso"><? echo $titolo; ?></td>
    </tr>

  <tr>
    <td>&nbsp;</td>
    <td colspan="4"><? echo $sottotitolo; ?></td>
    </tr>

    <tr>
    <td>&nbsp;</td>
    <td colspan="4" class="rosso"><? echo $partnertrovato; ?></td>
    </tr>

  <tr>
    <td>&nbsp;</td>
    <td colspan="4"><? echo $dettagli; ?></td>
    </tr>

  <tr>
    <td>&nbsp;</td>
    <td colspan="2" align="right">&nbsp;</td>
    <td colspan="2" align="right" class="rosso">
      <?
      if ($euro != 0) {
        echo "<strong>PREZZO PER PERSONA: €
        <input type='text' id='vecchioprezzo' name='amount' value=$euro size='3' readonly='readonly'  />
      </strong>";
      }
      
      ?>
      
    </td>
  </tr>

  <tr>
    <td>&nbsp;</td>
 
    <td colspan="4" align="right">
      <?php
        if ($posti <= 0) {
          $titolook=urlencode($titolo);
          echo "<a href='listadiattesa.php?lezione=$id&titolo=$titolook' target='_top' class='rosso'><b>CLICCA QUI PER LISTA DI ATTESA</b></a>";
        }else{
          if ($euro != 0) {
            echo "<input class='rosso' type='submit' value=' ACQUISTA ' />";
          }
          
        }

      ?>
    </td>
  </form>
  </tr>

  <tr>
    <td colspan="5"><hr /></td>
    </tr>
<?php
    
     $i++;

    }


Scusate la mancanza di chiarezza nell'esposizione del problema. Sto aggiungendo questa query perchè è un'esigenza appena nata e cercavo di semplificarmi la vita aggiungendo solo la piccola ricerca che mi serviva ad una pagina di per sè già piuttosto complessa...
Grazie per ogni suggerimento. Intanto mi ci metto pure io a cercare di capire dove accidenti sbaglio. Magari oggi a mente fresca andrà meglio!
 
Risolto, con facilità. Ieri ero proprio fuso.
Ho cambiato le righe della query del partner in questo modo:
PHP:
$part = ("SELECT partner FROM calendario_partner WHERE id_lezione = '$id'");
         $partnerok = mysql_query($part);
         $riga = mysql_fetch_assoc($partnerok);
         $partnertrovato = $riga["partner"];
E adesso funziona coma mi aspettavo. Ora aggiungo un po' di abbellimenti e via...
Scusate il disturbo, ma a volte parlarne con qualcuno aiuta anche a pensare!
Alla prossima
 

Discussioni simili