Pregunta

<?
    // Connect database
    include("cat-config.php");

    // Get all records in all columns from table and put it in $result.
    $result=mysql_query("

    (select * from stok_lukisan where `Ukuran` LIKE '20x25' AND `Kategori` LIKE '1' ORDER BY `Kode` ASC limit 3)
    union all
    (select * from stok_lukisan where `Ukuran` LIKE '30x40' AND `Kategori` LIKE '1' ORDER BY `Kode` ASC limit 4)
    union all
    (select * from stok_lukisan where `Ukuran` LIKE '20x50' AND `Kategori` LIKE '1' ORDER BY `Kode` ASC limit 5)
    ");

    /*Split records in $result by table rows and put them in $row.
    Make it looping by while statement. */
    while($row=mysql_fetch_assoc($result)){

    echo '<table><tr>';
      echo "<td align='center'>$row[Kode]<br><a href='$GAMBAR_URL/$row[Gambar]' rel='lightbox' title='Kode Lukisan: $row[Kode]'><img src='$GAMBAR_URL/$row[Gambar]'><br>

      Rp.$row[Harga]<a href=\"javascript:;\" onclick=\"simpleCart.add('name=$row[Kode]', 'price=$row[Harga]','size=tiny','quantity=1','thumb=$GAMBAR_URL/$row[Gambar]');\"><br><img src='./images/buy.gif'><p></a>";

    $rows = 1;
    while ($row = mysql_fetch_assoc($result)) {
      echo "<td align='center'>$row[Kode]<br><a href='$GAMBAR_URL/$row[Gambar]' rel='lightbox' title='Kode Lukisan: $row[Kode]'><img src='$GAMBAR_URL/$row[Gambar]'></a><br>

     Rp.$row[Harga]<a href=\"javascript:;\" onclick=\"simpleCart.add('name=$row[Kode]', 'price=$row[Harga]','size=tiny','quantity=1','thumb=$GAMBAR_URL/$row[Gambar]');\"><br><img src='./images/buy.gif'><p></a>";

      ++$rows;
      if ($rows %4 == 0) {
       echo '</tr><tr></tr>

    </table></tr><tr><table><tr>';
      }
    }
    }
    ?>

cómo mostrar en la página con cada filas individuales de bucles php, de acuerdo con el límite que se ha establecido en la unión de todo.

en php resultado página como esta:

1001 - 1002 - 1003 (<---- 3 record on rows)
2001 - 2002 - 2003 - 2004 (<---- 4 record on rows)
3001 - 3002 - 3003 - 3004 - 3005 (<---- 5 record on rows)

Gracias ....

¿Fue útil?

Solución

Se puede usar un simple contador para realizar un seguimiento de filas que se han exagerado:

$limits = array(3, 4, 5);
reset($limits);
$counter = 0;
while ($row = mysql_fetch_array($result)) {
    var_dump($row);
    $counter++;
    if ($counter === current($limits)) {
        echo current($limits);
        next($limits);
        $counter = 0;
    }
}

current se utiliza para obtener el valor actual del puntero interno está apuntando. Así que si el límite actual es igual al número de filas que se han exagerado, se imprime el límite, el puntero es avanzada (ver next ) y el contador se pone a 0.

Otros consejos

Creo que la consulta se puede simplificar para simplificar esto también para PHP:

SELECT
   GROUP_CONCAT(name SEPARATOR ' - ') names,
FROM
   stock
WHERE
   category
   AND size IN (25, 30, 45)
GROUP BY
   size

Esto obtendrá los datos de MySQL con formato como tú quieres que en PHP. Usted sólo puede imprimir cada fila.

$sql = "( select *, 3 AS limit 
    from stock 
   where `size` LIKE '25' 
     AND `category` LIKE '1' 
ORDER BY `code` ASC 
    limit 3)
union all
( select *, 4 AS limit
    from stock 
   where `size` LIKE '30' 
     AND `category` LIKE '1' 
ORDER BY `code` ASC 
   limit 4)
union all
( select *, 5 AS limit
    from stock 
   where `size` LIKE '45' 
     AND `category` LIKE '1' 
ORDER BY `code` ASC 
   limit 5)";
$res = mysql_query($sql);
while ($r = mysql_fetch_object($res)) {
  // assuming each record has a unique id
  $data[$r->limit][$r->id] = $r->name;
}

foreach ($data as $limit => $names) {
  echo implode(' - ',$names);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top