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

    [php/mysql]problema su ciclo while

    Salve a tutti.

    Sto eseguendo un ciclo while per visualizzare i dati contenuti in una tabella e ho necessità di verificare se un ip inserito nella tabella compaia 2 o + volte:


    codice:
    $query = "select * from clients where invis='0' ORDER BY `clients`.`ID` DESC";
        $result = mysql_query($query);
        $rows = 1;
    
    while ($row = @mysql_fetch_array($result)) {
    {
    echo '<tr><td style="padding: 4px; color: #ffffff; font-size:14px; font-weight: bold;"><span style="';
    include ("colors.php");
          echo '">'.$row['name']. '</span></td>'; 
        echo '<td style="padding: 4px; color: #ffffff; font-size:14px; text-align:center;">' .$row['guild']. '</td>';
        echo '<td style="padding: 4px; color: #ffffff; font-size:14px; text-align:center;">';
    include("images.php");
    echo'</td>';
        echo '<td style="padding: 4px; color: #ffffff; font-size:14px; text-align:center;">' .$row['fame']. '</td>';
        echo '<td style="padding: 4px; color: #ffffff; font-size:14px; text-align:center;">' .$row['karma']. '</td>';
        echo '<td style="padding: 4px; color: #ffffff; font-size:14px; text-align:center;">';
        $somma = $row['kills'] + $row['killsgood'];
        echo $somma;
        echo '</td><td style="padding: 4px; color: #ffffff; font-size:14px; text-align:center;">'; $time=strtotime($row['lastlogin']);
       echo date("d/m/Y",$time),'</td>';
       if (is_user_logged_in()){
       echo '<td style="padding: 4px; color: #ffffff; font-size:14px;">' .$row['ip']. '</td>';
       }
    echo '</tr>';
    
        }  
      $rows++;
       }
       echo '</table>';
    }
    is_user_logged_in è una funzione per verificare se l'utente è loggato al sito, non badateci.

    in pratica su $rows['ip'] devo vedere se su altre righe viene ripetuto lo stesso ip,
    se viene ripetuto metto <span style="color:red">ip</span>, se invece non viene ripetuto rimane invariato (color bianco)

    se uso un altra query e metto mysql_num_rows visualizza solo una riga...

    soluzioni?

  2. #2
    O utilizzi due query (una per identificare gli IP ripetuti ed una per visualizzare i dati) oppure esegui due volte il ciclo while richiamando mysql_data_seek() tra un ciclo e l'altro. Nel primo ciclo non fai altro che inserire in un array gli IP, poi richiami array_count_values(). Nel secondo ciclo non fai altro che mettere un IP per verificare il conteggio dei singoli IP.

  3. #3
    ora provo. grazie intanto.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    prova con
    Codice PHP:
    $query "select b.cont,a.* from clients a ,(select count(*) cont, ip from clients group by ip) b where a.ip=b.ip and invis='0' ORDER BY `clients`.`ID` DESC"
    al posto della tua query e nel campo cont hai il numero di volte che appare l'ip in clients
    che puoi testare al volo...

  5. #5
    risolto molto più semplicemente cosi:

    codice:
       $ip = $row['ip'];
       $sql = "select * from clients where ip='$ip'";
       $query = mysql_query($sql);
       $righe = mysql_num_rows($query);
       if ($righe > 1)
       echo '<td style="padding: 4px; color: #ffffff; font-size:14px;"><span style="color:red;">' .$row['ip']. '</span></td>';
       
       else
       echo '<td style="padding: 4px; color: #ffffff; font-size:14px;">' .$row['ip']. '</td>';

    ringrazio comunque per l'aiuto :P

  6. #6
    Originariamente inviato da Novocaine
    risolto molto più semplicemente cosi
    Sarà anche più semplice, ma di certo non è più performante. In questo modo per ogni risultato della prima query devi andare ad eseguire altrettante query.

  7. #7
    non è un problema per ora. :P

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.