Foros del Web » Programando para Internet » PHP »

Necesito Aprender a usar bien el GET y POST...

Estas en el tema de Necesito Aprender a usar bien el GET y POST... en el foro de PHP en Foros del Web. hola, estoy usando tu paginado... y creo a ver encontrado un problemilla... lo que ya no se si es mio... o del paginado... con mi ...
  #1 (permalink)  
Antiguo 09/08/2003, 21:54
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
Información Necesito Aprender a usar bien el GET y POST...

hola, estoy usando tu paginado... y creo a ver encontrado un problemilla... lo que ya no se si es mio... o del paginado... con mi script...

mira, intento pasar una variable desde un Form, esa variable lleva la seleccion de un registro... me sirve para que solo muestre los registros que cumplen esa condicion...

osea, el form envia "1", y el selecciona todas las que tienen 1 y hace el paginado... vale.. hasta hay todo bien... me muestra las que tengo y hace el paginado...

el problema viene despues, cuando pulso pagina 2,3,4, o 5 o la que sea... ya no recuerda la variable de CONDICION..., es decir... ya no sabe si debe mostrar las que sean de 1,2..etc...

supongo que la variable no pasa por el SID, y al siguiente resultado ya no sabe donde esta,,,

te muestro el codigo que uso, por si quieres testarlo, como ya digo, no se si es problema mio "creo que si", o que el paginado no permite esa opcion..."me extraña, porq pasa mas cosas por el SID"

asi q, te agradeceria que cuando tengas algo de tiempo...pq creo que es algo complicado... ya que esta integrado en mi script... y no esta del todo bien paginado... le dieras un vistazo...

gracias... y un saludote bien gordo



form------------
Código PHP:
<form method="POST" action="home.search2.php?accion=categoria">
        <
table width="504" border="1" bordercolor="Black" cellspacing="0" cellpadding="0" bordercolor="Black" align="center">
            <
tr>
                <
td align="center" valign="middle">
                    <
select name="categoria" size="1" class="botones3">
                        <
option value="asp">ASP</option>
                        <
option value="cgi">CGI</option>
                        <
option value="coldfusion">COLDFUSION</option>
                        <
option value="diseno">DISE&Ntilde;O</option>
                        <
option value="e-commerce">E-COMMERCE</option>
                        <
option value="flash">FLASH</option>
                        <
option value="htmlycss">HTML Y CSS</option>
                        <
option value="javascript">JAVASCRIPT</option>
                        <
option value="photoshop">PHOTOSHOP</option>
                        <
option value="phpymysql">PHP Y MYSQL</option>
                        <
option value="xml">XML</option>
                       </
select>
                    <
input type="submit" class="botones5" value=" MOSTRAR " name="medaigual">
                </
td>
</
form>
    </
tr>
</
table
form----------------------


pagina donde muestro los resultados--------------------------
Código PHP:

<?php
ob_start
();
header("Expires: Mon, 26 Jul 2002 05:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
include(
"counter.inc.php");
$titulo_seccion=" BUSCADOR DE WEB REGISTRADAS EN SHADOW TOP";
require(
"theme/theme.up.php");
require(
"aut_config.inc.php");
require(
'graphs.inc.php');
$pagina $HTTP_GET_VARS["pagina"];
require(
"class.paginado.inc.php");
$rs = new paginado($db_connect);
$rs->pagina($pagina); 
$rs->porPagina($number_pages);
$rs->propagar("ver");
$cuenta=$rs->pagina()*$rs->porPagina();
$cuenta=$cuenta-$rs->porPagina();

if (
$_GET['accion']=="categoria"){
if (!isset(
$_POST['categoria'])){
exit;
}

$usuario_consulta mysql_query("SELECT $selecttbl FROM $sql_tabla") or die($Err01);

echo <<< HTML
<body>
<form method="POST" action="home.search2.php">
        <table width="504" border="1" bordercolor="Black" cellspacing="0" cellpadding="0" bordercolor="Black" align="center">
            <tr>
                <td align="center" valign="middle">
                    <select name="categoria" size="1" class="botones3">
                        <option value="asp">ASP</option>
                        <option value="cgi">CGI</option>
                        <option value="coldfusion">COLDFUSION</option>
                        <option value="diseno">DISE&Ntilde;O</option>
                        <option value="e-commerce">E-COMMERCE</option>
                        <option value="flash">FLASH</option>
                        <option value="htmlycss">HTML Y CSS</option>
                        <option value="javascript">JAVASCRIPT</option>
                        <option value="photoshop">PHOTOSHOP</option>
                        <option value="phpymysql">PHP Y MYSQL</option>
                        <option value="xml">XML</option>
                       </select>
                    <input type="submit" class="botones5" value=" MOSTRAR " name="medaigual">
                </td>
</form>
            </tr>
        </table>




    <table width="496" border="1" cellspacing="1" cellpadding="1" bordercolor="Black" align="center">
        <td colspan="2" width="310">
            <div align="center">
                <b><font face="Verdana" size="1" color="Black" >Site Name</font></td></div>
        <td width="63">
            <div align="center">
                <b><font face="Verdana" size="1" color="Black" >Categoria</font></td></div>
        <td width="50">
            <div align="center">
                <b><font face="Verdana" size="1" color="Black" >Visitas</font></div>
        </td>
        <td width="50">
            <div align="center">
                <b><font face="Verdana" size="1"color="Black"  >Votos</font></b></div>
        </td>
</body>
HTML;

     if(!
$rs->query("SELECT * FROM $sql_tabla WHERE categoria LIKE '%".$_POST['categoria']."%' ORDER BY $searchregtbl DESC"))
{
     die( 
$rs->error() );
}

while(
$resultados $rs->obtenerArray()) {
$webname $resultados[webname];
$webname strtoupper ($webname);
$categoria $resultados[categoria];
$categoria strtoupper ($categoria);
$descripcion=$resultados[descripcion];
$descripcion strtoupper ($descripcion);
$cuenta++;
$graficos=bar_graph(
  
"vBar",
  
"$resultados[visitas];$resultados[votos]",
  
"<font face=Verdana size=1 color=Yellow>v <font face=Verdana size=1 color=White>% <font face=Verdana size=1 color=Yellow>v",
  
"#483D8B,#5B6071",
  
"#A09383"
)
;

echo <<< HTML
<tr>
    <td width="31" bgcolor="#5B6071"><div align="center"><font face="Arial" size="1"><b><a title="$webname esta en la posicion $cuenta">$cuenta</b>
    <td width="289" bgcolor="#5B6071"><div align="left"><a title="Pulsa aqui para ENTRAR en la web $webname,se registro el $resultados
[date]" href="home.yump.php?accion=download&id=$resultados[id]" target="_blanck"><font face="Verdana" size="1"><b>.: $webname :.
HTML;

$fecha_web $resultados[date];
$fecha_novedad date("Y-m-d H:i:s", (time()-$timenewweb));
if (
$fecha_web>$fecha_novedad)
echo 
"<font face=Verdana size=1 color=Yellow> .: WEB NUEVA :.";

echo <<< HTML
    </font></a></div></td>
    <td width="63" bgcolor="#5B6071"><div align="center"><font face="Arial" size="1" color="Aquamarine"><a title="$webname pertenece a la categoria: $categoria">$categoria
    <td width="50" bgcolor="#5B6071"><div align="center"><font face="Arial" size="1" color="Aquamarine"><a title="$webname tiene un total de $resultados
[visitas] visitas">$resultados[visitas]
    <td width="50" bgcolor="#5B6071"><div align="center"><font face="Arial" size="1" color="Aquamarine"><a title="$webname tiene un total de $resultados
[votos] votos">$resultados[votos]
    <div align="center">
    </td>
</tr>
    <td colspan="5"><center><table width="496" border="0" cellspacing="0" cellpadding="0">
<tr>
    <td align="center" valign="top" width="496"><center>
        <a href="home.yump.php?accion=download&id=$resultados
[id]" target="_blanck"><img src="banner/$resultados[imagen]" alt="Pulsa aqui para ENTRAR en la WEB $webname" height="60" width="435" border="0"></a><br>
            <font face="Arial" size="1" color="Black">$descripcion<a><br>
        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" height="40" width="294">
            <param name="movie" value="swf/b.votar.swf">
            <param name="quality" value="best">
            <param name="play" value="true">
        <embed height="9" pluginspage="http://www.macromedia.com/go/getflashplayer" src="b.votar.swf" type="application/x-shockwave-flash" width="294" quality="best" play="true">
        </object><a href="cuenta.voto.php?accion=votar&id=$resultados
[id]" target="_self"><img src="images/carpeta.gif" alt="Pulsa aqui para votar $webname" height="23" width="32" border="0">
<br></font></center></td><td align="center" valign="bottom" width="64">$graficos</td></tr></table>
HTML;
}

echo 
"</table>";
mysql_free_result($usuario_consulta);
mysql_close();
}

echo 
"<center><br><font face=Arial size=1 color=GreenYellow>";
echo 
$rs->anterior()." | ".$rs->nroPaginas()." | ".$rs->siguiente();
require(
"theme/theme.down.php");
?>
pagina donde muestro los resultados--------------------------


lo acavo de reeditar... funcionar funciona. la 1 vez... osea, pulsas el form... y sale el paginado exacto... pero cuando pulsas para pasar a otra pagina... pierde el valor del Form....
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 10/08/2003 a las 16:46
  #2 (permalink)  
Antiguo 10/08/2003, 01:02
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Yo lo solucione así:

Código PHP:
$rs->propagar(eregi_replace("pagina=[0-9]{1,6}&","",$_SERVER["QUERY_STRING"])); 

No recuerdo si cambie algo en la clase, pero esto me funciona. Ahora bien el metodo de tu formulario debe ser method="get" y no method="post" para que esto funcione.

=D
  #3 (permalink)  
Antiguo 10/08/2003, 13:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Es un fallo tuyo de "concepto". ¿entiendes para que sirve el metodo propagar()? No te ofendas, pero creo sinceramente que no. Lo digo porque solo veo que lo usas una vez, y para propagar la variable 'ver', que no veo de donde sale o donde la usas.

Y luego veo que tampoco entiendes como van los links de la paginacion. Tu llegas desde un formulario POST, recoges la variable POST y creas los resultados con los links. Para ir a otras paginas usas los links, que pasan los valores por GET. Pero tu solo recoges los del POST, que solo existen cuando se llama a la pagina desde el formulario.

Resumiendo, debes "propagar" las variables que quieres usar en todas las paginas, y debes hacer tu script para que tome esos valores de POST o de GET.

Suerte.

PD: La solucion de DotNetDeveloper le funciona porque con el metodo GET los parametros del formulario los pone en el querystring, y lo que esta haciendo es pegar esos valores en los links. Pero esta mal en el concepto. ¿Y si hay otros parametros que cambian de pagina a pagina, ademas de 'pagina'? ¿O que modificas en el script uno de los recibidos y quieres pasar el modificado?
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 10/08/2003, 16:37
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
hombre josemi, como me voy a enfadar.... supongo que intentas explicarme, no ofenderme....

pues partiendo de este punto, tienes razon, no lo se usar correctamente, por eso os pregunto...;)

ahora despues de todo esto... puedes explicarme como es... seria lo suyo... bueno... si te apetece... tampoco es una obligacion...

un saludo... y espero tu respuesta...
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 10/08/2003, 17:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, vamos a intentar explicarlo. La funcion propagar() recibe como parametro el nombre de una variable cuyo valor quieres propagar por los links de la paginacion. En este caso creo que los valores que quieres propagar son el de 'accion' y 'categoria'. Entonces deberias hacer algo asi:
Código PHP:
$rs = new paginado($db_connect);

$rs->pagina($pagina); 

$rs->porPagina($number_pages);

$rs->propagar("ver");

// propagamos las variables accion y categoria

$accion=$_GET['accion'];
$rs->propagar('accion');
$categoria=(isset($_POST['categoria']))?$_POST['categoria']:$_GET['categoria'];
$rs->propagar('categoria');


$cuenta=$rs->pagina()*$rs->porPagina();

$cuenta=$cuenta-$rs->porPagina(); 
El operador ternario ?: es como un if...else..., si el primer operando es cierto, devulve el segundo, si no el tercero. Tal como esta puesto si existe $_POST['categoria'], toma su valor, si no existe, toma el de GET.

Luego, no se como encaja en la logica de tu script este codigo, pero yo lo quitaria:
Código PHP:
if ($_GET['accion']=="categoria"){

if (!isset(
$_POST['categoria'])){

exit;


o lo modificaria para tener en cuenta tambien el caso en que 'categoria' te llege por GET.

Y por ultimo, en tu consulta SQL, haces uso de $_POST['categoria'], que puede o no existir. Cambialo por la variable que has recogido antes, $categoria:
Código PHP:
if(!$rs->query("SELECT * FROM $sql_tabla WHERE categoria LIKE '%".$categoria."%' ORDER BY $searchregtbl DESC")) 
Y si mal no recuerdo, no hace falta modificar nada mas. Al crear los links se añaden automagicamente las variables a los links, propagando esos valores. Y a funcionar se ha dicho (eso creo).

El truco esta en primero leer los valores, ya sea por POST o por GET, meterlos en variables, propagar esas variables (cuyo nombre debe coincidir con el campo que leas de POST o GET), y usar esas variables en el script donde antes usabas directamente POST o GET.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 10/08/2003, 17:55
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
bueno... aun no lo he leido, pero en cuanto acave de escribir lo hago... gracias amigo... juro no entender como nadie me aviso que existia esta web... no me lo explico...

gracias por la ayuda obtenida y pq siempre estais hay... no se puede pagar con dinero vuestra labor.

jaja no es peloteo, yo soy asi... y mas aun,,, conozco fdw desde hace solo 3 meses... y sois capaces de dejarme con la boca abierta dia, a dia, ya sea cuando me ayudais a mi, u a los demas...

sabes lo que pasa... que me he metido en camisas de once varas... antes de aprender a caminar bien... y puede que ese sea mi eterno error, que nunca esta mal que alguien me lo recuerde...

reconozco que hice un empastre de la leche....jajajaj, que malo es no saber.... y que malo es creer que uno sabe.....jajajaj...

un saludo a todos... y gracias Josemi.


pd... veo que lo unico que hice bien es el FORM.... jajaja, y pq me lo enseño Cluster....jajaja... que malo es no saber...
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 10/08/2003 a las 17:59
  #7 (permalink)  
Antiguo 10/08/2003, 18:17
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
jeje, he entendido bien la explicacion, y gracias pq funciona correctamente, como de constumbre...

pero voy aprobechar esta leccion y lo voy a complicar mas... asi aprendro a usar correctamente el GET y el POST, y a propagar bien las variables... tu explicacion... me va a tener entretenido esta noche... jejeje.

buena gente hay por aqui,,,,
__________________
3w.valenciadjs.com
3w.laislatv.com
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 21:13.