Si los datos recuperados de MySql son menores que * número *, muestre esto, de lo contrario, ¿muestra algo más?

StackOverflow https://stackoverflow.com/questions/1427323

  •  07-07-2019
  •  | 
  •  

Pregunta

Hola Maestros de Programación Web. Tengo este código:

<?PHP

$db_user = 'user';
$db_pass = 'password';
$db_name = 'dbname';
$db_host = 'localhost';
if(mysql_connect($db_host,$db_user,$db_pass)) {
    mysql_select_db($db_name);
    mysql_query("CREATE TABLE IF NOT EXISTS smsads(id bigint unsigned primary key auto_increment, link varchar(255), fromnum varchar(60))");
    $res = mysql_query("SELECT * FROM smsads ORDER BY id DESC LIMIT 36");
    while($row = mysql_fetch_object($res)) {

        if ($res>=36){

        $http_link = $row->link;
        $root_link = strpos($http_link, '/');
            if ($root_link !== false) {
            $before = substr($http_link, 0, $root_link);
        }

        echo "<div id=\"banner\"><a href=\"http://{$before}\" alt=\"{$before}\" title=\"{$before}\" target=\"_blank\"><img src=\"http://{$http_link}\" /></a></div>";
    }
        else {
            echo $res . "<div id=\"banner\"></div>";
        }
    }
}
?>
</div>

Como podemos ver, el número de filas recuperadas está limitado a 36. ¿Cómo hacer si las filas son más pequeñas que 36, para mostrar las existentes y agregar algo más para cada una hasta 36? Por ejemplo, este es un script para la publicidad de píxeles, y quiero visualizar los píxeles existentes (por ejemplo, tengo 20 píxeles insertados) y mostrar cuadros vacíos en otros lugares que están vacíos (total de 36 lugares - 20 elementos ya colocados = 16 lugares vacíos) hasta que el recuento alcance un total de 36 cajas.

Como puede ver, probé con '' If '', '' más '', pero siempre muestra solo cuadros vacíos (porque no sé cómo decirle que muestre RESULTADOS + cuadros vacíos) ...

¿Fue útil?

Solución

Reescribe todo en un bucle for, también hace que todo sea un poco más fácil de entender:

for($cnt = 0; $cnt < 36; $cnt++){
    if($row = mysql_fetch_object($res)){
        // In here you should have the code for the boxes to be filled.
        $http_link = $row->link;
        $root_link = strpos($http_link, '/');
        if ($root_link !== false) {
            $before = substr($http_link, 0, $root_link);
        }
        echo "<div id=\"banner\"><a href=\"http://{$before}\" alt=\"{$before}\" title=\"{$before}\" target=\"_blank\"><img src=\"http://{$http_link}\" /></a></div>";
    }else{
        // In here you should have the code for the empty boxes
        echo "<div id=\"banner\"></div>";
    }
}

Esto siempre iterará a través del ciclo 36 veces, esas veces encontrará una fila, imprimirá la fila, de lo contrario, imprimirá la etiqueta de banner vacía.

Otros consejos

Utilice mysql_num_rows :

if (mysql_num_rows($res) >= 36) {
    // ...
}

¿Ha probado el código que se ejecuta si la declaración if es verdadera?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top