Foros del Web » Programando para Internet » PHP »

Como modificar un registro de PHP a través de un listado

Estas en el tema de Como modificar un registro de PHP a través de un listado en el foro de PHP en Foros del Web. Hola a todos. Este es mi primer foro. Soy programador empírico de web. Como muchos empece con html y luego empece a programar en php, ...
  #1 (permalink)  
Antiguo 24/06/2011, 15:02
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 5 meses
Puntos: 181
Como modificar un registro de PHP a través de un listado

Hola a todos. Este es mi primer foro. Soy programador empírico de web. Como muchos empece con html y luego empece a programar en php, mysql y javascript a través de libros, tutoriales y por supuesto está página que es excelente. Me registre para buscar ayuda y por supuesto para devolver un poco de mis conocimientos a personas que se estan iniciando en esto.

Ahora si vamos a la pregunta (jejejeje) Pues basicamente tengo el siguiente problema. He programado un script para que el usuario pueda ver una cantidad X de noticias de su blog en donde puede ver el titulo del blog, la fecha en la que fue creado y una casilla de verificación donde puede borrar, actualizar o crear una nueva entrada. De igual forma si las noticias que tiene el usuario son mayores que X muestre la paginación. Para poner un ejemplo digamos que X=10 y las noticias son 50. Por tanto se dividira en 5 paginas donde se podran ver las noticias. (1 a la 10, 11 a la 20, etc). Hasta aquí todo me ha funcionado bien y sin problemas.

Como pueden ver en el script que anexo la variable $tamanoPagina=10; es la que en estos momentos me dice que mis páginas estaran restringidas a 10 registros por pagina. Lo que yo quiero hacer es que por medio de una simple lista de selección yo pueda variar este valor a cualquiera que yo le indique por medio de una lista (hecha con un simple formulario de html). La idea es que este valor se procese en la misma pagina. es decir algo así como:

$tamanoPagina=$_POST["registros"]; donde registros corresponda al valor que me genera la lista (5,10,20,50,100 o los que yo quiera colocar).

He leido que se pueden autoprocesar las paginas en PHP para que en vez de darle action al formulario y se dirija a otro script haga la gestión dentro de la misma página para que el usuario no vea ese pantallazo blanco mientras busca el script y retorna a la pagina. Si alguien me explica como se puede hacer esto o si tiene otra solución en php o usando javascript o una combinación de ambas lo agradeceria mucho.

A continuación dejo el script de lo que he hecho hasta el momento. Espero su valiosa ayuda y ojala este tema les sirva a muchas personas que pudieran tener la misma duda y así aprender todos.

$tamanoPagina=10;

$pagina=$_GET["pagina"];
if (!$pagina){
$inicio=0;
$pagina=1;
}
else{
$inicio=($pagina-1)*$tamanoPagina;
}

$hacerConsulta=mysql_query($consulta, $conexion);
$numeroDeNoticias=mysql_num_rows($hacerConsulta);
$totalPaginas=ceil($numeroDeNoticias/$tamanoPagina);

echo ("Número de noticias encontradas: ".$numeroDeNoticias.salto);
echo("Se muestran páginas de ".$tamanoPagina." registros cada una".salto);
echo("Mostrando la página ".$pagina." de ".$totalPaginas.salto);
$consulta="SELECT * FROM noticias ORDER BY idNoticias DESC LIMIT ".$inicio.",".$tamanoPagina;
$hacerConsulta=mysql_query($consulta, $conexion);
if($totalPaginas>1){
for($i=1;$i<=$totalPaginas;$i++){
if ($pagina==$i)
echo $pagina . " ";
else{
echo("<a href='index2.php?pagina=".$i."'> ".$i." </a>");
}
}

}

Y la idea es que con un simple formulario como este:

body>
<form id="formulario" name="formulario" method="post" action="pasarValor.php">
Seleccione el valor de registros que desea ver
<select name='registros' id='registros'>
<option value='5'>5</option>
<option value='10'>10</option>
<option value='20'>20</option>
</select>

<input type='button' value='Aceptar'>
</form>
</body>

Se pudiera cambiar dinamicamente el valor de el número de registros visibles en pantalla.
  #2 (permalink)  
Antiguo 24/06/2011, 15:10
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Como modificar un registro de PHP a través de un listado

1, Agrega un form con un select con las posibilidades que se pueden elegir, 5, 10, 15, etc.. noticias por página.
2. Este form apunta al archivo que realiza la paginación.
3. Luego

Código PHP:
Ver original
  1. $tamanoPagina = isset($_POST['tamanopagina']:$_POST['tamanopagina']?10);

Si han pasado el valor por formulario, lo asignas, si no, el tamano de pßagina serßa 10.

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 24/06/2011, 15:49
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 9 meses
Puntos: 336
Respuesta: Como modificar un registro de PHP a través de un listado

para lograr ese efecto de no recargar la pagina necesitas AJAX.

un código que uso bastante para ese efecto que quieres es este:

Código PHP:
function GET_ajax(http,div_name,frm_name) {
    var 
GET_xmlhttp false;
    var 
frm false;
    try { 
GET_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (
e) { try { GET_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch (
e) { try { GET_xmlhttp = new XMLHttpRequest(); }
    catch (
e) { GET_xmlhttp false; }}}
    if (!
GET_xmlhttp) return null;
    
frm document.getElementById(frm_name);
    
    var 
url "frm_name=" frm_name;
    for (
0frm.elements.lengthi++) {
        
frm.elements[i].disabled true;
        if (
frm.elements[i].type == "checkbox") {
            if (
frm.elements[i].checked)
                
frm.elements[i].value 1;
            else
                
frm.elements[i].value 0;
        }
        if (
frm.elements[i].type == "radio") {
            if (
frm.elements[i].checked){
                
url url "&" frm.elements[i].name "=" escape(frm.elements[i].value);
            }
        }else{
            
url url "&" frm.elements[i].name "=" escape(frm.elements[i].value);
        }
    }
    
GET_xmlhttp.open("GET"http ".php?" urltrue);
    
GET_xmlhttp.onreadystatechange = function() {
        if (
GET_xmlhttp.readyState == 4) {
            for (
0frm.elements.lengthi++) {
                if (
frm.elements[i].type == "checkbox")
                    
frm.elements[i].checked false;
                if (
frm.elements[i].type == "password")
                    
frm.elements[i].value "";
                    
                
frm.elements[i].disabled false;
            }
            if (
GET_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") > -1) {
                var 
GET_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") + "<script type=\"text/javascript\">".length;
                var 
GET_xmlhttp.responseText.indexOf("</script>") - x;
                eval(
GET_xmlhttp.responseText.substr(xy));
            }else{
                
document.getElementById(div_name).innerHTML GET_xmlhttp.responseText ' ';
            }
        }
    }
    
GET_xmlhttp.send(null);
    return 
false;

que viene siendo la parte básica de AJAX, ponlo entre tus funciones javascript, ahora te explico como se usa XD

primero que nada debes crear un area delimitada por tags con una id, por ejemplo un <div> o un <span>

<div id="mi_contenido"></div>

este div contendrá el contenido de tu primer código pero por un include(), para el ejemplo lo llamaré script.php, tu div quedaría así:

<div id="mi_contenido"><?php include('script.php'); ?></div>

trata de entender lo que estamos haciendo por que aquí se pondrá complicado, las primeras lineas de la funcion GET_ajax generan una página HTML, pero no se muestra, en vez de eso se guarda en una variable, luego inserta el contenido de esa variable en donde tu quieras, en nuestro caso será dentro del div, ESTO es la escencia elemental de AJAX, generar páginas ocultas y luego mostrarlas una vez que se han cargado y el usuario no sabe nada XD

entonces ahora puedes modificar el botón de tu formulario algo así:

<input type='button' value='Aceptar' onclick="GET_ajax('script.php','mi_contenido','formulario')">

te explico cada parametro de la función:

GET_ajax(página html invisible a generar,donde quieres poner el contenido generado,el formulario desde donde envías los datos)

y eso es AJAX, espero que más de uno vea este tema, la mayoría cree que AJAX es muy complicado y se facilitan la vida usando cosas como jquery, pero no es tán complicado en realidad, solo hay que entenderlo :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Última edición por stramin; 24/06/2011 a las 15:54
  #4 (permalink)  
Antiguo 27/06/2011, 22:13
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 5 meses
Puntos: 181
Respuesta: Como modificar un registro de PHP a través de un listado

Hola, vi tu respuesta pero la verdad no me quedo muy claro lo que esta haciendo el script. Trate de hacerle el seguimiento pero la verdad no entiendo parte de la sintaxis del mismo y por tanto no me queda sencillo adaptarlo a mis necesidades. De todas formas el otro día vi en un video algo sobre action y algo que decia $_server php_self o algo parecido, De casualidad lo has usado? en teoria podria funcionar porque parece que el servidor ejecuta el mismo script de php. Si alguien ha utilizado esta función y lo supiera explicar o resumir seria de mucha ayuda.
  #5 (permalink)  
Antiguo 28/06/2011, 09:21
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 9 meses
Puntos: 336
Respuesta: Como modificar un registro de PHP a través de un listado

si lo he usado, pero eso no te sirve para nada, solo te dice la ruta donde estas ejecutando tu script

prueba tu mismo:

echo $_SERVER['PHP_SELF'];

para lograr lo que quieres necesitas AJAX, si no te quedó claro mi ejemplo entonces tendrás que buscar una guia de AJAX... o jquery...
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #6 (permalink)  
Antiguo 04/07/2011, 09:19
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 5 meses
Puntos: 181
Respuesta: Como modificar un registro de PHP a través de un listado

Muchas gracias por la colaboración. Aunque aun no entiendo al 100% como funciona el script le echare una ojeada a Ajax para entender la logica y poder aplicarlas en mis scripts. Es algo que necesito trabajar a mediano plazo y me ha servido esta pequeña guia para empezar.

Etiquetas: autoprocesado, formulariosenphp, paginacion-en-php
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 23:28.