Foros del Web » Programando para Internet » PHP »

pasar valores de un select por medio de un url

Estas en el tema de pasar valores de un select por medio de un url en el foro de PHP en Foros del Web. a ver si me puedo explicar porque no he podido encontrar la solucion tengo dentro de mi formulario un select Seleccione el Contacto: <SELECT NAME="selec" ...
  #1 (permalink)  
Antiguo 21/09/2010, 14:47
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 13 años, 10 meses
Puntos: 5
pasar valores de un select por medio de un url

a ver si me puedo explicar porque no he podido encontrar la solucion
tengo dentro de mi formulario un select

Seleccione el Contacto:
<SELECT NAME="selec" SIZE="1"><OPTION VALUE=""></OPTION>
<?
$query="SELECT id_agente, nombre FROM agentes";
$result = mysql_query($query) or die ( mysql_error() );
while ($row=mysql_fetch_array($result))
{
if($_GET['id_agente'] == $row['id_agente']){
echo "<OPTION VALUE='". $row['id_agente'] ."' selected>". $row['nombre'] ."</OPTION>";
}else{
echo "<OPTION VALUE='". $row['id_agente'] ."'>". $row['nombre'] ."</OPTION>";
}
?>

</SELECT>

y pues si me carga correctamente los datos de mi BD pero mi gran duda y en si lo que yo quiero es que al yo poner en el explorador
http://www.mipagina.com/registrar.php?id_agente=2

en el combo select ya m aparesca seleccionado el agente 2

*Inisisto ya me carga los agentes en el select lo que yo quiero es que al poner esa link m aparesca seleccionado el agnte segun el que yo ponga

ya intente asi tmb
http://www.mipagina.com/registrar.php?id="._row['id_agentes']."id_agente=2
http://www.mipagina.com/registrar.php?id="._POST['id_agentes']."id_agente=2
http://www.mipagina.com/registrar.php?id="._GET['id_agentes']."id_agente=2

pero se me sigue cargando la pagina sin el agente que selecciono, si aparecen pero yo quiero que automaticamente se me cargue el agente que le estaria pasando por la url

como creo genero o hago esto???
  #2 (permalink)  
Antiguo 21/09/2010, 15:08
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: pasar valores de un select por medio de un url

Añades un formulario que envie los datos por post a esa misma página si así lo quieres y que te redireccione a la url en la que estas y le añades al parámetro ?id el valor seleccionado.

Algo así. (por cierto cambie algunas líneas, después tu las pones a tu forma)

Código PHP:
<?php 
if (isset($_POST['submit']))
    echo
"<script type='text/javascript'>location.href='".$_SERVER['PHP_SELF']."?id=".$_POST['selec']."'</script>";
?>

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" >
<SELECT NAME="selec" SIZE="1"><OPTION VALUE=""></OPTION>

<?php

$result 
mysql_query("SELECT id_agente, nombre FROM agentes") or die ();

while (
$row=mysql_fetch_assoc($result))
{
if(
$_GET['id_agente'] == $row['id_agente'])
    echo 
"<OPTION VALUE='"$row['id_agente'] ."' selected>"$row['nombre'] ."</OPTION>";
else
    echo 
"<OPTION VALUE='"$row['id_agente'] ."'>"$row['nombre'] ."</OPTION>";
}
?>

</SELECT>

<input name="submit" type="submit" value="enviar" />

</form>
  #3 (permalink)  
Antiguo 21/09/2010, 15:46
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: pasar valores de un select por medio de un url

oye mil gracias por responder tan rapido, tengo una duda lo que pasa es que todo esto lo tengo dentro de mi archivo registrar.php y en el form tengo que el action = registrar.php
si lo cambio asi cmo me dices creo que ya no me agarra lo demas, y ademas tambien estaba viendo que tienes que revise el submit, osea que no me agarrara el url hasta que registre por lo menos un usuario? o como ya ando medio mareado jeje, trabajo en un registro de usuarios
mira este es el codigo completo del archivo registrar.php


Cita:
<?php
session_start();

include("config.php");

function genera_random($longitud){
$exp_reg="[^A-Z0-9]";
return substr(eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())) .
eregi_replace($exp_reg, "", md5(rand())),
0, $longitud);
}




function formRegistro(){
?>
<html>
<head>
<head>
<body>

<form action="registrar.php" method="post">
<div align="center">
Nombre:
<input type = "text" name = "username" >
<br />
Email:
<input type="text" name="email" size="20" maxlength="40" />
<br />
Telefono:
<input type="text" name="telefono" size="20" maxlength="20" />
<br />
Empresa:
<input type="text" name="empresa" size="20" maxlength="40" />
<br />
Ciudad:
<input type="text" name="ciudad" size="20" maxlength="40" />
<br />
Seleccione el Contacto:
<SELECT NAME="selec" SIZE="1"><OPTION VALUE=""></OPTION>
<?
$query="SELECT id_agente, nombre FROM agentes";
$result = mysql_query($query) or die ( mysql_error() );
while ($row=mysql_fetch_array($result))
{
if($_GET['id_agente'] == $row['id_agente']){
echo "<OPTION VALUE='". $row['id_agente'] ."' selected>". $row['nombre'] ."</OPTION>";
}else{
echo "<OPTION VALUE='". $row['id_agente'] ."'>". $row['nombre'] ."</OPTION>";
}


}
?>
</SELECT>
<input type="submit" value="Registrar" />
</div>
</form>

</body>
</html>
<?php
}


$activate = genera_random(10);
$clave = genera_random(5);



if (isset($_POST["submit"])) {
$username = $_POST["username"];
$email = $_POST["email"];
$telefono = $_POST["telefono"];
$empresa = $_POST["empresa"];
$ciudad = $_POST["ciudad"];
$selec = $_GET["selec"];

echo"<script type='text/javascript'>location.href='".registrar.php."?id=". $_GET['selec']."'</script>";

if($username==NULL|$email==NULL|$telefono==NULL|$s elec==NULL) {
echo "rellene todos los campos";
formRegistro();
}else{

$checkuser = mysql_query("SELECT username FROM usuarios WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);
$checkemail = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);
if ($email_exist>0|$username_exist>0) {
echo "El nombre de usuario o la cuenta de correo estan ya en uso";
formRegistro();
}else{
$query = 'INSERT INTO usuarios(username,password,email,telefono,empresa, ciudad,activate,estado,id_agente)
VALUES (\''.$username.'\',\''.$clave.'\',\''.$email.'\',\ ''.$telefono.'\',\''.$empresa.'\',\''.$ciudad.'\', \''.$activate.'\',1,\''.$selec.'\')';

mysql_query($query) or die(mysql_error());
echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />';


$query = "select * from usuarios as UD
inner join agentes as A on UD.id_agente = A.id_agente
where username = '$username'";
$result = mysql_query($query) or die ( mysql_error() );
$row = mysql_fetch_array($result);
//$idTemp=mysql_insert_id();

$path = "http://www.mipagina.com/";
$alink=$path."validar_cuenta.php?id=".$row['id_usuarios']."&activateKey=".$activate."";




$email = $_POST['email'];
$usuario = $_POST['username'];
$asunto = 'Confirmacion de registro.';
$mensaje = "Datos registrados correctamente,
Bienvenido : $username
mail: $email
telefono: $telefono
empresa: $empresa
ciudad: $ciudad
";



$cabeceras = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .


'X-Mailer: PHP/' . phpversion();

mail($email, $asunto, $mensaje, $cabeceras);


$destinatarios = "[email protected]";
$asunto1 = 'Datos del usuario registrado .';
$cuerpo = " Datos registrados del Usuario : $username
Mail: $email
Teléfono: $telefono
Empresa: $empresa
Ciudad: $ciudad
Link de acceso usuario: $alink
clave: $clave
";



$headers = 'From: [email protected]' . "\r\n" .


'X-Mailer: PHP/' . phpversion();

mail($destinatarios, $asunto1, $cuerpo, $headers);






?>


<?php
}

}
}else{
formRegistro();
}
?>
  #4 (permalink)  
Antiguo 21/09/2010, 18:10
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: pasar valores de un select por medio de un url

... por partes.
El código tiene errores.

1º Revisa las concatenaciones, estan mal.
por ejemplo mira las diferencias entre esto.
No sé con que editas el código, pero estaría bien que situáse o te fijaras en las líneas con errores.

Tús concatenaciones:
Código PHP:
$query 'INSERT INTO usuarios(username,password,email,telefono,empresa, ciudad,activate,estado,id_agente)
VALUES (\''
.$username.'\',\''.$clave.'\',\''.$email.'\',\ ''.$telefono.'',\''.$empresa.'\',\''.$ciudad.'\', \''.$activate.'\',1,\''.$selec.'\')';


/////////////////////////////////
echo"<script type='text/javascript'>location.href='".registrar.php."?id="$_GET['selec']."'</script>"
Como podrían ser.
Código PHP:
$query "INSERT INTO usuarios(username,password,email,telefono,empresa, ciudad,activate,estado,id_agente)
VALUES ('"
.$username."','".$clave."','".$email."','".$telefono."','".$empresa."','".$ciudad."','".$activate."','1','".$selec."')";

/////////////////////////////////

echo"<script type='text/javascript'>location.href='registrar.php?id="$_GET['selec']."'</script>"
el operador lógico Ó ("Verdadero si alguno de los dos es verdadero") en php no es el símbolo |, sino || o también or.

De nuevo diferencias:

Código PHP:
//MAL:
if($username==NULL|$email==NULL|$telefono==NULL|$s elec==NULL) {
echo 
"rellene todos los campos"
Código PHP:
//yo puse =="", pero tbn es válido con NULL

//1ª opcion:
if($username=="" or $email=="" or $telefono=="" or $selec==""){
echo 
"rellene todos los campos";

//2ªopcion
if($username=="" || $email=="" || $telefono=="" || $selec==""){
echo 
"rellene todos los campos"
3º Espero que busques un poco de información sobre las cabeceras en el envío de emails con php si realmente quieres que te lleguen.

4º ¿Me parece a mi... o envías el parámetro ?id en la url y nunca lo recoges. ¿Que uso tiene?

5º El registro es sensible a la inyección de código. Te comento esto porque si usas md5 para encriptar contraseñas presupongo que quieres un mínimo de seguridad en la web.

6º Un consejo, ordena y tabula el código. También sería importante que le echaras un ojo al manual. http://www.php.net/manual/es/index.php

Hay otras cosas, pero no te las voy a poner todas, poco a poco todos aprendemos.
Aparte de estas cositas, no tengo claro que quieres hacer . Yo te expliqué con un ejemplo sencillo como enviar desde un formulario el valor a la URL.

Además creo que no sería necesario meter el html en una función... eso es mejorable por así decirlo.

No entiendo que quieres hacer. Pero si no quieres ponerlo cuando se registre separalo en otro formulario.

En uno hará lo que tu quieras que haga con ese id y en otro el registro.
Aparte no pusistes donde te fallaba.

Un saludo. Al menos espero haberte ayudado en encontrar algún fallo.
  #5 (permalink)  
Antiguo 22/09/2010, 07:26
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: pasar valores de un select por medio de un url

Gracias IEKK corregire esos errores, pero te comento que como tengo las cabezeras si me llegan los correos, en si me funciona bien, tambien me agarra los OR asi como los tengo pero los cambiare como tu me dices :)

4º ¿Me parece a mi... o envías el parámetro ?id en la url y nunca lo recoges. ¿Que uso tiene?
>>>>Esto es exactamente lo que quiero, que recoja el id<<<<
mira me mando un link $alink por el correo, los parametros los recogo aqui en validar_cuenta.php
$idval=$HTTP_GET_VARS ['id'];
$activate2=$HTTP_GET_VARS ['activateKey'];
pero esos los uso para que me actualize datos en la tabla, pero eso es otra cosa, aparte
lo que yo quiero es hacer otro link donde me cargue los valores del select automaticamente

5º El registro es sensible a la inyección de código., como podria mejorar esto?? por que segun lo que leei por ahi necesito quitar los caracteres, en el ejemplo que tenia usaban esta funcion pense qservia para eso y por eso en el insert into estaba asi
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
mira te paso la liga de donde me estuve guiando
http://ayuda.fotopex.com/programacion/php/hacer-login-de-usuarios-con-php-y-mysql/

6º Un consejo, ordena y tabula el código. También sería importante que le echaras un ojo al manual, Gracias por la liga la estare estudiando y en la tarde te comento los cambios
Saludos!

Última edición por Markgus; 22/09/2010 a las 08:21
  #6 (permalink)  
Antiguo 22/09/2010, 08:34
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: pasar valores de un select por medio de un url

Usando $_GET['nombre del parametro'] ó $HTTP_GET_VARS['nombre del parametro']

Código PHP:
if( isset($_GET['id']) ){
echo 
'existe parametro id';

  #7 (permalink)  
Antiguo 23/09/2010, 10:58
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: pasar valores de un select por medio de un url

aun no he podido :( :s
intente esto para revisar que me enviara los datos
<?
include("config.php");
$query = "select * from agentes";
$result = mysql_query($query) or die ( mysql_error() );
while ($row=mysql_fetch_array($result))
{
echo " <a href='registrar.php?ID=". $row['id_agente']."'>Agentes</a>";
echo $row['id_agente'];
echo $row['nombre'];
}
?>
segun los echos si me recoge el id y el nombre, pero no consigo que ya me salga seleccionado
solo es eso lo que quiero
aqui hay un tema similar, pero esta en javascript no se m ocurre como adaptarlo a php
http://www.forosdelweb.com/f13/enviar-valor-select-por-url-699233/
  #8 (permalink)  
Antiguo 23/09/2010, 11:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: pasar valores de un select por medio de un url

una cosa es importante, PHP es sensible a mayúsculas y minúsculas...

y si en el enlace usas ID, entonces en PHP debe ser ID también y no solo id

foo.php?ID=99
Código PHP:
echo $_GET['ID']; 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 23/09/2010, 11:37
Avatar de vertigo112  
Fecha de Ingreso: agosto-2006
Ubicación: Estado de Mexico
Mensajes: 25
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: pasar valores de un select por medio de un url

Un saludos pues no comprendo que es lo que necesitas si todo esta resuleto desde un inicio no hay problema en ello ya que lo he comprobado y funciona hay algo mal en tu configuracion a la BD el paso de parametro mal o algo asi pero tu codigo est bien de echo te coloco lo mismo que tienes a diferencia de que como no tengo un config.php lo coloco ahi mismo y funciona correcto…

Quedando asi el codigo:


Código PHP:
Seleccione el Contacto:
<SELECT NAME="selec" SIZE="1"><OPTION VALUE=""></OPTION>
<?
$link 
mysql_connect("localhost","root","1475369")or die("Error al server");
$query="SELECT id_agente, nombre FROM agentes";
mysql_select_db("pruebas")or die("Error a la BD");
$result mysql_query($query,$link) or die ( mysql_error() );

while (
$row=mysql_fetch_array($result))
{
    if(
$_GET['id_agente'] == $row['id_agente']){
        echo 
"<OPTION VALUE='"$row['id_agente'] ."' selected>"$row['nombre'] ."</OPTION>";
    }else{
        echo 
"<OPTION VALUE='"$row['id_agente'] ."'>"$row['nombre'] ."</OPTION>";
    }
}
?>
</SELECT>


ahora si coloco la url ASI:

http://localhost/ayuda/select/prueba.php

Resultado:



no pasa nada el select se mira sin una seleccion pero si lo coloco asi

http://localhost/ayuda/select/prueba.php?id_agente=1

ya me muestra la opcion seleccionada....

Resultado:



Saludos desde Mexico en linea desde macrowebdigital
  #10 (permalink)  
Antiguo 23/09/2010, 12:56
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: pasar valores de un select por medio de un url

Cita:
Iniciado por vertigo112 Ver Mensaje
Un saludos pues no comprendo que es lo que necesitas si todo esta resuleto desde un inicio no hay problema en ello ya que lo he comprobado y funciona hay algo mal en tu configuracion a la BD el paso de parametro mal o algo asi pero tu codigo est bien de echo te coloco lo mismo que tienes a diferencia de que como no tengo un config.php lo coloco ahi mismo y funciona correcto…

Quedando asi el codigo:


Código PHP:
Seleccione el Contacto:
<SELECT NAME="selec" SIZE="1"><OPTION VALUE=""></OPTION>
<?
$link 
mysql_connect("localhost","root","1475369")or die("Error al server");
$query="SELECT id_agente, nombre FROM agentes";
mysql_select_db("pruebas")or die("Error a la BD");
$result mysql_query($query,$link) or die ( mysql_error() );

while (
$row=mysql_fetch_array($result))
{
    if(
$_GET['id_agente'] == $row['id_agente']){
        echo 
"<OPTION VALUE='"$row['id_agente'] ."' selected>"$row['nombre'] ."</OPTION>";
    }else{
        echo 
"<OPTION VALUE='"$row['id_agente'] ."'>"$row['nombre'] ."</OPTION>";
    }
}
?>
</SELECT>


ahora si coloco la url ASI:

http://localhost/ayuda/select/prueba.php

Resultado:



no pasa nada el select se mira sin una seleccion pero si lo coloco asi

http://localhost/ayuda/select/prueba.php?id_agente=1

ya me muestra la opcion seleccionada....

Resultado:



Saludos desde Mexico en linea desde macrowebdigital
Gracias mil gracias!!! en serio tenian que explicarme con peras y manzanas para que entendiera, me andaba haciendo bolas con algo que ya tenia, no esta escribiendo bien el link queria declarar la variable y luego agarrarla con un get pero nada que ver solo tenia que poner en el link mi campo y asignarle el valor,jeje ypues como comentas, todo estaba resuelto desde el inicio

una sincera disculpa a todos :$ y gracias por la paciencia

y aprovechando, se podra que al ya pasar el id en el select, qno se puedan seleccionar los demas?

Última edición por Markgus; 23/09/2010 a las 13:05

Etiquetas: medio, pasar, select, url
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 03:04.