Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2012, 21:53
Jalrez
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Updatepanel en php

Hola a todos! Primero de todo querría felicitaros por todo lo que aportáis en este foro a los que, como yo, no hace mucho que nos introdujimos en la programación. He aprendido muchísimo a través de vuestras preguntas y respuestas y ahora veo el momento de publicar una pregunta, pues no sé consigo encontrar la solución por mi mismo.

Mi duda es la siguiente, tengo una página principal en la que quiero mostrar una serie de resultados extraídos de MYSQL. Al inicio de la página presento un formulario con 6 botones seleccionables y en función del botón seleccionado cambio la query y se actualiza la página con los nuevos resultados, aquí copio el formulario:

<form name="nombre_categoria" method="POST" id="buscador">
<input class="radio" name="guardados" value="0" type="radio" />
<input class="radio" name="guardados" value="1" type="radio" />
<input class="radioDemo" name="guardados" value="2" type="radio" />
<input class="radioDemo" name="reto" value="mes" type="radio" />
<input class="radioDemo" name="reto" value="semana" type="radio" />
<input class="radioDemo" name="reto" value="dia" type="radio" />
</form>

El formulario lo trato con PHP para determinar la query a ejecutar en la base de datos. Aquí pego el código:

if (($_POST["reto"])!="0"){
$reto=$_POST['reto'];

$query1 = "SELECT * FROM `problemas` WHERE `problema_id` IN (SELECT `problema_id` FROM `retos` WHERE `tipo`='$reto')";
verProblemas();

}else{
if(($_POST["guardados"])!="0") {
$guardados=$_POST['guardados'];

if ($guardados!=0){

if ($guardados==1){
$query1 = "SELECT * FROM `problemas` WHERE `problema_id` IN (SELECT `problema_id` FROM `problemas_guardados` WHERE
`solver`='$usuario')";
verProblemas();

}else{
$query1 = "SELECT * FROM `problemas` WHERE `problema_id` NOT IN (SELECT `problema_id` FROM `problemas_guardados` WHERE
`solver`='$usuario')";
verProblemas();

}
}
}
else{
$query1 = "SELECT * FROM `problemas`";
verProblemas();
}
}

Después utilizo el siguiente código para guardar los resultados obtenidos:

$result= mysql_query($query1) or die (mysql_error());
else{
$i=1;
while ($row1 = mysql_fetch_array($result)) {
$reward[$i]=$row1['recompensa'];
$categorie[$i]=$row1['nombre_categoria'];
$title[$i]=$row1['titulo'];
$timetogo[$i]=tiempoRestante($row1['final']);
$referencia[$i]=$row1['problema_id'];
$query2="SELECT * FROM `Soluciones` WHERE `solver`='$solver' AND `id_problema` IN (SELECT `problema_id` FROM `problemas` WHERE `titulo`='$title[$i]') HAVING `version`='1' ORDER BY `titulo` DESC;";
$result2 = mysql_query($query2) or die(mysql_error());
$soluciones[$i]= mysql_num_rows($result2);
$i++;
}

Y finalmente muestro los resultados mediante un FOR y HTML:

for($o=1;$o<$i;$o++){
?>

<div class="problem_element">
<div class="reward"><?echo $reward[$o]?>€</div>
<div class="categorie"><?echo $categorie[$o]?></div>
<div class="timetogo"><?echo $timetogo[$o]?></div>
<div class="element_title"><span><?echo $title[$o] ?></span></div>

<div class="recieved"><? echo $soluciones[$o]?><img class='icon_table_active' src='http://localhost/images/yellowbulb.png'></div>
<div class="options"><a href='/../problemas_guardados/guardar_problema.php?identificador=<?echo $referencia[$o];?>'><img class='icon_table_active' src='http://localhost/images/TC.png'></a><a href="http://localhost/soluciones_enviadas/soluciones_enviadas.php?referencia=<?echo $referencia[$o]?>"><img class='icon_table_active' src='http://localhost/images/bulb.png'></a></div>

<div class="voter"> <?php echo ThumbsUp::item($referencia[$o])->template('up_down') ?> </div>

</div>
<?
}

Con esto consigo mostrar los resultados en función del valor seleccionado en los input (es más un filtro que una búsqueda). Lo que me pasa es que cuando se realiza el post la pantalla se recarga entera, con el respectivo "pantallazo blanco" del refresh entre situación anterior a la búsqueda y posterior. Conozco el updatePanel que se utiliza en ASP para recargar únicamente la sección que muestra los resultados en el submit, pero no consigo encontrar algo parecido que me funcione en PHP.

Si me pudierais hacer alguna recomendación os lo agradecería porque quizá voy muy mal encaminado para conseguir este efecto o tengo que trabajar con ajax o cambiar el display de los elementos con jquery... estoy un poco perdido y me iría muy bien el consejo de un experto para no terminar haciendo una chapuza.

PD: No sé si he acertado al poner el tema en la categoría PHP, pero cómo no sé bien con qué lenguaje resolver el problema... Espero no haberme extendido demasiado, pero como he visto tantos post en los que faltaba información para contestar he querido poner todo lo que tenía al respecto.

Gracias de antemano por las respuestas! Un saludo.