Foros del Web » Programando para Internet » PHP »

Insertar <tr> cada 3 ejecuciones

Estas en el tema de Insertar <tr> cada 3 ejecuciones en el foro de PHP en Foros del Web. Hola a todos, necesito insertar <TR> cada tres ejecuciones del bucle y continuar con la ejecución del mismo. $q = mysql_query("SELECT * FROM st_links WHERE ...
  #1 (permalink)  
Antiguo 29/04/2003, 15:08
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 15 años
Puntos: 0
Insertar <tr> cada 3 ejecuciones

Hola a todos, necesito insertar <TR> cada tres ejecuciones del bucle y continuar con la ejecución del mismo.

$q = mysql_query("SELECT * FROM st_links WHERE catid='17' ORDER BY rand()
LIMIT 9");
while($result2 = mysql_fetch_array($q)){
$linkid = $result2["linkid"];
$des = $result2["des"];
$catid = $result2["catid"];
$url = $result2["url"];
eval("\$catslink = \"".fetchtemplate('cats_links')."\";"); echo
"$catslink";}

en total se jecuta 9 veces, o sea necesito insertar 3 <tr>

SAludos!
  #2 (permalink)  
Antiguo 29/04/2003, 15:11
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
utiliza condicion

por que no pones un if es decir:

Código PHP:
for ($i=1;$i<=9$i++){
   if (
$i==3){echo "<tr>";}

espero te sirva
  #3 (permalink)  
Antiguo 29/04/2003, 15:15
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
perdon es mejor esto:

otra seria que dentro del ciclo while utilices un contador
Código PHP:
$contador=0;
while (
$result=.......){
  
$contador =1;
  if (
$contador==3){
        echo 
"<tr>";
  }

   
$linkid $result2["linkid"];
  
$des $result2["des"];
  
$catid $result2["catid"];
  
$url $result2["url"];
  eval(
"\$catslink = \"".fetchtemplate('cats_links')."\";"); echo
   
"$catslink";


  #4 (permalink)  
Antiguo 29/04/2003, 15:22
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 15 años
Puntos: 0
Gracias estoy probando!
  #5 (permalink)  
Antiguo 29/04/2003, 15:26
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
perdon el contador dentro del while va asi

$contador++; //o bien

$contador = $contador+1;
  #6 (permalink)  
Antiguo 29/04/2003, 15:28
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
aqui esta mejor

Código PHP:
$contador=0;
while (
$result=.......){
  
$contador++;  //o bien de esta forma $contador += 1; o $contador= $contador + 1;
  
if ($contador==3){
        echo 
"<tr>";
  }

   
$linkid $result2["linkid"];
  
$des $result2["des"];
  
$catid $result2["catid"];
  
$url $result2["url"];
  eval(
"\$catslink = \"".fetchtemplate('cats_links')."\";"); echo
   
"$catslink";


bye y disculpa
  #7 (permalink)  
Antiguo 29/04/2003, 15:38
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Esto... ¿no es más fácil usar modulo para ver si es múltiple de 3?

Código PHP:
<?
for ($i=1condición necesaria$i++) {
   if (
$i%3=1) {echo "<tr>";}
   echo 
"<td>lo que sea necesario</td>";
   if (
$i%3=0) {echo "</tr>";}
}

?>
En las FAQs de este foro puse un ejemplo con una consulta MySQL en la FAQ que habla de repartir un resultado en columnas.
__________________
M a l d i t o F r i k i
  #8 (permalink)  
Antiguo 29/04/2003, 15:38
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 15 años
Puntos: 0
Perfecto!!
como lo tengo que hacer cada 3 lo puse así

$contador=0;
while($result2 = mysql_fetch_array($q)){
$contador++;
if ($contador==3){echo "<tr>"; }
if ($contador==6){echo "<tr>"; }
if ($contador==9){echo "<tr>"; }
$linkid = $result2["linkid"];
$date = date ("j/n");
$des = $result2["des"];
$catid = $result2["catid"];
$url = $result2["url"];
eval("\$catslink = \"".fetchtemplate('cats_links')."\";"); echo "$catslink";}
eval("\$catsafterlink = \"".fetchtemplate('cats_afterlinks')."\";"); echo "$catsafterlink";


GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!!11
  #9 (permalink)  
Antiguo 29/04/2003, 16:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

erama, yo de ti miraria el ejemplo de Cain en las FAQs. Por dos razones. La primera es que ahora solo tienes 9 resultados, pero si en el futuro quieres mas, tendrias que cambiar el codigo. Y la segunda, estas generando codigo HTML incorrecto. Trata de ver esa pagina en un navegador mas estricto que el explorer, como en Netscape o en Mozilla. Posiblemente lo que veas sea una pagina en blanco. El HTML tiene una sintaxis para usarla. Si un tag tiene etiqueta de cierre, hay que usarla. Aunque se vea bien en explorer. El explorer ha contribuido a muchas malas costumbres.

Saludos.

PD: No odio a M$, solo le tengo mania.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 29/04/2003, 17:48
 
Fecha de Ingreso: noviembre-2002
Mensajes: 190
Antigüedad: 15 años
Puntos: 0
tiene razón, ya lo solucione

$q = mysql_query("SELECT * FROM st_links WHERE catid='$cid' ORDER BY rand() LIMIT 14");
$contador=0;
while($result2 = mysql_fetch_array($q)){
$contador++;
if ($contador%4==1){$tr="<tr>"; } else {$tr="";}
$linkid = $result2["linkid"];
$date = date ("j/n");
$des = $result2["des"];
$catid = $result2["catid"];
$url = $result2["url"];


gracias
  #11 (permalink)  
Antiguo 30/04/2003, 02:48
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Sólo un apunte:

Esto:
Código PHP:
<?
$contador
=0;
while(
$result2 mysql_fetch_array($q)){
$contador++;
?>
Es lo mismo que esto:
Código PHP:
<?
for($contador=0$result2 mysql_fetch_array($q); $contador++){
?>

La única diferencia es que la segunda opción ocupa una sola línea.
__________________
M a l d i t o F r i k i
  #12 (permalink)  
Antiguo 30/04/2003, 05:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Cain, tal como lo usa deberias inicializar $contador a 1 en el for.

erama, sere un poco mas directo: ¿donde estas poniendo los </tr> correspondientes a los <tr> que pones?

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 30/04/2003, 05:54
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Cierto, debería empezar por 1

Pero sigue siendo más eficiente el for que el while.
__________________
M a l d i t o F r i k i
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:13.