Ciclo While

Hola, me gustaría hacer una cosilla con el ciclo while haber quien me ayuda:

Lo que me gustaría hacer es que cada x registros mostrado me muestre lo que yo quiera (la idea es hacer que cada x registro que muestro, mostrar 1 banner de publicidad)

?>
El esquema sería algo así:

X=0
Mientras existan numeros de registro haz esto: (while)
******************************
{
X=X+1;
mostrar un registro
IF (X=10) {muestra un banner; X=0}
}
******************************
Si no lo pillas dimelo y lo pongo en código. Lo que he escrito es para hacerte una idea de lo que necesitas, pero no es código php, es solo codigo Jorgens, je je je
exactamente, haz un while normal, pero dentro le añades el contador y haces que cada diez veces ejecute la parte que hace mostrar el banner.

Si quieres te lo doy más mascado, je je je, pero igual sabes ya hacerlo solo. Si no, nos lo dices y vemos qué podemos hacer. Y si tienes ya algo hecho nos lo pegas y lo retocamos hasta que funcione.

Animo!
bueno pego uno de los códigos donde lo podríamos trabajar:

		  <?php 
 $sql="select * from peliculas ";
 $res=mysql_query($sql,$con); 

while($reg=mysql_fetch_array($res))

{

?>
Aqqui iria el div donde muestro el contenido

<?php } ?>


bueni como podría seguir apartir de aquí?
No estoy muy fino hoy y escribo de cabeza, quizás tenga algo mal.

Primero defino dos funciones. En ambas has de añadir el código correspondiente para mostrar un banner y para mostrar un registro de pelicula, tal y como querías. Una vez definidas las llamaremos luego, cuando nos interese.

Después le doy el valor cero a la variable X, no sea que use otra x en otra parte del archivo y se lie la cosa.
Hago una consulta para obtener los datos de todas las películas y hago un while para repetir todo el código entre los corchetes mientras hayan valores en esa consulta.
Le sumo uno a X, para que vaya creciendo una unidad cada vez que muestre una pelicula.
Ejecuto la función MostrarRegistro(x). La x va cambiando y se puede usar para mostrar la pelicula x, claro.
Luego si x=10 ejecuto la función MostrarBanner(), y si no, repito lo anterior si quedan películas, o registros.
La función MostrarBanner() se ejecuta con el código que le hayamos puesto dentro, y después pone la x a cero de nuevo para que empiece a contar otra vez.

Se ve claro? Si no, seguimos!

<?php

function MostrarBanner()
{
echo "código html para mostrar el banner";
}

function MostrarRegistro($id)
{
echo "código html para mostrar el registro número $id=x";
}

x=0;
$Consulta1=mysql_query(" SELECT * FROM peliculas ") or die ( "Error en Consulta1".mysql_error() );
WHILE ($peliculasdelatabla = mysql_fetch_array($Consulta1))
{
x=x+1;
MostrarRegistro(x);
if (x==10) {MostrarBanner();x=0;}
}
mysql_free_result($Consulta1);
?>
bueno cesar, voy hacerle pruebas y ya te pongo mas tarde como me salio si todo bien o fallo en algo. La verdad que es la primera vez que voy a trabajar funciones pero se ven sencillas, ya te digo despues muchas gracias.
Puedes no usar funciones:

x=0;
$Consulta1=mysql_query(" SELECT * FROM peliculas ") or die ( "Error en Consulta1".mysql_error() );
WHILE ($peliculasdelatabla = mysql_fetch_array($Consulta1))
{
x=x+1;
[Aqui todo el codigo para mostrar una pelicula]
if (x==10)
{
[Aqui todo el codigo para mostrar un banner]
x=0;
}
}
mysql_free_result($Consulta1);
?>
Jorge me sale un error..

mira este es el código como lo tengo:
<table width="100%" border="0" cellspacing="0" cellpadding="0">
                 					  <?php
					   x=0;			   
					  $sql57="select * from peliculas order by cantidad desc ";
					  $res57=mysql_query($sql57,$con) or die ( "error en res57".mysql_error() );
 
  
					while($reg57=mysql_fetch_array($res57))
					  {
					  $texto4=str_replace(" ","-",$reg57["titulo"]);
					  
					  //aqui comienzo a trabajar
					  x=x+1;
					  ?>
				 
				  <tr>
                    <td width="2%"></td>
                    <td width="47%" height="20"><strong><?php echo $reg57["titulo"];?></strong>  (<?php echo $reg57["año"];?>)  </td>
                    <td width="13%" align="center"><img src="imagenes/z.png" width="20" height="13" onMouseOver="ddrivetip('<?php echo $reg57 ["sinopsis"]; ?>','fffffc', 300)";
onMouseOut="hideddrivetip()"></td>
                    <td width="28%"><?php echo $reg57["genero"];?></td>
                    <td width="10%" align="center"><a href="<?php echo $texto4."p".$reg57["id_pelicula"].".html" ?>" title="Ver online <?php echo $reg57["titulo"];?>"><img src="imagenes/untitled.png" width="15" height="15" border="0"></a></td>
                  </tr>
				  
				  <?php 
				  if(x==5)
				  {
				  ?>
				  <table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Aquí iría el banner</td>
  </tr>
</table>

				  <?php
				  x=0;	
				  }
				  } 
				 mysql_free_result($res57);
 
				  ?>
                </table>
Hey, pero dinos qué indica el error, oki?

Lo podias subir todo al hosting que tienes en comocreartuweb y así nos sería más facil ver cómo vamos.

Seguimos!
Mira jorgens el error que me da es el siguiente:

Parse error: syntax error, unexpected '=' in C:\AppServ\www\proyecto\www.ponplayonline.com\index.php on line 270

No lo subo al hosting que tengo en como crear tu web porque tengo que estar pasando las base de datos y eso (y hoy mismo empiezo con el nuevo diseño y a cambiarlo todo jejeje)
pero mira que los host locales por defecto no vienen configurados en su totalidad a los estandares, tu usas appserv, yo uso xampp y me he roto la cabeza con cosas que no me salian aun copiando tutoriales, lo subi a hosting online y cambio, asi que el consejo es: No te confies del localhost. No te ayudo xq estoy mas verde en php que tu, saludos.
Necesitaría ver el codigo completo, para ver cuál es esa linea 270 que te da el error.

Gracias Ricky por el comentario. No caí en eso, está bien tenerlo en cuenta.

Un abrazo!
ayosefj92 escribió:Jorge me sale un error..

mira este es el código como lo tengo:
<table width="100%" border="0" cellspacing="0" cellpadding="0">
                 					  <?php
					   x=0;			   
					  $sql57="select * from peliculas order by cantidad desc ";
					  $res57=mysql_query($sql57,$con) or die ( "error en res57".mysql_error() );
 
  
					while($reg57=mysql_fetch_array($res57))
					  {
					  $texto4=str_replace(" ","-",$reg57["titulo"]);
					  
					  //aqui comienzo a trabajar
					  x=x+1;
					  ?>
				 
				  <tr>
                    <td width="2%"></td>
                    <td width="47%" height="20"><strong><?php echo $reg57["titulo"];?></strong>  (<?php echo $reg57["año"];?>)  </td>
                    <td width="13%" align="center"><img src="imagenes/z.png" width="20" height="13" onMouseOver="ddrivetip('<?php echo $reg57 ["sinopsis"]; ?>','fffffc', 300)";
onMouseOut="hideddrivetip()"></td>
                    <td width="28%"><?php echo $reg57["genero"];?></td>
                    <td width="10%" align="center"><a href="<?php echo $texto4."p".$reg57["id_pelicula"].".html" ?>" title="Ver online <?php echo $reg57["titulo"];?>"><img src="imagenes/untitled.png" width="15" height="15" border="0"></a></td>
                  </tr>
				  
				  <?php 
				  if(x==5)
				  {
				  ?>
				  <table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>Aquí iría el banner</td>
  </tr>
</table>

				  <?php
				  x=0;	
				  }
				  } 
				 mysql_free_result($res57);
 
				  ?>
                </table>

Jorgens la linea 270 es la del principio que te puse aquí, x=0; (que a su vez este es el código completo de la parte que estoy trabajando)
Uff, me lio un poco, je je je je.

Mientras tanto, yo no suelo abrir y cerrar tanto el php. Me gusta más (lo veo más claro) añadiendo código Html con el "echo". La única salvedad es que para meter código Html dentro de un echo, hay que "escapar" las dobles comillas, es decir, añadirle una barra delante para que el servidor no las confunda con dobles comillas reales y cierre el echo. No se si me explico...

En lugar de hacer esto:

if (x==5)
{
?>
<p>Equis es igual a "5"</p>
<?php
}
else
{
?>
<p>Equis no es igual a "5"</p>
<?php
}
?>
prefiero hacer esto otro:
if (x==5)
{
echo "<p>Equis es igual a \"5\"</p>";
}
else
{
echo "<p>Equis no es igual a \"5\"</p>";
}
?>
Pasame por favor el código completo. En ocasiones el error se debe a algún problema en otra línea que no es la que indica el mensaje de error. Se ocasiona en esa linea pero por un error anterior, oki?
jorgens no puedo pegar el código, me dice que supera los 3000 carácteres.. pero jorgens tranquilo no te lies mucho porque creo que con el nuevo diseño que voy a utilizar no lo necesitaré (que cada x películas aparesca el banner), ya te cuento por aquí por si lo necesito.
Lo que te decia, al margen de todo esto, es que yo prefiero poner el codigo html dentro de echos. Tu código (con los dolares $ colocados) sería este, pero tú hazlo como más te guste. A mi es que me lia menos de mi modo:

<table width="100%" border="0px" cellspacing="0px" cellpadding="0px">
<?php
$x=0;
$sql57="select * from peliculas order by cantidad desc ";
$res57=mysql_query($sql57,$con) or die ( "error en res57".mysql_error() );
while($reg57=mysql_fetch_array($res57))
{ // inicio del while //
$texto4=str_replace(" ","-",$reg57["titulo"]);
//aqui comienzo a trabajar
$x=$x+1;
$direccion="$texto4."p".$reg57["id_pelicula"].".html";
echo "
<tr>
<td width=\"2%\"></td>
<td width=\"47%\" height=\"20\"><strong>$reg57</strong> ($reg57[año]) </td>
<td width=\"13%\" align=\"center\">
<img src=\"imagenes/z.png\" width=\"20px\" height=\"13px\" onMouseOver=\"ddrivetip(\'$reg57\',\'fffffc\', 300)\"; onMouseOut=\"hideddrivetip()\">
</td>
<td width=\"28%\">
$reg57
</td>
<td width=\"10%\" align=\"center\">
<a href=\"$direccion\" title=\"Ver online $reg57 \">
<img src=\"imagenes/untitled.png\" width=\"15px\" height=\"15px\" border=\"0\" />
</a>
</td>
</tr>
";
if($x==5)
{ // inicio del if //
echo "
<table width=\"100%\" border=\"0px\" cellspacing=\"0px\" cellpadding=\"0px\">
<tr>
<td>Aquí iría el banner</td>
</tr>
</table>
";
$x=0;
} // fin del if //
} //fin del while //
mysql_free_result($res57);
echo "</table>";
?>
No le he probado!

Qué pena que en los mensajes del foro no se puedan colocar espacios ni tabs al parecer. Se vería el código más claro si se pudiera tabular. A ver si aprendo a hacerlo, si es que se puede...

Otra salvedad al usar echos. Si te sales de php y escribes directamente código Html, los valores del string se ponen como $reg57["titulo"], pero si los usas dentro del echo, has de eliminar las dobles comilas, así $reg57

No estoy muy seguro de que esta linea sea exáctamente así. Trato de definir la variable dirección dándole ya el valor que tu querias, para usarla más tarde dentro del echo.
$direccion="$texto4."p".$reg57["id_pelicula"].".html";

Fíjate como he colocado la barra \ antes de cada doble comilla cuando ésta aparece dentro del echo. Es para evitar que la tome como el final del echo (recuerda que el contenido del echo empieza y termina con unas dobles comillas). Me explico?
Oki, si no lo necesitas no pasa nada. Era más bien por recordar un poco, que llevo semanas sin usar el php y se va olvidando, je je je.

Un abrazo!
jorgens ya no me da el error, faltaba definir que x era una variable jejeje.. Bueno como tu comentas que te parece más fácil tu manera, no cres que te ahorras el estar poniendo las barras en las comillas haciendolo como lo hago yo?
Pero de tu modo (que yo usaba al principio) me hago la picha un lio pues mirando el código a vista de pajaro se me mezcla todo. Al final no se si he cerrado o no. De este otro modo el código Html va como contenido de otro elemento del php, el echo, y se me hace más sencillo revisar un código, sobre todo cuando es muy largo.

Pero como te digo, cada uno tiene sus gustos y trucos, solo era por mostrar otro modo, pero el tuyo es igual de válido, por supuesto.

A ver si algún avanzado en php nos recomienda uno u otro, je je je.

Es curioso como a veces una mierdecilla de símbolo nos hace pensar tanto, je je je.

Ale, me ha gustado el ejercicio mental ;=)
jejeej yo trabajo esta forma porque se la vi a uno que sigo mucho su web y sus videotutoriales de php y mysql por eso la trabajo asi, no he probado la que tu dices.

Te envío su web por si te interesa.

Muchisimas gracias por el aporte jorgens!