Foros del Web » Programando para Internet » PHP »

Como pasar varios parámetros

Estas en el tema de Como pasar varios parámetros en el foro de PHP en Foros del Web. Un saludo a todos. Bueno, estoy intentando pasar varios parámetros a travez de un enlace. Tengo una página llamada contacto.php, esta es un insert en ...
  #1 (permalink)  
Antiguo 10/10/2012, 05:03
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Como pasar varios parámetros

Un saludo a todos.

Bueno, estoy intentando pasar varios parámetros a travez de un enlace.
Tengo una página llamada contacto.php, esta es un insert en la tabla contacto, hasta aqui bien, edemás de insertar el registro en dicha tabla, quiero que mande un email para lo cual ya tengo en un archivo llamado funciones.php creada una funcion de mail para ello. A esta función le debo pasar tres parámetros:

Código PHP:
function EnvioCorreoHTML($destinatario$contenido$asunto
la solicitud de esta función estaría en otra pagina llamada enviar_contacto.php por eso lo de pasarle los parámetros desde contacto.php

La parte que me atañe:

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO contacto (nombre, email, telefono, asunto, comentarios, fecha) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['telefono'], "text"),
                       
GetSQLValueString($_POST['asunto'], "text"),
                       
GetSQLValueString($_POST['comentarios'], "text"),
                       
GetSQLValueString($_POST['fecha'], "date"));
  
mysql_select_db($database_ecommerce_general$ecommerce_general);
  
$Result1 mysql_query($insertSQL$ecommerce_general) or die(mysql_error());
  
$insertGoTo "enviar_contacto.php?recordID=".$_POST['email'];
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));

En esta parte creo que ya le estoy pasando a enviar_contacto.php un parámetro:

Código PHP:
$insertGoTo "enviar_contacto.php?recordID=".$_POST['email']; 

En enviar_contacto.php:

Código PHP:
<?php 
//$destinatario, $contenido, $asunto
$contenido 'debo pasarle contenido de pagina anterior suma de los datos'
$asunto 'Formulario de Contacto;  
  EnvioCorreoHTML($_GET['
recordID], $contenido$asunto
?>
El contenido debe ser una suma de los datos de insersion de registro de nombre, email, asunto telefono es decir todos los datos menos el email que ya se pasa .

En definitiva, por un lado tengo contacto.php:

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO contacto (nombre, email, telefono, asunto, comentarios, fecha) VALUES (%s, %s, %s, %s, %s, %s)",
 
 
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['telefono'], "text"),
                       
GetSQLValueString($_POST['asunto'], "text"),
                       
GetSQLValueString($_POST['comentarios'], "text"),
                       
GetSQLValueString($_POST['fecha'], "date"));
 
  
mysql_select_db($database_ecommerce_general$ecommerce_general);
  
$Result1 mysql_query($insertSQL$ecommerce_general) or die(mysql_error());
 
  
$insertGoTo "enviar_contacto.php?recordID=".$_POST['email'];
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));

Esto lo debo pasar es el email del que llena el formulario es el primer parametro:

Código PHP:
GetSQLValueString($_POST['email'], "text"), 
Todo esto lo tengo que pasar como $contenido que seria el segundo parametro:

Código PHP:
 
GetSQLValueString
($_POST['nombre'], "text"),
GetSQLValueString($_POST['telefono'], "text"),
GetSQLValueString($_POST['asunto'], "text"),
GetSQLValueString($_POST['comentarios'], "text"),
GetSQLValueString($_POST['fecha'], "date")); 
Y este seria el enlace, en un principio le pase el email (no se si estara bien):

Código PHP:
$insertGoTo "enviar_contacto.php?recordID=".$_POST['email']; 

Alguna sugerencia ??

Como siempre, muchisimas gracias por vuestra atencion:
Manyblue
  #2 (permalink)  
Antiguo 10/10/2012, 07:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como pasar varios parámetros

recuerda que en la url se usa el & para separar parámetros:

mipagina.php?var1=x1&var2=x2

usa urlencode en cada valor para escapar caracteres especiales.

NOTA: de igual forma pasar muchos parámetros por la URL no es recomendable por los límites que aplican ciertos navegadores/servidores, por lo cual usar un formulario oculto y enviar el POST (submit) con javascript es también otra opción
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 10/10/2012, 11:32
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

A ver creo que no me he explicado bien.
Eso lo se hacer, por ejemplo en un enlace para eliminar pasando dos parametros:

Código PHP:
<a href="producto_talla_delete.php?recordID=<?php echo $row_ConsultaTallas['id_relacion']; ?>&registroID=<?php echo $_GET["recordID"]; ?>">Eliminar</a>
Como vera hay un "&" pero el caso que te digo creo que no es asi fijate el parametro esta fuera de las comillas:

Código PHP:
$insertGoTo "enviar_contacto.php?recordID=".$_POST['email']; 
No se si me explico bien.

Muchas gracias por tu pronta respuesta
  #4 (permalink)  
Antiguo 10/10/2012, 12:19
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

A ver si me explico mejor.

contacto.php

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO contacto (nombre, email, telefono, asunto, comentarios, fecha) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['telefono'], "text"),
                       
GetSQLValueString($_POST['asunto'], "text"),
                       
GetSQLValueString($_POST['comentarios'], "text"),
                       
GetSQLValueString($_POST['fecha'], "date"));       
  
mysql_select_db($database_ecommerce_general$ecommerce_general);
  
$Result1 mysql_query($insertSQL$ecommerce_general) or die(mysql_error());
 
//añadido por mi
 
$nombre $_POST['nombre'];
$telefono $_POST['telefono'];
$asunto $_POST['asunto'];
$comentarios $_POST['fecha']; 
 
$email $_POST['email'];
$mensaje '
$nombre<br/>
$email<br/>
$telefono<br/>
$asunto<br/>
$comentarios<br/>
'
;
 
//Fin añadido
 
  
$insertGoTo "enviar_contacto.php?recordID=".$email;   //Aqui esta el meollo de la cuestion
  
if (isset($_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));

Como lo hago para mandar los parametros $email y $mensaje aqui:

Código PHP:
$insertGoTo "enviar_contacto.php?recordID=".$email
Luego en enviar_contacto.php solo seria recoger los datos y mandarlo a la funcion creada

Código PHP:
<?php 
$asunto 
'Formulario de Contacto de zapatoselmuelle.com';  
EnvioCorreoHTML($_GET["recordID"], $mensaje$asunto
?>
Aqui deberia recoger los parametros enviados en contacto.php $email y $mensaje, el primero esta hecho pero el segundo y primero como lo envio.

Espero haber explicado mejor.

Un saludo:
Manyblue
  #5 (permalink)  
Antiguo 10/10/2012, 12:29
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como pasar varios parámetros

de veras no te entiendo, pues no veo la complicación de hacer esto:

Código PHP:
Ver original
  1. $insertGoTo = "enviar_contacto.php?recordID=".$email . '&mensaje=' . urlencode($mensaje);
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 10/10/2012, 13:23
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

Código PHP:
$insertGoTo "enviar_contacto.php?recordID=".$email '&mensaje=' 
urlencode($mensaje); 
OK ahora la llamada a la funcion que esta en otra pagina como la recojo ??

Código PHP:
<?php 
$asunto 
'Formulario de Contacto de zapatoselmuelle.com';  

EnvioCorreoHTML($_GET["recordID"], $mensaje$asunto
?>
  #7 (permalink)  
Antiguo 10/10/2012, 14:52
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como pasar varios parámetros

¿¡¡¡¡ como que con qué !!!!?, con $_GET['mensaje'] , disculpa mi exasperación, pero el pase de parámetros GET y POST está entre lo básico que todo principiante de PHP ha de aprender.

no me lo tomes a mal, pero creo pertinente que repases esos puntos, los parámetros GET se pasan por la URL, espero que eso quede claro.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 11/10/2012, 01:17
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

En primer lugar perdona mi ignorancia.
En segundo, si se pasar varios parametros.

1) Vamos a ver, esto no es pasar un parametro dentro de html con php
2) Esto es pasar varios parametros dentro de php con html al reves, esto solo lo hice una vez con un solo parametro ya lo vez $_GET["recordID"] uno solo.

Tengo que pasar dos parametros a una pagina en un enlace dentro de php

No se si me explico ??

Esto es lo que digo dentro de php:

Código PHP:
$email $_POST['email'];
$mensaje '
$nombre<br/>
$email<br/>
$telefono<br/>
$asunto<br/>
$comentarios<br/>
'
;
$insertGoTo "enviar_contacto.php?recordID=".$email
El otro caso que si se hacerlo es al reves ejemplo:

Código PHP:
<a href="producto_talla_delete.php?recordID=<?php echo 
$row_ConsultaTallas['id_relacion']; ?>&registroID=<?php echo 
$_GET["recordID"]; ?>">Eliminar</a>
No se si me he explicado bien

Tu recomendacion:

Código PHP:
$insertGoTo "enviar_contacto.php?recordID=".$email '&mensaje=' urlencode($mensaje); 
Le estas pasando dos parametros $email y $mensaje bien entendido ves como el enlace ya es diferente ??

Ahora la recogida

Código PHP:
<?php 
$asunto 
'Formulario de Contacto de zapatoselmuelle.com';  
 
EnvioCorreoHTML($_GET["$email"], $_GET["$mensaje"], $asunto
?>

Seria algo asi ??
  #9 (permalink)  
Antiguo 11/10/2012, 01:22
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

Consejos:

1) En este disparate de mundo en el que vivimos creo que si todos tuvieran un poco mas de paciencia las cosas cambiarian

2) Ante el ruido, la prisa, ....... camina pausadamente pues hasta el mas pobre, feo e ignorante tiene una historia que contar.

Ante todo muchisimas gracias por tus respuestas por que se que no es niguna obligacion darlas por tu parte, por eso te lo agradesco.

Un saludo: Manyblue
  #10 (permalink)  
Antiguo 11/10/2012, 01:31
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

Otra cosa, y si me dejara de tonterias y no hiciera la pagina enviar_contacto.php e hiciera la llamada a la funcion en el mismo contacto.php en este lugar ??

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO contacto (nombre, email, telefono, asunto, comentarios, fecha) VALUES (%s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['nombre'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['telefono'], "text"),
                       
GetSQLValueString($_POST['asunto'], "text"),
                       
GetSQLValueString($_POST['comentarios'], "text"),
                       
GetSQLValueString($_POST['fecha'], "date"));       
  
mysql_select_db($database_ecommerce_general$ecommerce_general);
  
$Result1 mysql_query($insertSQL$ecommerce_general) or die(mysql_error());
 
//añadido por mi
 
$nombre $_POST['nombre'];
$telefono $_POST['telefono'];
$asunto_1 $_POST['asunto'];
$comentarios $_POST['fecha']; 
 
$email $_POST['email'];
$mensaje '
$nombre<br/>
$email<br/>
$telefono<br/>
$asunto_1<br/>
$comentarios<br/>
'
;
$asunto_2 'FORMULARIO DE CONTACTO';
 
EnvioCorreoHTML($email$mensaje$asunto_2)
 
//Fin añadido
 
  
$insertGoTo "contacto.php";   //Cambio esto
if (isset($_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo)); 
Lo he puesto antes del inser and go

Funcionaría ??

Por que asi me evito tener que pasar dos parametros por url

Un saludo y MUCHISIMAS GRACIAS
Manyblue
  #11 (permalink)  
Antiguo 11/10/2012, 07:31
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como pasar varios parámetros

en primer lugar mi objetivo no es ofender a nadie, disculpa, pero aveces uno se exaspera con los usuarios que no comprenden lo que uno trata de decir, por ejemplo:

$_GET["$email"]

no necesitas el $ para obtener el valor pasado como parámetro URL (GET), simplemente así:

Código PHP:
Ver original
  1. EnvioCorreoHTML($_GET["email"], $_GET["mensaje"], $asunto) ;

por otro lado no comprendo a que te refieres con lo del html al revéz, en ambos casos pasas 2 parámetros y no entiendo a que te refieres, porque al final el resultado HTML sería similar, un link con 2 parámetros URL.

El hecho como veo es que tratas de enviar un email cuando el usuario presiona un link, y lo que necesitas es pasar la info a php para que lo haga, indudablemente tienes que pasar parámetros, y hacerlo con GET (url) no es buena opción, por ello te había recomendado un Form oculto.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #12 (permalink)  
Antiguo 12/10/2012, 02:52
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

Fijate que facil, despues de tanto lio es solo lo que buscaba:

Código PHP:
$insertGoTo "enviar_contacto.php?recordID="$_POST['email']."&datos="$mensaje
Si si importa creo yo:

Este documento que trabajo en php, como veras los enlaces van dentro de "" y dentro no puedo poner un valor php.

En html es diferente pones el enlace abre php y cierras creo que es algo de eso

Fijate el elace anterior insergoto el enlace dentro de "" y el valo fuera.

Mi intencion tampoco fue ofender y solo decirte que si te comprendo tu exasperacion pero creo que el que recurre aqui es por es torpe como yo por lo que hay que tener un poquito de paciencia nada mas.

Un saludo y gracias por todo
Manyblue
  #13 (permalink)  
Antiguo 12/10/2012, 02:57
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

PD: La recogida de datos en la llamada a la funcion seria asi ??:

Código PHP:
EnvioCorreoHTML($_GET["email"], $_GET["mensaje"], $asunto) ; 
  #14 (permalink)  
Antiguo 13/10/2012, 08:29
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como pasar varios parámetros

Los recoges así pero con el nombre con que los pasaste, los cuales son recordID y datos.

debes a usar urlencode para que se escapen los caracteres sociales para la url

PHP no analiza variables dentro de cadenas con comillas simples, pero si en las dobles, por otro lado si pretendes dumpear contenido HTML con comillas debes o escaparlas si van dentro a un atributo, o usar htmlentities si son parte del contenido
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #15 (permalink)  
Antiguo 15/10/2012, 23:48
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

Código PHP:
EnvioCorreoHTML($_GET["recordID"], $_GET["datos"], $asunto) ; 
No se como hacer lo de urlencode, el reto lo entiendo perfectamente.

Un saludo: Manyblue
  #16 (permalink)  
Antiguo 16/10/2012, 00:10
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Como pasar varios parámetros

A ver, lo peor que puedes hacer es enviar un string con etiquetas HTML en una variable GET, como ya te lo ha dicho @maycolalvarez, algunos navegadores dan un limite y otros navegadores dan un limite diferente, aparte, no le veo ninguna utilidad hacer eso si es solo para enviar un email, peor aun si el código que envia el email esta dentro de una función, en todo caso solo agrega (include/require) el archivo que tiene dicha función y te ahorras todo el trabajo!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #17 (permalink)  
Antiguo 19/10/2012, 03:29
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Como pasar varios parámetros

OK muchisimas gracias lo hare y ya dire lo que sucede ...
Un saludo: Manyblue

Etiquetas: formulario, html, mysql, registro, sql, tabla
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:05.