Foros del Web » Programando para Internet » PHP »

Mostrar datos del select

Estas en el tema de Mostrar datos del select en el foro de PHP en Foros del Web. Hola. Tengo un formulario sencillo en el cual se completan datos. Por otro lado, cree otra página que lee la base de datos y los ...
  #1 (permalink)  
Antiguo 28/05/2012, 14:54
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Mostrar datos del select

Hola. Tengo un formulario sencillo en el cual se completan datos. Por otro lado, cree otra página que lee la base de datos y los muestra 1 por 1. El problema es que en el formulario original hay algunos campos que son select y esos valores no me los trae. Cuando el campo es de texto me trae el valor perfectamente. Cuando es select, me trae el valor asignado por defecto (blanco o la primera opción que aparece seleccionada). Dejo el código a ver si alguien sabe qué estoy haciendo mal:

formulario.php
Código HTML:
<form action="compacto3.php" method="post" name="form1" id="form1">
      <p class="Estilo42">Pa&iacute;s
        <select name="pais" onchange="redireccionar(this);">
            <option selected="selected" value="Argentina">Argentina</option>
            <option value="resto">Resto del Mundo</option>
          </select>
      </p>
      <p class="Estilo42">Zona
        <select name="select" onchange="slctryole(this,this.form.select2)">
            <option></option>
            <option value="BuenosAires">Buenos Aires</option>
            <option value="CapitalFederal">Capital Federal</option>
            <option value="Chaco">Chaco</option>
            <option value="Chubut">Chubut</option>
          </select>
          <select name="select2" onchange="slctryole(this,this.form.select3)">
            <option></option>
          </select>
      </p>
      <div class="Estilo42" id="provincia" style="display:inline"></div>
      <p class="Estilo42">Tipo de Auto
        <select name="auto" size="1">
            <option selected="selected" value=""> </option>
          <option value="Económico">Econ&oacute;mico</option>
            <option value="Compacto 3 Puertas">Compacto 3 puertas</option>
            <option value="Compacto 4 Puertas con Baúl">Compacto 4 puertas con ba&uacute;l</option>
            <option value="Compacto 5 Puertas">Compacto 5 puertas</option>
            <option value="Mediano">Mediano</option>
            <option value="Intermedio">Intermedio</option>
            <option value="Grande">Grande</option>
            <option value="Lujo">Lujo - Premium</option>
            <option value="SUV">SUV</option>
            <option value="Pick Up">Pick Up (4x4 &ndash; 4x2)</option>
            <option value="Van">Vans &ndash; Minib&uacute;s</option>
            <option value="Gasolero">Gasolero</option>
            <option value="Blindado">Especial - Blindado</option>
          </select>
      </p>
      <p class="Estilo42">Fecha de Alquiler
        <input name="fecalq" type="text" size="7" id="fecalq" onclick="popUpCalendar(this, fecalq, 'yyyy/mm/dd');"/>
      </p>
      <p class="Estilo42">Fecha de Devoluci&oacute;n
        <input name="fecdevol" type="text" size="7" id="fecdevol" onclick="popUpCalendar(this, fecdevol, 'yyyy/mm/dd');"/>
      </p>
    </form> 
listar.php

Código PHP:
<?php
$conexion
=mysql_connect("localhost","josper_admin","A1234bcd") or
  die(
"Problemas en la conexion");
mysql_select_db("josper_reservas",$conexion) or
  die(
"Problemas en la selección de la base de datos");
$registros=mysql_query("select codigo,pais,auto,fecalq
                        from reservas"
,$conexion) or
  die(
"Problemas en el select:".mysql_error());
while (
$reg=mysql_fetch_array($registros))
{
  echo 
"Codigo:".$reg['codigo']."<br>";
  echo 
"País:".$reg['pais']."<br>";
  echo 
"Fecha:".$reg['fecalq']."<br>";
  echo 
"Curso:";
  switch (
$reg['auto']) {
    case 
1:echo "Economico";
           break;
    case 
2:echo "Compacto3";
           break;
    case 
3:echo "Compacto4";
           break;
    case 
4:echo "Compacto5";
           break;
    case 
5:echo "Mediano";
           break;
    case 
6:echo "Intermedio";
           break;           
    case 
7:echo "Grande";
           break;
    case 
8:echo "Lujo";
           break;    
    case 
9:echo "SUV";
           break;    
    case 
10:echo "PickUp";
           break;        
    case 
11:echo "Vans";
           break;      
    case 
12:echo "Gasolero";
           break;          
    case 
13:echo "Especial";
           break;                                    
  }
  echo 
"<br>";
  echo 
"<hr>";
}
mysql_close($conexion);
?>
El tipo de auto siempre me devuelve valor vacío, y en país siempre pone Argentina que es el valor que trae por defecto ese campo.

Muchas gracias.
  #2 (permalink)  
Antiguo 28/05/2012, 14:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Mostrar datos del select

A menos que no comprenda bien tu problema, lo que dices es lo normal, un campo tipo select que contenga una opción en blanco por defecto enviará dicho valor a menos que se elija otra opción del select. A menos que tu función slctryole que mandas a llamar cambie a nulo el valor del select aunque hayan elegido otra opción.
  #3 (permalink)  
Antiguo 28/05/2012, 15:05
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Mostrar datos del select

Es que el problema sucede cuando uno elige otro valor. Por ejemplo elijo tipo de auto Económico y envío los datos. Voy a la base de datos y se graba como económico, como debe ser. Cuando intento mostrarlo en la página listar.php mediante

Código PHP:
echo "Curso:"
  switch (
$reg['auto']) { 
    case 
1:echo "Economico"
           break; 
    case 
2:echo "Compacto3"
           break; 
    case 
3:echo "Compacto4"
           break; 
    case 
4:echo "Compacto5"
           break; 
    case 
5:echo "Mediano"
           break; 
    case 
6:echo "Intermedio"
           break;            
    case 
7:echo "Grande"
           break; 
    case 
8:echo "Lujo"
           break;     
    case 
9:echo "SUV"
           break;     
    case 
10:echo "PickUp"
           break;         
    case 
11:echo "Vans"
           break;       
    case 
12:echo "Gasolero"
           break;           
    case 
13:echo "Especial"
           break;                                     
  } 
dice Curso: y al lado muestra siempre blanco. No muestra el valor cargado en el campo auto de la base de datos (que es lo que yo quiero) sino el valor que viene por defecto en el select. Siempre muestra el mismo, independientemente de la opción elegida por el usuario. ¿Alguna idea? Gracias :)
  #4 (permalink)  
Antiguo 28/05/2012, 15:10
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Mostrar datos del select

Si dices que se graba bien en la base de datos, no es problema del select, si no de la forma en que recuperas los datos. Deberías ver lo que te regresa la consulta.
  #5 (permalink)  
Antiguo 28/05/2012, 15:16
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Mostrar datos del select

Creo que no me he expresado bien entonces. No digo que el select tenga problemas sino que no recupera los datos grabados correctamente en la base. La página que se encarga de mostrarlo es listar.php y para los campos numéricos o de texto (código que es un autonumérico y fecha que se ingresa a mano) muestra los datos perfectamente. Por eso es que mencioné lo del select. Los datos que se graban en la base vía campo de texto se muestran, los otros no. Eso es lo que no comprendo. Gracias de todos modos.
  #6 (permalink)  
Antiguo 28/05/2012, 15:23
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Mostrar datos del select

OK... aclaremos entonces.

¿Tus campos que no son select se graban bien y los que son select se graban mal en la bd? ¿ya lo revisaste sobre la bd para estar seguro? ¿Revisaste el tipo de campo donde estás grabando los valores del select? ¿te estás asegurando en el script que recibe el formulario que estés recibiendo el valor del select escogido?
  #7 (permalink)  
Antiguo 28/05/2012, 15:28
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Mostrar datos del select

si se graba en la base de datos como "económico" tal como dices, por que usas números en el switch?

deberias usar el texto que se está guardando:

Código PHP:
Ver original
  1. switch ($reg['auto']) {  
  2.     case "Economico":echo "Economico";  
  3.            break;  
  4.     case "Compacto3":echo "Compacto3";  
  5.            break;  
  6.     case "Compacto4":echo "Compacto4";  
  7.            break;  
  8. ...

claro que tambien puedes simplemente poner echo:

Código PHP:
Ver original
  1. echo $reg['auto'];
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 28/05/2012, 15:35
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Mostrar datos del select

@ocp001a: Muchas gracias por tu ayuda. Disculpá por no haberme expresado del todo correctamente.

@stramin: era eso! Qué despistado, no sé por qué armé un switch con los números. Por otro lado había leído que era necesaria la utilización de un switch pero del modo en que lo pones en el segundo ejemplo funciona a la perfección, y ahorra bastante código. Puse un solo dato aquí para que no quede tan largo pero son muchos los datos que tengo que recuperar. Muchísimas gracias.

Etiquetas: formulario, mysql, registro, 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 18:00.