Foros del Web » Programando para Internet » PHP »

enviar dos parametros

Estas en el tema de enviar dos parametros en el foro de PHP en Foros del Web. Hola a todos tengo el siguiente archivo con un input donde ingreso una fecha, posteriormente mediante ajax se envía y hago una consulta para mostrar ...
  #1 (permalink)  
Antiguo 18/11/2014, 11:07
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
enviar dos parametros

Hola a todos tengo el siguiente archivo con un input donde ingreso una fecha, posteriormente mediante ajax se envía y hago una consulta para mostrar un select en el div nombrado myDiv…
Funciona bien al enviar una fecha, pero necesito que mi consulta sea mediante BETWEEN, para esto cree otro input nombrado f2… pero no consigo pasar su contenido ya que siempre se cargar el de f1
Index.php
Código HTML:
<head>
<script src="ajax.js"></script>
</head>
<body>
<input name="f1"  type="text"  id="cont" />
<input name="f2"  type="text"  id="cont" /> //nuevo input
/*aquí aparece el select
<div id="myDiv"></div> 
ajax.js
Código HTML:
function load(str)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","proc.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("f1="+str);
//aquí tengo dudas, para mandar f2, lo tenia asi
xmlhttp.send("f2="+str);


}
proc.php
Código PHP:
<?php
echo "fecha 1: ".$f1="'".$_POST['f1']."'";  
echo 
"fecha 2: ".$f2="'".$_POST['f2']."'";  //sin resultado

$res=mysql_query("select * from tb where fecha=$f1"); //asi funciona ... ya que solo necesito el valor de f1
?>

//Select a mostrar en div después de cargar la consulta
<select>
<?php while($fila=mysql_fetch_array($res)){ ?>
 <option><?php echo $fila[nombre]; ?></option>
<?php ?>
</select>
  #2 (permalink)  
Antiguo 18/11/2014, 11:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: enviar dos parametros

Tu problema es de Javascript, no estás obteniendo el valor de ambos campos, además tampoco se ve donde invocas la función load() con dichos valores.

¿Por qué crees que tu problema tiene que ver con programación PHP?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/11/2014, 11:13
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: enviar dos parametros

xmlhttp.send("f1="+str1+"&f2="+str2);
__________________
la la la
  #4 (permalink)  
Antiguo 18/11/2014, 11:34
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: enviar dos parametros

Gracias chicos
agregue onchange="load(this.value)" a mis dos input

y en ajax.js
xmlhttp.send("f1="+str+"&f2="+str);

si en mi input f1 ingreso

2014-10-05
obtengo esto

fecha 1: '2014-10-05'
fecha 2: '2014-10-05

si en f2 ingreso
2014-10-01
obtengo esto

fecha 1: '2014-10-01'
fecha 2: '2014-10-01'

  #5 (permalink)  
Antiguo 18/11/2014, 11:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: enviar dos parametros

El tema es que cada <input> está enviando su propio valor por separado, y eso en definitiva está mal.

Por favor, procura abrir los temas dónde corresponden: tu problema no tiene relación alguna con el sub-foro de PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 18/11/2014, 11:57
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: enviar dos parametros

Cita:
Iniciado por pateketrueke Ver Mensaje
El tema es que cada <input> está enviando su propio valor por separado, y eso en definitiva está mal.

Por favor, procura abrir los temas dónde corresponden: tu problema no tiene relación alguna con el sub-foro de PHP.
Gracias pateketrueke espero que algún moderador me haga el favor de mover el tema
saludos!
  #7 (permalink)  
Antiguo 18/11/2014, 11:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: enviar dos parametros

¿En qué parte invocas a la función load? Además, si deseas enviar los valores de ambas cajas, pues tienes que pasarle a la función ambos valores. Ahí veo que solo envías el de la primera caja. Corrige eso.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 18/11/2014, 12:12
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: enviar dos parametros

Cita:
Iniciado por Alexis88 Ver Mensaje
¿En qué parte invocas a la función load? Además, si deseas enviar los valores de ambas cajas, pues tienes que pasarle a la función ambos valores. Ahí veo que solo envías el de la primera caja. Corrige eso.

Saludos
Hola Alexis88

Código HTML:
function load(str)
{
var xmlhttp;

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
  
xmlhttp.open("POST","proc.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xmlhttp.send("f1="+str+"&f2="+str);

mis inputs

<input name="f1" type="text" class="tcal" size="20" id="cont" onchange="load(this.value)"/>

<input name="f2" type="text" class="tcal" size="20" id="cont" onchange="load(this.value)"/>
  #9 (permalink)  
Antiguo 18/11/2014, 12:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: enviar dos parametros

Lo estás haciendo mal. De esta forma, cuando escribas algo en la primera caja de texto, enviarás su valor y solo su valor. Lo mismo ocurrirá cuando escribas algo en la segunda.

Lo que debes de hacer es tener a ambas cajas de texto en un formulario, escribir los valores y, pulsando un botón, enviar esos datos. Otra forma sería que en la misma función leas los valores de ambas cajas:

Código Javascript:
Ver original
  1. var valor1 = document.querySelector("[name=f1]").value,
  2.     valor2 = document.querySelector("[name=f2]").value;

Así ya no te preocuparás de enviar ambos valores a la función, sin embargo, veo más práctica la forma de enviar los valores mediante un formulario, así estarán presentes ambos valores al momento de hacer la consulta pues, si sigues haciendo la consulta solo cuando escribas algo en las cajas, se realizará el filtro primero solo con el valor de la primera caja de texto y recién cuando hayas escrito algo en la segunda, se utilizará también su valor al momento de realizar la consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 18/11/2014, 12:32
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: enviar dos parametros

Cita:
Iniciado por Alexis88 Ver Mensaje
Lo estás haciendo mal. De esta forma, cuando escribas algo en la primera caja de texto, enviarás su valor y solo su valor. Lo mismo ocurrirá cuando escribas algo en la segunda.

Lo que debes de hacer es tener a ambas cajas de texto en un formulario, escribir los valores y, pulsando un botón, enviar esos datos. Otra forma sería que en la misma función leas los valores de ambas cajas:

Código Javascript:
Ver original
  1. var valor1 = document.querySelector("[name=f1]").value,
  2.     valor2 = document.querySelector("[name=f2]").value;

Así ya no te preocuparás de enviar ambos valores a la función, sin embargo, veo más práctica la forma de enviar los valores mediante un formulario, así estarán presentes ambos valores al momento de hacer la consulta pues, si sigues haciendo la consulta solo cuando escribas algo en las cajas, se realizará el filtro primero solo con el valor de la primera caja de texto y recién cuando hayas escrito algo en la segunda, se utilizará también su valor al momento de realizar la consulta.

Saludos

GRACIAS Alexis88 pero no puedo utilizar un botón ya que tengo un form donde apartir de una fecha de inicio y fin debo mostrar los conceptos en estos rangos... (antes de enviar el form)

respecto a mandar las dos variables no sé como aplicarlo en la función ...
desde ya gracias
  #11 (permalink)  
Antiguo 18/11/2014, 13:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: enviar dos parametros

No entiendo cuál es el inconveniente de enviar los datos a través de un formulario, pero en fin. Si te complicas en enviar ambos valores a la función, haz lo que te recomendé, es decir, captura los valores de ambas cajas de texto dentro de la función y luego los envías para hacer la consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: fecha, html, parametros, select, sql
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 01:32.