Foros del Web » Programando para Internet » PHP »

Variables que no pasen por la URL

Estas en el tema de Variables que no pasen por la URL en el foro de PHP en Foros del Web. Estimados Amigos, Tengo un par de problemas que no he podido conseguirle la solucion: 1) Tengo dentro de un texto unos numeros de contratos que ...
  #1 (permalink)  
Antiguo 24/08/2004, 12:27
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Pregunta Variables que no pasen por la URL

Estimados Amigos,

Tengo un par de problemas que no he podido conseguirle la solucion:

1) Tengo dentro de un texto unos numeros de contratos que deberan ser pasadas por un formulario para ser procesados, pero cuando el texto es muy largo no me procesa la pagina, me imagino que debe ser es que existe un limite en el tamaño de la URL. He estado buscando una manera de procesar esa información en al misma pagina pero no lo he logrado conseguir.

2) En el texto los numeros de contrato que consiguo deben de ser comparados a los ya existentes en mi base de datos, si no existen deben de ser ingresados los nuevos contratos, pero si ya existen deben de ser obviados.

este es el codigo que tengo y con el que estoy trabajando:

<?
include 'conexion.php';
$texto = $_get['texto'];
$patron = "#(\w*@\w*\.w*)#";
if (preg_match_all($patron, $texto, $partes))
{
$n_contrato=$partes[1];
for ($i=0; $i < count($n_contrato); $i++)
{
echo $n_contrato[$i]."\n";
$grabar = "INSERT INTO 'clientes' ('id' , 'contrato') VALUES ('NULL' , '$n_contratos[$i]');
mysql_query($grabar,$conexion);
}
}

Hasta este punto esta bien debido que me busca los contratos con la condicion de $patron y los inserta en la base de datos determinadas, el problemas es que tengo numeros de contratos repetidos, debido que no existe ninguna condicion que lo prohiba.

Saludos y Gracias
  #2 (permalink)  
Antiguo 24/08/2004, 15:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
1) .. ¿que método (method) usas en tu formulario? .. POST puede llevar mucha más información que GET (ahora no tengo "numeros" para indicarte pero sé que hay gran diferencia).

Un saludo,
  #3 (permalink)  
Antiguo 24/08/2004, 17:00
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Hola Custer, el metodo que uso en mi formulario para enviar las variables es $_POST[TEXTO]
  #4 (permalink)  
Antiguo 24/08/2004, 18:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pon algún ejemplo más concreto del tipo de texto de los que usas o que es lo que sucede exactamente (con ejemplos) y el código que uses (tanto de tu formulario como el de la parte PHP). En general, comenta más detalladamente como funciona tu sistema.

Tal vez exista alguna forma mejor de procesar los datos que estás usando ..

Un saludo,
  #5 (permalink)  
Antiguo 24/08/2004, 19:02
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Es algo asi Cluster,

Pagina con el Formulario:>

<form action="c_clientes.php" method="<? $_POST[texto] ?>" name="form1">
<textarea rows="20" cols="50">
En este espacio viene colocado todo el texto en el cual vienen pscificados numeros de contratos tales como XXXXXX@cliente1, XXXXXX@cliente2, XXXXXX@cliente3, XXXXXX@cliente4, etc. etc. y en donde en muchos casos se repiten los numeros de contratos como XXXXXX@cliente1, XXXXXX@cliente4
</textarea><br>
<input type="sumit" value="Enviar"></form>

y en la pagina de proceso es lo que especifique anteriormente, que es lo siguiente:>
<?
include 'conexion.php';
$texto = $_get['texto'];
$patron = "#(\w*@\w*\.w*)#";
if (preg_match_all($patron, $texto, $partes))
{
$n_contrato=$partes[1];
for ($i=0; $i < count($n_contrato); $i++)
{
echo $n_contrato[$i]."\n";
$grabar = "INSERT INTO 'clientes' ('id' , 'contrato') VALUES ('NULL' , '$n_contratos[$i]');
mysql_query($grabar,$conexion);
}
}


Ahora bien cuando el texto es muy largo no procesa la pagina, nuevamente porque me imagino que existe un limite en el tamaño de las varibles que pasan por la URL. Y una vez mas quedan registrados todos los contratos pero no se como hacer para que no se graben los contratos ya registrados.

Saludos Amigo Cluster.
  #6 (permalink)  
Antiguo 24/08/2004, 19:04
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Sorry, me falto el name="texto" en la parte de <textarea></textarea>
  #7 (permalink)  
Antiguo 24/08/2004, 20:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El method de un formulario .. es POST o GET (y fijo) ..

Como ya te comenté .. POST acepta más datos que GET .. así que define POST como method y recoge en tu scripts PHP (o parte PHP ) por dicho método:

En tu formulario:
<form action="c_clientes.php" method="POST" name="form1">

Y en tu parte PHP:
$texto = $_POST['texto'];

Un saludo,

PD: no sé de donde sacastes que había que usar method="<? $_POST['texto'] ?>"
  #8 (permalink)  
Antiguo 24/08/2004, 20:52
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Cluster, disculpa que moleste tanto,

Pero en que lugar del form debo colocar $texto = $_POST['texto']; debido que si no lo coloco en el method="<? $_POST['texto'] ?>" no me transfiere la variable en la pagina de proceso.

tu me dices que debo tener mi form asi:

<form action="c_clientes.php" method="POST" name="form1">
<textarea name="texto" rows="20" cols="50">
</textarea><br>
<input type="sumit" value="Enviar"></form>

Y en que parte coloco la definicion de la variable texto? debido que si lo coloco en algun lugar del form me da error de "indice no definido: texto"

Gracias.
  #9 (permalink)  
Antiguo 24/08/2004, 21:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tu formulario HTML ya está generando para tu scritp PHP (el que apuntas en el action) esa variable $_POST['texto'] por qué lo defines en el name de ese textarea ...)

O a caso a ese formulario llegas desde otro formulario?


Un saludo,
  #10 (permalink)  
Antiguo 24/08/2004, 21:30
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Tu me dices algo asi?

<textarea name="<? $texto=$_POST[texto] ?>"

Si es asi no me funciona en la pagina de proceso me sigue diciendo que no recibe la varible texto

A ver si me hago entender la pagina que contiene el formulario es esta

formulario.php (por ejemplo):

<form action="c_clientes.php" method="POST" name="form1">
<textarea name="<? $texto=$_POST[texto] ?>" rows="20" cols="100"></textarea><br>
<input type="submit" value="Enviar"></form>

y la pagina que recibe los datos y procesa la informacion es esta:

c_clientes.php:

<?
include 'conexion.php';
$texto = $_get['texto'];
$patron = "#(\w*@\w*\.w*)#";
if (preg_match_all($patron, $texto, $partes))
{
$n_contrato=$partes[1];
for ($i=0; $i < count($n_contrato); $i++)
{
echo $n_contrato[$i]."\n";
$grabar = "INSERT INTO 'clientes' ('id' , 'contrato') VALUES ('NULL' , '$n_contratos[$i]');
mysql_query($grabar,$conexion);
}
}
?>
  #11 (permalink)  
Antiguo 24/08/2004, 22:02
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Te estás confundiendo terriblemente...
Yo te recomiendo, antes de hacer tu script, que hagas un pequeño ejercicio para que te aclares la forma en que se pasan variables de un script a otro y la forma en que se recogen los valores de esas variables.

Abandona tu script un momento y haz lo siguiente:
Un formulario HTML común:
formulario.html
Código:
<form action="proceso.php" method="POST">
   <input type="text" name="mi_variable" /><br />
   <input type="submit" value="enviar" />
</form>
Cosas para destacar:
En la etiqueta <form...> tienes los atributos:
-action : nombre del archivo al que le enviarás las variables del formulario para que los procese.
-method : Método que se va a utilizar para ese paso de variables.

En el campo de texto <input type="text"...> tienes:
-name : nombre de la variable con que se recogerá el valor de este campo de texto en el script que apuntaste en el action.

*****************************************

Ahora te queda hacer el script de proceso al que apuntas en el action:(recuerda que le pusimos "proceso.php")

proceso.php
Código PHP:
<?php
//Como la variable que queremos recoger del formulario se llama
//"mi_variable" y ha sido enviada por método POST la recogemos como $_POST['mi_variable']
//En este caso la vamos a imprimir en pantalla:
echo $_POST['mi_variable'];//debe imprimirse lo que pusiste en el campo de texto.
?>
Espero te haya aclarado un poco el tema.

Saludos
  #12 (permalink)  
Antiguo 24/08/2004, 22:34
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Gracias Jpinedo, me sirvio de maravillas, entendi por fin lo de las varibles $_post y $_get.

De Igual Forma queria darte las gracias a ti tambien Cluster, fuiste muy amable en tomarte la molestia de ayudarme.

Saludos y Feliz Dia.
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 10:37.