Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Mircov 6 stato grande!!
    ti sono debitore!

    però siccome sono ho fatto delle modifiche al codice da te mandato (quelle in rosso):

    codice:
    <table width="600" border="1" cellpadding="3" cellspacing="0" bordercolor="000000">
      <tr>
        <td width="200" height="50">ID</td>
        <td width="200">NOME</td>
        <td width="200">COGNOME</td>
      </tr>
    <?PHP
    include("config.inc.php");
    include("connessione.db.inc.php");
    $sql="SELECT count(*) AS tot FROM $tabella";
    $result=mysql_query($sql, $db);
    $row=mysql_fetch_array($result); 
    
    $sql2="SELECT * FROM $tabella";
    $result2=mysql_query($sql2, $db);
    $row2=mysql_fetch_array($result2); 
    
    
        $i = 1;
        for ($row[tot] = 0; $row[tot] <= 11; $row[tot]++)
           {
               echo "<tr>\n
                     <td height=\"50\">" . $row[tot] . "</td>\n
                     <td>"  . $row2[nome] .  "</td>
                     <td>"   . $row2[cognome] .  "</td>
                     </tr>";
                     if ($i % 3 == 0)
                     {
                         echo "</table>\n
    <table width=\"600\" border=\"1\" cellpadding=\"3\" cellspacing=\"0\" bordercolor=\"000000\">\n
                         <tr>\n
                         <td width=\"200\" height=\"50\">ID</td>\n
                         <td width=\"200\">NOME</td>\n
                         <td width=\"200\">COGNOME</td>\n
                         </tr>\n";
                     }
          $i++;
      }
    ?>
    </table>
    ..il risultato è perfetto però mi stampa sempre il nome e il cognome del primo record su tutte le righe.

    puoi completare l'opera in modo da stampare su ogni riga il nome e cognome relativi al record... (mi sono espresso malissimo lo so..)

    altra info: ho capito che cosa hai fai con il codice, mi manca solo da decifrare if ($i % 3 == 0)
    che intendi con questo if?

    grazie 1000!!
    --- Meglio 100 giorni da leone che 1 da pecora ---

  2. #12
    Ti stampa sempre lo stesso record perchè io ho usato un for per testare lo script: mi serviva per emulare il while del mysql_fetch_array.

    Per spiegarti la parte di codice che non hai caopito devi capire prima il ragionamento che ho fatto.

    Tu mi hai detto che volevi 3 righe su ognuna delle quali andavano stampati i valori di un record.
    Inoltre arrivati alle tre righe occorreva chiudere i tag relativi alla tabella e aprire i tag per una nuova tabella.
    Ho quindi inserito un contatore ($i) che ad ogni nuovo record viene incrementato di 1.
    Se il valore del contatore è divisibile per 3 vuol dire che lo script ha stampato 3 record e quindi occorre chiudere i tag della tabella corrente e aprire i tag per una nuova tabella.

    La parte di codice fuori dai tag <?PHP ?> sono l'apertura e la chiusura di una tabella. In questo modo anche se i record fossero solo due la tabella sarebbe comunque chiusa. Alla fine non è molto difficil. Bisogna solo osservare il codice HTML e vedere come funziona. Una volta capito questo il modo per automatizzare il tutto si trova nel 90% dei casi.
    Cmq sotto ti metto il codice per farlo funzionare con mysql.
    codice:
    $sql="SELECT count(*) AS tot FROM $tabella";
    $result=mysql_query($sql, $db);
    $row=mysql_fetch_array($result); 
    
        $i = 1;
        while ($row2 = mysql_fetch_array($result2))
           {
               echo "<tr>\n
                     <td height=\"50\">" . $row['tot'] . "</td>\n
                     <td>"  . $row2['nome'] .  "</td>
                     <td>"   . $row2['cognome'] .  "</td>
                     </tr>";
                     if ($i % 3 == 0)
                     {
                         echo "</table>\n
    <table width=\"600\" border=\"1\" cellpadding=\"3\" cellspacing=\"0\" bordercolor=\"000000\">\n
                         <tr>\n
                         <td width=\"200\" height=\"50\">ID</td>\n
                         <td width=\"200\">NOME</td>\n
                         <td width=\"200\">COGNOME</td>\n
                         </tr>\n";
                     }
          $i++;
      }
    ?>
    Prova a vedere se funziona.
    Solo un appunto: quando scrivi i nomi di variabili di array come nel caso di $row devi usare i le virgolette singole per indicare il nome dell'elemnto come ho fatto io altrimenti ti dà errore. Se invece la variabile si trova già tra virgolette devi scrivere la variabile senza utilizzare le virgolette singole (es. echo "ciao $var[nome]"; o echo 'ciao $var[nome]'

    Ora una domanda la faccio io a te: perchè hai contato prima quanti elementi ci sono nella tabella?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #13
    è quasi tutto ok! (controlla l'ultimo quote):

    Solo un appunto: quando scrivi i nomi di variabili di array come nel caso di $row devi usare i le virgolette singole per indicare il nome dell'elemnto come ho fatto io altrimenti ti dà errore. Se invece la variabile si trova già tra virgolette devi scrivere la variabile senza utilizzare le virgolette singole (es. echo "ciao $var[nome]"; o echo 'ciao $var[nome]'


    grazie per il consiglio!! ne terrò conto!


    Ora una domanda la faccio io a te: perchè hai contato prima quanti elementi ci sono nella tabella?


    perchè sono un !! a questo punto con il while non mi serve più sapere il numero totale dei record (ricordi for ($count = 0; $count < 11; $count++) ... 11 lo sostituivo con il numero totale di record...)

    Se il valore del contatore è divisibile per 3 vuol dire che lo script ha stampato 3 record e quindi occorre chiudere i tag della tabella corrente e aprire i tag per una nuova tabella.


    però in questo modo se i record sono 9 mi crea tre tabelle precise (intestazione + dati..) più una quarta tabella con solo la riga dell'intestazione!
    --- Meglio 100 giorni da leone che 1 da pecora ---

  4. #14
    Giusto. Allora occorre lavorarci ancora un po' su. Appena riesco a combinare qualcosa posto. Ciao.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #15
    ok!! a presto allora!
    Grazie una cifra per l'aiuto
    --- Meglio 100 giorni da leone che 1 da pecora ---

  6. #16
    Prova ora.
    codice:
    $sql="SELECT count(*) AS tot FROM $tabella";
    $result=mysql_query($sql, $db);
    $tot=mysql_num_rows($result); 
    
        $i = 1;
        while ($row2 = mysql_fetch_array($result2))
           {
               echo "<tr>\n
                     <td height=\"50\">" . $row['tot'] . "</td>\n
                     <td>"  . $row2['nome'] .  "</td>
                     <td>"   . $row2['cognome'] .  "</td>
                     </tr>";
                     if ($i % 3 == 0)
                     {
                         echo "</table>\n";
    					 if ($i < $tot)
    					   {
    					      echo "
    <table width=\"600\" border=\"1\" cellpadding=\"3\" cellspacing=\"0\" bordercolor=\"000000\">\n
                         <tr>\n
                         <td width=\"200\" height=\"50\">ID</td>\n
                         <td width=\"200\">NOME</td>\n
                         <td width=\"200\">COGNOME</td>\n
                         </tr>\n";
    					 }
                     }
          $i++;
      }
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  7. #17

    non va,

    così stampa solo la prima tabella corretta (intestazione più tre righe con i relativi record) per i record restanti vengono stampati su una riga standard, come se fossero del testo normale (non stanno dentro una tabella).
    --- Meglio 100 giorni da leone che 1 da pecora ---

  8. #18

    risolto!!

    ho corretto in questa maniera e sembra funzionare!!
    dai un'occhiata e dimmi se secondo te è ok.
    i cambiamenti i ho evidenziati in rosso:

    codice:
    $sql="SELECT count(*) AS tot FROM $tabella";
    $result=mysql_query($sql, $db);
    $tot=mysql_fetch_array($result);   
    $sql2="SELECT * FROM $tabella";
    $result2=mysql_query($sql2, $db);
    $i = 1;
    while ($row2 = mysql_fetch_array($result2))
    {
        echo "<tr>\n
        <td height=\"50\">" . $row2['id'] . "</td>\n
        <td>"  . $row2['nome'] .  "</td>
        <td>"   . $row2['cognome'] .  "</td>
        </tr>";
        if ($i % 3 == 0)
        {
            echo "</table>\n";
            if ($i!=$tot[tot]) 
            {
                echo "
    <table width=\"600\" border=\"1\" cellpadding=\"3\" cellspacing=\"0\" bordercolor=\"000000\">\n
                <tr>\n
                <td width=\"200\" height=\"50\">ID</td>\n
                <td width=\"200\">NOME</td>\n
                <td width=\"200\">COGNOME</td>\n
                </tr>\n";
            }
        }
        $i++;
    }
    che ne dici?
    --- Meglio 100 giorni da leone che 1 da pecora ---

  9. #19
    Mi è venuta la stessa idea mentre ero a tavola! Veramente l'intenzione di prima era questa ma poi mi sono accorto di aver sbagliato. Cmq visto che già l'hai fatto prova a vedere se con < al posto di != funziona lo stesso.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #20
    Ho provato io, funziona. Sostituisci != con <. Alla fine lo script funziona comunque ma per coerenza logica < è la soluzione corretta.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.