Una duda bien grande al usar while

  • Autor Autor TaurusZDK
  • Fecha de inicio Fecha de inicio
T

TaurusZDK

Gamma
Programador
No recomendado
hola e tengo una gran duda e estadu intentando armar un sistema de templetes q x los momentos me va super bien pero ahora intento armar la parte del administrador para borrar, modificar y crear nuevas plantillas el sistema es similar al que usa mybb las plantillas estan guardadas en la DB y luego con una clase las cargo pero intento hacer una consulta para cargar todos los templetes que tengo y no e podido solo obtengo 1 resultano
pero lo intente de la forma mas clasica y carga todo de maravilla e.e aqui les dejo todo para ver si me poden ayudar


PHP:
<?php
//este es mi codigo con el que intento cargar todas las plantillas creadas
	$query = $db->query("SELECT template_id, template, title FROM templates ORDER BY template_id DESC LIMIT 20"); 
       // intento colocarle el LIMIT y nada que funciona
	while ($templete = $db->fetch_array($query)) {
        $tid = $templete['template_id']; 
        $template = $templete['template']; 
        $title = $templete['title']; 
			
        eval('$templetes_row = "' . addslashes($templates->get('templetes_row')) . '";');        
					
	}

PHP:
<?php
//esta forma es la que me sirbe pero no me conbiene x el caso de tener que colocar todo rebuelto html junto al php

	$query = $db->query("SELECT template_id, template, title FROM templates ORDER BY template_id DESC");

 ?>
<div id="izquierda">
<h2>templetes</h2> <a href="module.php?accion=crear">Crear un nuevo templete</a>
<table id="articulos">
			<thead>
				<tr>
					<th scope="col">Identificador</th>
					<th scope="col">Modificar</th>
					<th scope="col">Eliminar</th>
				</tr>
			</thead>
			<tbody>
				<?php while ($barra = mysql_fetch_array($query)) { ?>
				<tr>
					<td class="titulo"><a href="barra_lateral.php?id=<?php echo $template['template_id'] ?>"><?php echo $barra['title'] ?></a></td>
					<td><a href="barra_lateral.php?id=<?php echo $template['template_id'] ?>"><img src="../imagenes/editar.png"></a></td>
					<td><a href="barra_lateral.php?accion=eliminar&id=<?php echo $template['template_id'] ?>"><img src="../imagenes/eliminar.png"></a></td>
				</tr>
			<?php } ?>
			</tbody>
		</table>
</div>

espero puedan echarme una manito 😉
 
Última edición:
Para que el while recorra todos los templates, la solución que te puedo dar es la siguiente:

Antes de un while me gustaría mas un for, con el for podés recorrer la lista de templates con la consulta que estas realizando, le pedis el id del template que al ir en aumento, podes declararlo asi:
Insertar CODE, HTML o PHP:
$templateid = ("SELECT template_id FROM templates") // obtenes el id de los templates

for(i=0;$templateid>i;i++;)// instancias una variable i, la cual cada vez que se repite el ciclo aumenta hasta que templateid sea igual a i, ahi frena
{
        //imagino que guarda los datos mientras el bucle se repite y los guarda en algun combobox o lista
	$tid = $templete['template_id']; 
        $template = $templete['template']; 
        $title = $templete['title']; 
}

Espero te sirva, si lo querías hacer con un while yo no lo veo viable, es más para un for el tema de recorrer, queda mas prolijo y para mi es lo mejor para lo que quieres hacer, espero haberte ayudado!
 
Waow thx ire a revisar aver si me sirvio y te aviso gracias!
 
De nada! Lo hé estado utilizando mucho programando en Java, pero como es una de las tantas operaciones en común con muchos lenguajes, quizás te sirva! Espero que me cuentes a ver que tal
 
no me a servido xD creo que es x que no la se usar ^^
 
No sería que tiene que ser:
PHP:
eval('$templetes_row .= "' . addslashes($templates->get('templetes_row')) . '";');

en lugar de:
PHP:
eval('$templetes_row = "' . addslashes($templates->get('templetes_row')) . '";');

??

También puedes intentar, en lugar del eval, algo como:
PHP:
ob_start()
while ($templete = $db->fetch_array($query)) {
	$tid = $templete['template_id']; 
	$template = $templete['template']; 
	$title = $templete['title'];	    
	$templates->get('templetes_row');            
}
$templetes_row = ob_get_clean();

suponiendo que:
PHP:
$templates->get('templetes_row');

te imprime el código html del template.

Saludos.
 
Última edición:
No sería que tiene que ser:
PHP:
eval('$templetes_row .= "' . addslashes($templates->get('templetes_row')) . '";');

en lugar de:
PHP:
eval('$templetes_row = "' . addslashes($templates->get('templetes_row')) . '";');

??

También puedes intentar, en lugar del eval, algo como:
PHP:
ob_start()
while ($templete = $db->fetch_array($query)) {
	$tid = $templete['template_id']; 
	$template = $templete['template']; 
	$title = $templete['title'];	    
	$templates->get('templetes_row');            
}
$templetes_row = ob_get_clean();

suponiendo que:
PHP:
$templates->get('templetes_row');

te imprime el código html del template.

Saludos.

THK!! me sirbio xD pero aun funcionando perfecto el eval tira un error pero igual funciona e.e mira asi le puse

PHP:
$sql = $db->query("SELECT username, user_id FROM zdk_users ORDER BY user_id ASC LIMIT 20");
while($fila = mysqli_fetch_array($sql))
{
 $name = $fila['username']; $uid = $fila['user_id'];
 
 eval('$str .= "' . addslashes($data) . '";');  
}

echo $str;

y me carga todos los resultados bien eso era lo que queria darle al eval una variable para despues llamarla donde yo quisiera asi no mesclar el php con el html que luemo me vuelvo un ocho xD

y asi tengo el templete

PHP:
nombre: {$name} id: {$uid}

y el error que me tira el eval es el siguiente:

Notice: Undefined variable: str in C:\wamp\www\web\consult.php(39) : eval()'d code on line 4

lo que veo es que deve ser x el . que lleba entre el signo de = y la variable : $variable .= ese pundo es el que deve aser conflicto pero de igual manera carga todo perfecto como le ago para que no me tire ese error?

y gracias!! =D
 
Intenta poniendo antes del while:
PHP:
$str = '';

Pero te recomendaría que lo hicieras de la otra forma que te había mencionado.

Saludos.
 
PHP:
@eval('$str .= "' . addslashes($data) . '";');
xD igual probare de la forma que me dijiste aver cual va mejor
 
Última edición:
Atrás
Arriba