Foros del Web » Programando para Internet » PHP »

Pequeño problema con $_POST-$_GET

Estas en el tema de Pequeño problema con $_POST-$_GET en el foro de PHP en Foros del Web. Saludos a todos. Os explico. Estoy aplicando el código de jpinedo, con su Paginator . La paginación que necesito es muy simple, le paso unos ...
  #1 (permalink)  
Antiguo 25/11/2004, 09:55
Avatar de ortiz  
Fecha de Ingreso: septiembre-2004
Mensajes: 154
Antigüedad: 19 años, 7 meses
Puntos: 0
Exclamación Pequeño problema con $_POST-$_GET

Saludos a todos.

Os explico.

Estoy aplicando el código de jpinedo, con su Paginator
.
La paginación que necesito es muy simple, le paso unos valores por formulario que otro .php recibe. Hasta ahora recibía así:

$algo = $_POST['algo']


Y bien, si aplico el paginator con una query como esta:

SELECT * FROM tabla

No hay problema.Le paso el resultado a paginator... Pero cuando intento esto:

SELECT * FROM tabla WHERE campo = '$algo'


Muestra algunos resultados pero no pagina...

Estoy casi seguro que es por lo de propagar las variables, pero no se como solventarlo. Lo he buscado en el foro, pero no he encontrado la manera concreta de resolverlo.
También he de decir, que en la variable $_pagi_propagar, no la entiendo muy bien. En su página aparece cómo:

$_pagi_propagar = array("id","termino");


Esos 2 strings, no sé que son si campos de la BD, los "names" de los tags que pasan valores del formulario, las variables que reciban esos valores.....? !!

En fin, un saludo a todos!

PD: que me perdone jpinedo, por los 3 mensajes en su página , fruto de las ansias por que funcionara
  #2 (permalink)  
Antiguo 25/11/2004, 22:14
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Hola:
Esas cadenas son los nombres de las variables que quieres propagar.... pero sin el signo "$"... por ejemplo:
Si las variables que quieres propagar son $_POST['algo'] y $_POST['otro'], debes definir el array $_pagi_propagar("algo", "otro");
Nada más con esa variable.

Ahora, recuerda que esa propagación se hace vía GET (por url), o sea que en las siguientes llamadas a otras páginas $_POST['algo'] ya no existirá, sino que tendrás que llamarlo como $_GET['algo']... una forma de ver la lógica claramente para manejar esto es la siguiente:
Código PHP:
Si existe $_POST['algo'entonces $algo $_POST['algo'];// primera página generada
Si no existeentonces $algo $_GET['algo']; // cualquier otra página que ya no fue generada desde el formulario 
Esto último ya lo expliqué con más detalle en uno de los comentarios en la web del Paginator.

Espero haber resuelto tus dudas.

Un saludo y gracias por el interés
  #3 (permalink)  
Antiguo 26/11/2004, 06:03
Avatar de ortiz  
Fecha de Ingreso: septiembre-2004
Mensajes: 154
Antigüedad: 19 años, 7 meses
Puntos: 0
Gracias por la ayuda!

Pues como bien tú explicabas, mi problema era el ámbito de las variables. También he de decir que cambié la manera de recibir las variables, esto son dos partes.

1. Cambiar el método del formulario , de POST a GET-
2. Recibir las variables con GET


Te muestro como quedó:

1º Recibo el nombre de un distribuidor:

$dist = $_GET['distribuidor']


2º En función de eso ejecuto una función u otra:

switch($dist){

case "dist1":
funcion1();
break;

case "dist2":
funcion2();
break;
}


3º Ej de función

function funcion1(){
$fab = $_GET['fabricante'];
$cat = $_GET['categoria'];

etc,etc

(Incluyendo la recepción de las variables dentro de la función es cuando me empezó a funcionar la paginación correctamente)

y en función de estos y otros parametros:
Ej:

i[B]f( $cat == 'todos'){

$_pagi_sql = "SELECT * FROM tabla WHERE nom_fab='$fab'";


}

(Entonces, seguimos los pasos..)

$_pagi_cuantos = 10;

include("paginator.inc.php");

while($row = mysql_fetch_array($_pagi_result)){

(ETC,ETC)


}

echo "<div>$_pagi_navegacion</div>
}

}


Acabé un poco magullado cerebralmente, pero al final con la ayuda e información del foro y la propia ayuda de jpinedo, conseguí hacerlo

Ahora tengo otros problemitas que, primero investigaré un poquito más para no postear en valde, que lo hago mucho . Pero si no me salgo, utilizó el teléfono rojo!

Saludos!
  #4 (permalink)  
Antiguo 30/11/2004, 06:05
Avatar de ortiz  
Fecha de Ingreso: septiembre-2004
Mensajes: 154
Antigüedad: 19 años, 7 meses
Puntos: 0
Exclamación Progagar variables que no vengan por $_GET

Buenas,

sigo con el tema del paginator. El problema del $_GET ya lo solventé. Ahora la problemática es un tanto diferente. Ej:

$con = mysql_query("SELECT id_pdf,nom_pdf,(TO_DAYS(NOW())- TO_DAYS(fecha)) as dias,imagen,logo FROM pdf WHERE fecha <> '0000-00-00' ORDER BY dias ASC ",$dbi);

//dias, recoge los dias de antigüedad que tienen las filas en la tabla, y descarta filas que no tengan asignada una fecha correcta


while($fila = mysql_fetch_array($con)){

$dias = $fila["dias"];

//Aquí, igual $dias al valor,recogido de la matriz asociativa

if(esnuevo($dias)){

//Si $dias es menor que 30, se muestra un campo con una imagen que muestra la novedad de la fila

ETC ETC
}

}
function esnuevo($x){
$limite="30";
if($x <= $limite){
return true;
}else{
return false;
}
}
************************************************** ********

Este seria a grandes rasgos el código. Problema!, que si inserto en un mismo día 100 filas, pues tengo 100 resultados a mostrar. Hay es cuando entra el paginator.
El problema es que al aplicar el paginator, la variable $dias me da problemas. Deduzco que es por el tema de la propagación. Esto es algo que creo que no está en la web de jpinedo. Si alguien sabe donde está explicado....Digamos, el progagar variables dentro de una función que no vienen con $_GET.

Gracias a todos
  #5 (permalink)  
Antiguo 30/11/2004, 14:04
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
mmm... creo que no entendí bien...
Todas las variables que quieras propagar lo harán por GET.
Según lo que veo, la variable $dias la estás calculando desde el sql... por lo que no es necesario propagarla...
Por favor especifica un poco más tu problema.

Ah... y si quieres hacer una variable global dentro de una función... sólo tendrás que declararla como tal dentro de esta.... pero tampoco parece ser tu caso...

Saludos

Última edición por jpinedo; 30/11/2004 a las 14:44
  #6 (permalink)  
Antiguo 01/12/2004, 09:51
Avatar de ortiz  
Fecha de Ingreso: septiembre-2004
Mensajes: 154
Antigüedad: 19 años, 7 meses
Puntos: 0
Exclamación

Hola ,

perdona mi falta de expresión. Es que no tengo claro todavía, si cuando hablamos de variables que se reciben por $_GET, son SOLO las que vienen por ejemplo de un formulario.

Como bien dices, yo calculo días con la función de mysql. Eso es una variable que no viene de otro formulario, no viene dada por $_GET, creo. Eso es lo que no tengo claro. Las variables que no vienen dadas por un formulario.

De todas maneras el código funciona. No lo quiero poner, porque es muy repetitivo y crearé un pedazo de ladrillo considerable. Básicamente, la diferencia que hace que ahora funcione es esta:

Código PHP:
//Antes

$dias $row['dias'];// dias, es (TO_DAYS(NOW())- TO_DAYS(fecha)) as dias

if(esnuevo($dias)){//esnuevo devuelve un true, si $dias es menor que 30

       
**muestra filas**
}else{
       **
no muestra filas**
}

*********************************************************
*********************************************************
//Ahora

$dias $row['dias'];// dias, es (TO_DAYS(NOW())- TO_DAYS(fecha)) as dias

if ( $dias 30){

**
bla bla**
else{

**
bla bla**


Saludos!!!

PD: por fin pagino!!!

Última edición por ortiz; 01/12/2004 a las 09:53
  #7 (permalink)  
Antiguo 01/12/2004, 18:32
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Para pasar variables por el método GET, lo haces mediante la url ?var1=valor1&var2=valor2...

Las variables de un formulario puedes pasarlas por el método GET (lo que pondrá todo tu formulario en la url a la vista de todos) o por el método POST (que no pone a la vista tus variables)... eso lo defines en la etiqueta:
<form action="pagina.php" method="POST"> // si no pones nada será por defecto GET.

Para recoger esas variables lo haces mediante los superglobales $_POST o $_GET (según sea el método que hayas utilizado).

Pero cada vez que envíes variables por la url las recogerás con $_GET (sin importar si vienen de un formulario o si las escribiste a mano en la barra de direcciones, da igual).

Saludos
  #8 (permalink)  
Antiguo 01/12/2004, 18:40
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Además en tu caso es mejor manejar esa condición (de los 30 días) desde el SQL en la cláusula WHERE y no desde PHP. En el manual de mySQL puedes ver un ejemplo:
http://dev.mysql.com/doc/mysql/en/Da...functions.html

Saludos
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 16:25.