Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Cómo meter php en un select?

Aunque reconozco que no tengo ni idea de cómo plantear la pregunta, lo mejor es que me explique.

Tengo este contenido en php:
<ul>
<?php
         $totalPag = ceil($total/$limit);
         $links = array();
         for( $i=1; $i<=$totalPag ; $i++)
         {
            $links[] = "<li><a href=\"?pag=$i\">$i</a>";
         }
         echo implode("</li>", $links);
      ?>
      </ul>
y me gustaría saber cómo meter el contenido del <li></li> dentro de un <select></select> para que me aparezca como un menú de selección en lugar de una lista.

Debo decir que he probado numerosas formas pero no soy capaz de dar con la adecuada.
0
Puntos
1791
Visitas
11
Resp
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #1
Bueno, para meterlo en un select necesitas la otra etiqueta llamada option..
Si no me equivoco sería algo así..
<select name=" " id=" ">
      <option value=" "> #Contenido o CodigoPHP </option>
</select>
0
Puntos
Por Jose hace 127 meses
Experto Sitio web
Respuesta #2
No se si te ayudé de verdad con eso, si no pues.. Dime exactamente que es lo que quieres que aparezca en ese menú ¿Las páginas? Es que no entendí bien, como tú dices no sabes ni como plantear el problema jajaja. Pero danos por lo menos la idea de que es lo que quieres. Saludos.
0
Puntos
Por Jose hace 127 meses
Experto Sitio web
Respuesta #3
supongo que ya has probado asi verdad?
<ul>
<?php
         $totalPag = ceil($total/$limit);
         $links = array();
         for( $i=1; $i<=$totalPag ; $i++)
         {
            $links[] = "<select><option><a href=\"?pag=$i\">$i</a>";
         }
         echo implode("</option></select>", $links);
      ?>
      </ul>
aunque creo que el select se repetiria y lo que tu quieres es que en los selectores te muestre los option en 1 solo select
0
Puntos
Por alber hace 127 meses
Administrador
Respuesta #4
Sí, alber, tu propuesta es una de las muchas formas que he probado. La tuya en concreto, me saca tantos select como páginas, con una opción cada uno y sin utilidad puesto que no es seleccionable (no aparece como link).

Lo mas que he conseguido es una forma que me muestra el select con todas las páginas. Hasta ahí correcto. Lo malo es que no son links seleccionables; no hace nada.
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #5
<ul>
<select>
<?php
         $totalPag = ceil($total/$limit);
         $links = array();
         for( $i=1; $i<=$totalPag ; $i++)
         {
            $links[] = "<li><a href=\"?pag=$i\"><option>$i</option></a>";
         }
         echo implode("<li>", $links);
      ?>
      </select>
      </ul>
</div>
De esta forma consigo un solo select con todas las páginas generadas por el contenido, pero los números de página no son seleccionables; no son links.
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #6
Presiento que estoy cerca y que el fallo debe ser una tonteria, pero no soy capaz de dar con ello.
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #7
Jose, el código pertenece a un sistema de paginación. Me funciona perfectamente, pero el problema es que me saca todos los números de páginas. Lo malo que tiene ese modo es que si, por ejemplo, tienes 200 páginas de 50 resultados cada una, te saca las 200, 2000 o las que tengas. con un select tienes un scroll y todo queda en un espacio reducido, sin llenarte la página de números. ¿Lo entiendes ahora?

Pongo un link para que veas una foto y te hagas una idea.

https://lh6.googleusercontent.com/--7gXSFtWPO0/UjJAZfK6hdI/AAAAAAAABCY/_ZzZwvaAWIc/s720/Screenshot%2520%252800h%252025m%252054s%2529.jpg
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #8
Ya creo que entiendo, con el select obtienes la lista, todo bien.. Ahora solo te falta que al darle click a alguna opción de esa lista te funcione como link y te lleve a alguna página ¿no? Si es así, me parece que nos estamos yendo por otro lado. Creo que la solución está en aplicar CSS a el <ul> y convertirlo en una especie de menu dinámico, y no se si sea posible agregarle un scroll.. Déjame probar.
0
Puntos
Por Jose hace 127 meses
Experto Sitio web
Respuesta #9
Pido disculpas por el desastre de respuesta que hice pero ya lo he solucionado.. Sería así. En donde quieres que aparezca el listado de páginas colocas lo siguiente:
<div id="paginacion">
	<script language="javascript">
		function vlist() {
			document.getElementById('listado').style.display = 'block';
			document.getElementById('cerrar_listado').style.display = 'block';
		}
		function clist() {
			document.getElementById('listado').style.display = 'none';
			document.getElementById('cerrar_listado').style.display = 'none';
		}
	</script>
	<a onmouseover="javascript:vlist();">Páginas</a>
	<div id="cerrar_listado"><a onclick="javascript:clist();">Cerrar</a></div>
	<div id="listado">
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
		<a href="#">Pagina #</a><br>
	</div>
</div>

Y colocas ésto en tu documento CSS para darle estilos, estilos que puedes modificar al gusto..
#listado {
	display: none;
	background: rgba(256,0,0,0.2);
	overflow-y:scroll;
	height:200px;
	word-wrap:break-word;
}

#cerrar_listado {
	display: none;
	text-align: center;
	width:100px;
	height: 20px;
	background: rgba(100,100,100,0.3);
	font-size: 12px;
	color:#ffffff;
	text-transform: uppercase;
	cursor: pointer;
}

#paginacion {
	width:110px;
	float:left;
}
Nota: donde está la lista de link coloca el código PHP para que te salga lo que tienes tú.. Espero que ahora sí te haya servido.
0
Puntos
Por Jose hace 127 meses
Experto Sitio web
Respuesta #10
Mi querido Jose, he probado la solución que propones y no es adecuada en este caso. El problema que tiene es que no deja de ser un simple select, y me explico: tan solo te muestra los resultados que le intrduzcas, nada más. Lo fundamental en cualquier sistema de paginación es que este crezca en función del contenido: cuanto más contenido tengas, más páginas te genera de forma automática. Ni tan siquiera puedes seleccionar el número de resultados a mostrar por página.

Si he tardado en responder es porque he probado varios modos de adaptarme a tu propuesta pero sin éxito. De todas formas te estoy muy, muy agradecida por la dedicación y te mando un beso muy fuerte.

Obviamente no me olvido de ti, Alber, que antes se me olvido. Un beso grande.
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #11
Lo he resuelto:
<select onchange="location.href = this.value">
  <?php
         $totalPag = ceil($total/$limit);
         $links = array();
         for( $i=1; $i<=$totalPag ; $i++)
         {
			if(isset($_GET['pag']) && $_GET['pag'] == $i){
				$links[] = "<option value=\"?pag=$i\" selected>$i";
			}else{
				$links[] = "<option value=\"?pag=$i\">$i";
			}	
         }
         echo implode("</option>", $links);
      ?>
      </select>
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate