Foros del Web » Programando para Internet » PHP »

mantener valor de un select mediante php

Estas en el tema de mantener valor de un select mediante php en el foro de PHP en Foros del Web. hola a todos/as: aunque me he vuelto loca con las posibles soluciones planteadas aquí y en otros foros, no consigo hacerlo funcionar. veréis. tengo un ...
  #1 (permalink)  
Antiguo 04/01/2010, 08:48
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
mantener valor de un select mediante php

hola a todos/as: aunque me he vuelto loca con las posibles soluciones planteadas aquí y en otros foros, no consigo hacerlo funcionar. veréis. tengo un formulario. simplifiquemos diciendo que son dos campos, nombre y provincia. los valores del campo provincia los coge de una tabla llamada 'provincias' donde hay dos campos, idprovincia, autonumérico, y nombreprov, con los nombres de las provincias españolas.

en el formulario, el campo provincia tiene esta forma (con conexión a la bd para rescatar los valores de la tabla 'provincias'):

Código PHP:
Nombre del Restaurante<br><input type="text" name="nombrerest">
Provincia<br>
<select name="provincia" class="caja">
  <option value="">-------------------"
<?php
 $sql
="select * from provincia order by nombreprov asc";
 
$resultados mysql_query($sql);
 
$p mysql_num_rows($resultados); 
 while(
$p mysql_fetch_array($resultados)) 
 {
 echo 
"<option value=\"$p[id_provincia]\" class=\"caja\">$p[nombreprov]</option>";
 }
 
mysql_free_result($result);
echo 
"</select></br></br>";
el caso es que quiero que se quede el valor de la provincia. es decir, valido mediante php y si el campo nombre del restaurante está vacío o el campo provincia está vacío, devuelve error diciendo que no pueden estar vacíos. el tema está en que si el campo nombre del restaurante está vacío y el campo provincia está seleccionado (por ejemplo con Guadalajara), al recargar el form para ver que hay bien y mal, dé el mensaje de que el campo nombre del restaurante no puede estar vacío pero que en el campo provincia se siga manteniendo el valor Guadalajara, que es el que seleccioné antes de enviar el form.

Ahora no lo hace. aunque seleccione ese valor, al enviarlo para validarlo, al recargar vuelve a poner todo el listado de las provincias. Alguna idea?
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #2 (permalink)  
Antiguo 04/01/2010, 08:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: mantener valor de un select mediante php

Te falta una condición para que se quede seleccionado ejemplo
Código PHP:
Ver original
  1. <?php
  2. $sql="select * from provincia order by nombreprov asc";
  3. $r = mysql_query($sql) or die(mysql_error());
  4.  
  5. $sql2 = mysql_query("aqui va el query de lo que el usuario selecciono");
  6. $r2 = mysql_query($sql2) or die(mysql_error());
  7. $p2 = mysql_fetch_assoc($r2);
  8.  
  9. while($p = mysql_fetch_array($r)){
  10.   $s = ($p["id_provincia"]==$p2["id_provincia_que_selecciono_usuario"]?"selected='selected'":"");
  11.   echo "<option value='".$p["id_provincia"]."' class='caja' ".$s.">".$p["nombreprov"]."</option>";
  12. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 04/01/2010, 12:21
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: mantener valor de un select mediante php

estoy empanada...me pierdo....como el query que el usuario seleccionó?
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #4 (permalink)  
Antiguo 04/01/2010, 12:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: mantener valor de un select mediante php

Me imagino que ingresaste la informacion de lo que selecciono el usuario en alguna tabla de la base de datos, pues ahi va ese query.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 04/01/2010, 12:57
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
no...para nada....todo es previo a la inserción en la base de datos. se valida precisamente para que a la base de datos vaya todo correcto

bueno....el query sería este

Código PHP:
"select * from provincia where id_provincia=$provinciarest" 
pero al validar me da un mensaje de error "Query was empty"

no sé...estoy empanadisima
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Última edición por GatorV; 06/01/2010 a las 10:53
  #6 (permalink)  
Antiguo 04/01/2010, 13:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: mantener valor de un select mediante php

Pues en el caso tuyo, solo tienes que corroborar el dato que paso por el metodo que hayas hecho (POST o GET)
Código PHP:
Ver original
  1. while($p = mysql_fetch_array($r)){
  2.   $s = ($p["id_provincia"]==$_POST["provinciarest"]?"selected='selected'":"");
  3.   echo "<option value='".$p["id_provincia"]."' class='caja' ".$s.">".$p["nombreprov"]."</option>";
  4. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 04/01/2010, 13:39
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: mantener valor de un select mediante php

que va...nada de nada...mira...yo valido mediante expresiones regulares antes de mandarlo a la base de datos. te dejo mi codigo:

Código PHP:
//Iniciamos si se ha pulsado el botón 'Siguiente' en el Formulario
if(isset($_POST['submit'])) 
{
// Creamos nombres de variables cortos
$nombrerest trim$_POST['nombrerest']); 
$provinciarest trim$_POST['provinciarest']);

//ahora mostramos mensajes si los dos campos, nombre y provincia, están //cumplimentados, es decir que no están vacíos

if (!empty($nombrerest) && !empty($provinciarest) && ereg("^[a-z A-Z áéíóúAÉÍÓÚÑñ]{2,}$",$provinciarest)) {
echo 
"correcto";
}

//en caso contrario, comenzamos con las validaciones

else 
   { 

     echo 
"<br><div style=\"background-color: #FFFFFF; border: #FFA500 1px solid; padding: 6px;\"><span class=\"text1\">Se han detectado los siguientes errores. Por favor, corríjalos y reenvíe la información</span><br><br>"
             if(empty(
$nombrerest)) {
         echo 
"<span class=\"text14\">El campo Nombre es obligatorio</span></br>"
         
$nombrerest $nombrerest."\" style=\"background-color: #FFE4E1\"";  
         }
         if(empty(
$provinciarest)) {
         echo 
"<span class=\"text14\">El Campo Provincia es Obligatorio</span></br>"
         
$provinciarest $provinciarest."\" style=\"background-color: #FFE4E1\"";  
         }
 echo 
"</div><br><br>";

//hasta aquí los mensajes de error a mostrar durante las validaciones. Mostramos nuevamente el formulario para que se corrija dichos defectos
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" name=\"f1\">"
echo 
"Nombre<br><input type=\"text\" name=\"nombrerest\" class=\"caja\" size=\"50\" value=\"$nombrerest\"></br>";
echo 
"Provincia<br>
<select name=\"provinciarest\" class=\"caja\"> "
;
  
 
$sql="select * from provincia order by nombreprov asc";
 
$r mysql_query($sql) or die(mysql_error());
 
 
$sql2 mysql_query("select * from provincia where id_provincia=$provinciarest");
 
$r2 mysql_query($sql2) or die(mysql_error());
 
$p2 mysql_fetch_assoc($r2);
 while(
$p mysql_fetch_array($r)){
  
$s = ($p["id_provincia"]==$_POST["provinciarest"]?"selected='selected'":"");
  echo 
"<option value='".$p["id_provincia"]."' class='caja' ".$s.">".$p["nombreprov"]."</option>";
 }
 
mysql_free_result($result);
echo 
"</select></br></br>";
echo 
"<br><input type=\"submit\" name=\"submit\" class=\"caja\" value=\"Enviar\">"
echo 
"<P><span class=\"required\">*</span> Todos los campos son obligatorios</P></FORM>"
//Procedemos a cerrar el supuesto de que haya algún error en la cumplimentación de algún campo
      
}      
    
//cierre de la aplicación para el caso incorrecto de los campos mediante el último }
      
}      
    
//este último } corresponde a al inicial abierto para cuando se pulsaba el botón Enviar

///////////SI NO SE HA PULSADO EL BOTÓN ENVIAR///////////////////////////////////////////////////////    
    
    //si no se ha pulsado el botón enviar, en este caso se muestra el formulario con todos los campos
if(!isset($_POST['submit'])) 
{
echo 
"<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" name=\"f1\">"
echo 
"Nombre <br><input type=\"text\" name=\"nombrerest\" class=\"caja\" size=\"50\" value=\"$nombrerest\"></br>";
echo 
"Provincia<br>
<select name=\"provinciarest\" class=\"caja\">"
;
 
$sql="select * from provincia order by nombreprov asc";
 
$resultados mysql_query($sql);
 
$p mysql_num_rows($resultados); 
 while(
$p mysql_fetch_array($resultados)) 
 {
 echo 
"<option value=\"$p[id_provincia]\" class=\"caja\">$p[nombreprov]</option>";
 }
 
mysql_free_result($result);
echo 
"</select></br></br>";
echo 
"<br><input type=\"submit\" name=\"submit\" class=\"caja\" value=\"Enviar\">"
echo 
"<P><span class=\"required\">*</span> Todos los campos son obligatorios</P></FORM>";
 } 
ea, pues con todo ello me da el error que te digo. la cosa está en que si el usuario deja el campo del nombre en blanco pero selecciona por ejemplo guadalajara cuando vuelva a cargar la página procedente de la validación diga que el campo nombre es obligatorio pero que en el campo provincia esté seleccionada guadalajara (aún cuando salga si se le da al desplegable todo el listado de provincias)
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Etiquetas: mantener, select
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:54.