Foros del Web » Programando para Internet » PHP »

Enviar en arreglos de un script.php a otro script.php

Estas en el tema de Enviar en arreglos de un script.php a otro script.php en el foro de PHP en Foros del Web. Hola Amigos del Foro de PHP. ( ). Mi consulta es la siguiente, necesito enviar un arreglo de una pagina en PHP a otra pagina ...
  #1 (permalink)  
Antiguo 16/12/2004, 10:03
Avatar de myconatani  
Fecha de Ingreso: enero-2004
Ubicación: Pje.Ralún 8955 Santiago
Mensajes: 73
Antigüedad: 13 años, 11 meses
Puntos: 1
Enviar en arreglos de un script.php a otro script.php


Hola Amigos del Foro de PHP.

( ). Mi consulta es la siguiente, necesito enviar un arreglo de una pagina en PHP a otra pagina en PHP. No onstante menciono que la pagina de origen es la misma pagina receptora (recursiva), eso significa que se llama asi misma al pinchar un <a href=rac_distvamm.php? donde envio una serie de parametros que eligio el usuario (chekcbox, submit, ect...), dentro de esos parametros hay arreglos (array). La pagina tiene boton submit y variados Link. Los Link los ocupos para Ordenamientos (ASC o DESC), y el submit para Buscar lo que selecciono.

Origen : rac_distvamm.php
Destino : rac_distvamm.php

Espero que me entienden.

atte.
myconatani.
__________________
myconatani
  #2 (permalink)  
Antiguo 16/12/2004, 10:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé si tomastes el título de tu mensaje de la "FAQ":

http://www.forosdelweb.com/f18/faqs-php-530600-post262072/

Pero ahí explica como hacerlo sin problemas. Que el script receptor sea el mismo que el que envia no es problema ..

Tu lógica será la que defina si aplicar la "serialización" o la "des-serialización" en función de la existencia de tu variable que propagas en el URL:

Código PHP:
if (isset($_GET['tu_array'])){
// des-serializa ..
} else {
// serializa

Un saludo,
  #3 (permalink)  
Antiguo 17/12/2004, 13:42
Avatar de myconatani  
Fecha de Ingreso: enero-2004
Ubicación: Pje.Ralún 8955 Santiago
Mensajes: 73
Antigüedad: 13 años, 11 meses
Puntos: 1
Envio de arreglos de script.php a sript.php

Estimado Cluster.

Disculpa, pero me he estado cabeceando todo el día y opte por enviar un ejemplo de lo que yo quiero :

<?
echo "<html>";
echo "<head>";
?>
<script language="JavaScript" type="text/javascript">
var n=0;
function Valida_sel ()
{
var n=0;
chk=document.getElementById('tabla').getElementsBy TagName('input');
for (i=0; i<chk.length; i++) {if (chk[i].checked) {n++;}}
if (n==0) {alert ("Debe seleccionar al menos una CELDA"); return false;}
}
</script>
<?
function arr_envia($arr)
{
$tmp = serialize($arr);
$tmp = urlencode($tmp);
return $tmp;
}
function arr_recibe($arr)
{
$tmp = stripslashes($arr);
$tmp = urldecode($tmp);
$tmp = unserialize($tmp);
return $tmp;
}
if (ISSET($_GET['$lineas']))
{$lineas=$_GET['$lineas'];
$lineas=arr_recibe($lineas);
echo "<br>RECIBE : ",$lineas;}
else
{echo "<br>ENVIO : ",$lineas;
$lineas=arr_envia($lineas);
echo "<br>ENVIO : ",$lineas;}
echo "<title>Enviar Arreglos a un mismo SCRIPT</title>";
echo "</head>";
echo "<body>";
echo "<form name=form1 method=GET action=prueba02.php?lineas=$lineas>";
echo "<table id=tabla>";
echo "<tr><td>";
echo "<a href=\"prueba02.php?lineas=$lineas\">Presione";
echo "</td></tr>";
$sel=""; if ($lineas[0]=="1") {$sel=" checked ";}
echo "\n<tr><td><input type=checkbox name=lineas[0] $sel value='1'>Marcelo</td></tr>";
$sel=""; if ($lineas[1]=="2") {$sel=" checked ";}
echo "\n<tr><td><input type=checkbox name=lineas[1] $sel value='2'>Myriam</td></tr>";
$sel=""; if ($lineas[2]=="3") {$sel=" checked ";}
echo "\n<tr><td><input type=checkbox name=lineas[2] $sel value='3'>Constanza</td></tr>";
$sel=""; if ($lineas[3]=="4") {$sel=" checked ";}
echo "\n<tr><td><input type=checkbox name=lineas[3] $sel value='4'>Natalia</td></tr>";
$sel=""; if ($lineas[4]=="5") {$sel=" checked ";}
echo "\n<tr><td><input type=checkbox name=lineas[4] $sel value='5'>Tamara</td></tr>";
$sel=""; if ($lineas[5]=="6") {$sel=" checked ";}
echo "\n<tr><td><input type=checkbox name=lineas[5] $sel value='6'>Nicole</td></tr>";

echo "\n<input type=hidden name=lineas value='$lineas'>";

echo "\n<input type=submit name=buscar id=buscar value= Buscar OnClick=\"return Valida_sel();\">";

echo "</table>";

echo "</form>";
echo "</body>";
echo "</html>";

?>

Nota : De partida cuando llamo la pagina esta me destaca la casilla de constanza eso esta malo ¿Porque lo destaca?, al elegir otra casilla y le doy buscar no me mantiene la casilla y vuelve a destacar a Constanza.
Bueno la idea es que seleccione una o mas casilla, al presionar el Boton SUBMIT que mantenga las selecciones y cuando presione el Link que esta me mantenga la selccion al igual que el SUBMIT. No se en que estoy mal.

Espero que me entiendan.

Gracias.
atte.
Marcelo Lizana B:
Nick : myconatani
__________________
myconatani
  #4 (permalink)  
Antiguo 18/12/2004, 21:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No entiendo por què haces esto:

echo "<form name=form1 method=GET action=prueba02.php?lineas=$lineas>";

Tu array que compones en los input de tus checbox YA pasan como tal a tu script de proceso (sea si mismo o donde apuntes en tu action) al hacer el submit de tu formulario.

Es màs .. si lo quisieras hacer asì, .. tendrìas que tomar el total de tus elementos de tu formulario (los checkbox y otros que tuvieras) con JAVASCRIPT .. Para PHP en ese punto "no sabe" ni tiene forma de saber que checkbox cambias de estado ni que valor toman .. eso ya està sucediendo en el "cliente" (lado del cliente) .. no en "PHP" (lado del servidor).

En tu caso .. No es necesario ni que "numeres" los indices de tus checkbox (de sus nombres de variable) .. puedes usar

name="linea[]" .. serà automàtico la creaciòn del indice (desde el 0 a los que tengas).
Usa las comillas en los tag de HTML que corresponda!!!.

Usa para tu action simplemente:
Código PHP:
echo "<form name=\"form1\" method=\"GET\" action=\"prueba02.php\">"
(observa que respeto las comillas donde van .. si he de usar comilla doble y ya abrì mi echo con comilla doble .. la "escapo" con un \ delante ...)

Y al principio de tu script:
Código PHP:
// ¿està definida la variable lineas?
if (isset($_GET['lineas']){
   
// si es así la asigno a tu variable $lineas para que lo uses como ya lo tienes ...
   
$lineas=$_GET['lineas'];


Un saludo,
  #5 (permalink)  
Antiguo 18/12/2004, 21:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Se me olvidò ...
Y quita todo eso de:

echo "\n<input type=hidden name=lineas value='$lineas'>";

y ....

function arr_envia($arr)
{
$tmp = serialize($arr);
$tmp = urlencode($tmp);
return $tmp;
}
function arr_recibe($arr)
{
$tmp = stripslashes($arr);
$tmp = urldecode($tmp);
$tmp = unserialize($tmp);
return $tmp;
}
if (ISSET($_GET['$lineas']))
{$lineas=$_GET['$lineas'];
$lineas=arr_recibe($lineas);
echo "<br>RECIBE : ",$lineas;}
else
{echo "<br>ENVIO : ",$lineas;
$lineas=arr_envia($lineas);
echo "<br>ENVIO : ",$lineas;}

Un saludo,
  #6 (permalink)  
Antiguo 20/12/2004, 08:32
Avatar de myconatani  
Fecha de Ingreso: enero-2004
Ubicación: Pje.Ralún 8955 Santiago
Mensajes: 73
Antigüedad: 13 años, 11 meses
Puntos: 1
Pregunta Envio de Arreglos por la URL.


Hola Cluster, espero que estes bien y disculpa las molestias que te estoy dando pero recien me estoy iniciando en la creación de pagina en PHP, sin capacitación previa y a puro manual.

Bueno, hice las modificaciones correspondiente y funciona bien cuando presiono el boton SUBMIT y en la barra de la url mes da esto "http://mlizana.salfa.cl/prueba02.php...&buscar=Buscar", pero cuando presiono el LINK pierdo el contenido de la variable $lineas, y esta queda con un valor Array. Y en la barra de url me da esto http://<b>http://mlizana.salfa.cl/pr...neas=Array</b>. De que manera puedo conservar el valor la variable $linea sin que me afecte el procedimiento del boton SUBMIT, ¿ que es lo que me falta ?.

Escript de Ejemplo :

<?
if (isset($_GET['lineas']))
{
$lineas=$_GET['lineas'];
}
echo "<html>";
echo "<head>";
?>
<script language="JavaScript" type="text/javascript">
var n=0;
function Valida_sel ()
{
var n=0;
chk=document.getElementById('tabla').getElementsBy TagName('input');
for (i=0; i<chk.length; i++) {if (chk[i].checked) {n++;}}
if (n==0) {alert ("Debe seleccionar al menos una CELDA"); return false;}
}
</script>
<?
echo "<title>Enviar Arreglos a un mismo SCRIPT</title>";
echo "</head>";
echo "<body>";
echo "<form name=form1 method=GET action=$php_self>";
echo "<table id=tabla>";
$sel=""; for ($i=0; $i<=5; $i++) {if ($lineas[$i]=="0") {$sel=" checked ";break;}}
echo "\n<tr><td><input type=checkbox name=\"lineas[]\" $sel value='0'>Marcelo</td></tr>";
$sel=""; for ($i=0; $i<=5; $i++) {if ($lineas[$i]=="1") {$sel=" checked ";break;}}
echo "\n<tr><td><input type=checkbox name=\"lineas[]\" $sel value='1'>Myriam</td></tr>";
$sel=""; for ($i=0; $i<=5; $i++) {if ($lineas[$i]=="2") {$sel=" checked ";break;}}
echo "\n<tr><td><input type=checkbox name=\"lineas[]\" $sel value='2'>Constanza</td></tr>";
$sel=""; for ($i=0; $i<=5; $i++) {if ($lineas[$i]=="3") {$sel=" checked ";break;}}
echo "\n<tr><td><input type=checkbox name=\"lineas[]\" $sel value='3'>Natalia</td></tr>";
$sel=""; for ($i=0; $i<=5; $i++) {if ($lineas[$i]=="4") {$sel=" checked ";break;}}
echo "\n<tr><td><input type=checkbox name=\"lineas[]\" $sel value='4'>Tamara</td></tr>";
$sel=""; for ($i=0; $i<=5; $i++) {if ($lineas[$i]=="5") {$sel=" checked ";break;}}
echo "\n<tr><td><input type=checkbox name=\"lineas[]\" $sel value='5'>Nicole</td></tr>";
echo "\n<input type=submit name=buscar id=buscar value= Buscar OnClick=\"return Valida_sel();\">";
echo "<tr><td align=center bgcolor=cccccc><br>";
echo "<a href=\"prueba02.php?lineas=$lineas\">LINK<a>";
echo "</td></tr>";
echo "</table>";
echo "</form>";
echo "</body>";
echo "</html>";
?>

Muy agradecido,.
atte.
myconatani

Santiago de Chile, 20/12/2004 - 11:35 hrs.
__________________
myconatani
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:18.