Foros del Web » Programando para Internet » PHP »

select desplegable y value problemas con llave primera de 2 palabras

Estas en el tema de select desplegable y value problemas con llave primera de 2 palabras en el foro de PHP en Foros del Web. pasteles classicos <option classicos="" value="pasteles">pasteles classicos</option> si son galletas ya funciona bien <option value="galletas">galletas</option> @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML ...
  #1 (permalink)  
Antiguo 05/09/2011, 08:08
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
select desplegable y value problemas con llave primera de 2 palabras

pasteles classicos
<option classicos="" value="pasteles">pasteles classicos</option>
si son galletas ya funciona bien
<option value="galletas">galletas</option>


Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4.         <title></title>
  5.     </head>
  6.     <body>


Código PHP:
  <?php
   $hostname
="*";
   
$user="*";
   
$password="*";
   
$database="*";
   
$link mysqli_connect($hostname,$user,$password,$database);
   
   
mysqli_query ($link,'SET NAMES "utf8" ');
   
$query_categorias_select 'SELECT * FROM categorias';
   echo 
$query_categorias_select;
   
$result_categorias_select mysqli_query($link,$query_categorias_select);
   
?>
Código HTML:
Ver original
  1. <form action="precios.php" method="get">
  2.         <label for="categorias">Categorias</label><br/>
  3.         <select id="categorias" name="categorias" size="35" multiple="multiple">
  4.         <option value="" selected="selected">- selecciona una categoria -</option>
Código PHP:
   <?php
   
   
while($row_categorias_select mysqli_fetch_array($result_categorias_selectMYSQLI_ASSOC))
    {
       
?>
           
           <?php echo "<option value="  $row_categorias_select['nombre_categoria'] . ">"  $row_categorias_select['nombre_categoria'] . "</option>" ?>

    <?php
   
}
    
?>
Código HTML:
Ver original
  1. </select>  
  2.   </form>
  3.  
  4.     </body>
  5. </html>
  #2 (permalink)  
Antiguo 05/09/2011, 08:12
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

Qué es esto?:
Código PHP:
Ver original
  1. <option classicos="" value="pasteles">pasteles classicos</option>

Le has puesto un atributo classicos al tag option. Eso está mal, aunque no sé si es el error real que tienes o que te has confundido al escribirlo aquí.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 05/09/2011, 08:19
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

esto es lo que me devele el firebug
algunos campos están bien los que la llave primaria solo es una palabra en cambios si son dos o mas tiene este extraño comportamiento

hay gente que dice que cuando creas la base de datos hagas 2 campos
url y llave primaria:pasteles_clasicos y otro pasteles clásicos, yo creo que es mejor solo hacer uno ademas si mas adelante un usuario hace este trabajo el te va entrar las cosas sin guion bajo y con acentos y te va a preguntar porque lo tiene que entrar 2 veces

tanto para las urls como en en este caso el select seguro que hay alguna solución
espero vuestra ayuda pronto gracias de antemano
  #4 (permalink)  
Antiguo 05/09/2011, 08:28
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

Buenas,

Más normal que lo que tú comentas es poner dos campos, uno con el nombre y otro con un id (numeric auto-increment), de forma que en la inserción sólo indicas el nombre y el número se va incrementando automáticamente, empezando en 1. Es una herramienta que ofrecen todos los gestores de bases de datos para este tema, precisamente.

Si tienes una tabla con id_categoria y nombre_categoria puedes hacer lo siguiente:
Código PHP:
Ver original
  1. <?php echo "<option value="  . $row_categorias_select['id_categoria'] . ">"  . $row_categorias_select['nombre_categoria'] . "</option>" ?>

De esta forma tus usuarios no tienen que ingresar nada dos veces, pero lo que para ellos es el identificativo de una categoría, para ti es sólo el nombre, ya que el id es un numérico (que luego es más fácil de manejar). Así es como suele hacerse.

En cuanto a tu problema, es bastante extraño, lo único que se me ocurre es que tu gestor de bases de datos interprete el espacio como otro dato o algo así. De forma que se te pone en el value la primer palabra del nombre y la segunda se ponga como un atributo diferente, como vemos en lo que has indicado. Lo que no sé es cómo se podría arreglar, el código lo veo bien, la verdad.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #5 (permalink)  
Antiguo 05/09/2011, 08:41
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

gracias por tu ayuda
como hago para darte karma lo han cambiado

utilizo mysql y php
antes utilizaba auto_increments pero en este caso no es obligatorio
lo que quiero hacer es un select desplegable con diferentes categorías y seleccionar un categoría
y devolver el nombre producto, una foto producto, precio producto para poder modificar los precios de los diferentes productos en función de la categoría que hayamos seleccionado

antes ponía
categoría 22

ahora tengo
categoría pasteles clásicos

hay gente que dice que en la tabla categoría guarde
pasteles_clásicos
pasteles clásicos

el primer campo se utiliza como llave primaria y para devolver por la url y la
segunda podría ser utilizado como un titulo o en el caso del select desplegable en el <option></option>

yo creo que se podría guardar así pasteles clásicos si auto_increments y tampoco pasteles_clásicos con guion bajo y sin acentos
  #6 (permalink)  
Antiguo 05/09/2011, 08:54
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

Buenas,

Yo te recomiendo utilizar un indice auto-increment. No ya sólo por la facilidad de tratamiento a posteriori con el código PHP, sino también porque para MySQL (y otros motores de bases de datos) es mucho más sencillo hacer operaciones con enteros que con cadenas. Por ejemplo, las búsquedas son mucho más rápidas si las haces con un id entero, ya que se ordena de menor a mayor y el acceso al campo buscado es directo. Si la primary key de la tabla es una cadena, tiene que recorrer toda la tabla comparando una por una las claves.

Es decir, es mucho más rápido a nivel de bases de datos hacer:
Código SQL:
Ver original
  1. SELECT * FROM Categoria WHERE id_categoria = 238
Que hacer:
Código SQL:
Ver original
  1. SELECT * FROM Categoria WHERE nombre_categoria = 'pasteles clásicos'

De todas formas, esto sólo son consejos que yo te doy, para un buen diseño de bases de datos. Yo siempre incluyo un id auto-increment, sea o no necesario, porque facilita todo lo demás. Luego cada uno puede hacer lo que quiera, para eso están los consejos, para seguirlos o no.

Un saludo.

PD: no te esfuerces en darme karma, ni lo miro.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #7 (permalink)  
Antiguo 05/09/2011, 10:28
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4.         <title></title>
  5.     </head>
  6.     <body>
Código PHP:
  <?php
   $hostname
="*";
   
$user="*";
   
$password="*";
   
$database="*";
   
$link mysqli_connect($hostname,$user,$password,$database);
   
   
mysqli_query ($link,'SET NAMES "utf8" ');
   
$query_categorias_select 'SELECT * FROM categorias';
   echo 
$query_categorias_select;
   
$result_categorias_select mysqli_query($link,$query_categorias_select);
   
?>
Código HTML:
Ver original
  1. <form action="precio.php" method="get">
  2.         <label for="categorias">Categorias</label><br/>
  3.         <select id="categorias" name="categorias" size="35" multiple="multiple">
  4.         <option value="" selected="selected">- selecciona una categoria -</option>

Código PHP:
<?php
   
   
while($row_categorias_select mysqli_fetch_array($result_categorias_selectMYSQLI_ASSOC))
    {
       
?>
Código PHP:
    <?php echo "<option value="    $row_categorias_select['nombre_categoria'] . ">"  $row_categories_select['nombre_categoria'] . "</option>" ?>
<!-- Aquí es donde pondría el hidden-->
<!--<input type="hidden" name="nom_categoria" value="--><?php /*$row_categories_select['nom_categoria']*/ ?><!--"/>-->
Código PHP:
<?php
    
   
}
    
?>
Código HTML:
Ver original
  1. </select>
  2.        
  3.         <input type="submit" name="submit" value="submit"/>  
  4.   </form>
Código PHP:
<?php
  
   $hostname
="*";
   
$user="*";
   
$password="*";
   
$database="*";
   
$link mysqli_connect($hostname,$user,$password,$database);
   
mysqli_query ($link,'SET NAMES "utf8" ');
   
$query_categoria_select ='SELECT nombre_producto,ruta_foto_pequeña,precio_producto 
   FROM productos INNER JOIN categorias 
   ON productos.nombre_categoria = categorias.nombre_categoria WHERE categorias.nombre_categoria =' 
$_GET['nombre_categoria'];
   echo 
$query_categoria_select;
 
?>
Código HTML:
Ver original
  1. </body>
  2. </html>

en la segunda select no le llaga la categoría en el get pero en el primer select si pongo un hidden solo me sale la primera categoria que es lo que no hago bien.por la url si se ve http://localhost/php//precio/precio....&submit=submit
mas adelante quiero hacer un update del precio
creo que tendría que utilizar una función str_replace o alguna otra parecida 15,20 lo substituya la coma para un punto que es como se guarda realmente en la base de datos porque el cliente o yo entraremos una , es la costumbre y no un punto y con alguna funcion solventar el problema, también tendría que validar con expresiones regulares que le llegue 0,50-99,99 pero tengo auténticos problemas con las expresiones regulares si hubiera un libro en español aunque me cueste 60€ lo compraría hay muchos tutoriales pero solo salen las cosas básicas

Última edición por albertrc; 05/09/2011 a las 10:57
  #8 (permalink)  
Antiguo 05/09/2011, 11:55
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

Vamos a ver, chico, pasas de una pregunta a otra y me tienes loco. Ya no sé si lo anterior te funciona o no, te doy un consejo y no lo tomas, sigues con lo tuyo o pasas a otra cosa. En serio quieres ayuda o qué quieres? Porque me parece que no te aclaras ni tú.

El hidden ahí está mal puesto, porque estás poniendo un input dentro de los límites de un select, obvio que se te corte el select, estás volviendo loco el HTML. En segundo lugar, no tiene ningún sentido enviar un hidden con el mismo value que vas a enviar en el select, no sé de dónde lo has sacado, pero no te va a funcionar jamás si tiras por ahí. Por qué no simplemente te limitas a tomar el consejo que te di y añadir un campo numérico a la tabla para pasarlo como value de cada <option>? Si no vas a seguir por ahí, lo siento, pero yo no te voy a ayudar más, ya te di una solución, no te gusta, pues allá tú.

En cuanto a lo que dices del precio (que ya es otra consulta), tienes str_replace o preg_replace, que es con expresiones regulares, aunque para cambiar una coma por un punto, la verdad, no creo que te haga falta. Un libro de expresiones regulares, dudo mucho que lo encuentres, las expresiones regulares son un campo tan abierto que es imposible hacer un manual, porque hay tantos problemas y tantas soluciones que cada caso es único. Tienes que saber lo básico y tener imaginación, probar mucho y aprender de cuando te confundas, es la única manera.

Para comprobar si es mayor de 0,50 y menor de 99,99, por qué no lo pasas a float y lo comparas con mayor y menor? Lo veo mucho más fácil que controlar expresiones regulares. A veces os complicáis la vida demasiado.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #9 (permalink)  
Antiguo 19/09/2011, 02:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: select desplegable y value problemas con llave primera de 2 palabras

ya voy a cambiar la categoría con numérico o autonumerico pero de momento mi principal problema es que no le llega la llave primaria en la segunda select y tampoco en el hidden
que es lo que no hago bien espero que me puedan ayudar

lo estoy enviando bonbones y selecciono el botón enviar pero no le llega a la segunda select

si hago este mismo sistema en una tabla creo que va a funciona porque de esta otra manera no funciona

en caso de que no se entienda me lo decís y lo voy a escribir o formular de otra forma

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.     <head>
  3.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4.         <title></title>
  5.     </head>
  6.     <body>
Código PHP:
<?php
   $hostname
="*;
   $user="
*";
   $password="
*";
   $database="
*";
   $link = mysqli_connect($hostname,$user,$password,$database);
   
   mysqli_query ($link,'SET NAMES "
utf8" ');
   $query_categorias_select = 'SELECT * FROM categorias';
   echo $query_categorias_select;
   $result_categorias_select = mysqli_query($link,$query_categorias_select);
   ?>
Código HTML:
Ver original
  1. <form action="precio.php" method="get">
  2.         <label for="categorias">Categorias</label><br/>
  3.         <select id="categorias" name="categorias" size="35" multiple="multiple">
  4.         <option value="" selected="selected">- selecciona una categoria -</option>
Código PHP:
  <?php
   
   
while($row_categorias_select mysqli_fetch_array($result_categorias_selectMYSQLI_ASSOC))
    {
       
?>
Código PHP:
<?php echo "<option value="    $row_categorias_select['nombre_categoria'] . ">"  $row_categorias_select['nombre_categoria'] . "</option>" ?>
        
    <?php    
   
}
    
?>

Código HTML:
Ver original
  1. </select>
  2.        
  3.         <input type="submit" name="submit" value="submit"/>  
  4.   </form>
<input type="hidden" name="nombre_categoria" value="<?php echo $row_categories_select['nombre_categoria']?>"/>
Código PHP:
<?php
  
   $hostname
="*";
   
$user="*";
   
$password="*";
   
$database="*";
   
$link mysqli_connect($hostname,$user,$password,$database);
   
mysqli_query ($link,'SET NAMES "utf8" ');
   
$query_categoria_select ='SELECT nombre_producto,ruta_foto_pequeña,precio_producto 
   FROM productos INNER JOIN categorias 
   ON productos.nombre_categoria = categories.nombre_categoria WHERE categories.nombres_categoria =' 
$_GET['nombre_categoria'];
   echo 
$query_categoria_select;
 
?>

Última edición por albertrc; 19/09/2011 a las 04:06

Etiquetas: desplegable, html, llave, mysql, palabras, primera, 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 06:19.