Foros del Web » Programando para Internet » PHP »

array y select desplegable

Estas en el tema de array y select desplegable en el foro de PHP en Foros del Web. tengo un array array_sexo_cliente = array("hombre","mujer") y hago una comparación con un valor que le llega por post sexo cliente $sexo_client = $POST['sexo_cliente']; $sexo_cliente == ...
  #1 (permalink)  
Antiguo 18/08/2011, 05:51
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
array y select desplegable

tengo un array
array_sexo_cliente = array("hombre","mujer")


y hago una comparación con un valor que le llega por post sexo cliente
$sexo_client = $POST['sexo_cliente'];

$sexo_cliente == array_sexo_cliente {

}

la pregunta es que coge la llave o el valor como tengo que hacer para que coge al valor

tengo este select pero hay cosas que no se como hacer pero el concepto es este
que tenga que seleccionar un sexo que envio por post i lo compare con el array
si son los dos iguales hacer un selected

otra cosa si envio un formulario con 20 campos i uno tiene que estar lleno o no es correcto
no tengoa que volver a rellenar todos los campos i devolver un mensaje de error


<select name="sexo_cliente">
<option value=" " selected="selected">- seleccione un sexo-</option>
<option value= $array_sexo_cliente
while ($array_sexo_client){
if($array_sexo_client == $sexo_cliente){
seleced="selected";
}
> $array_sexo_cliente </option>
}
</select>

mi pregunta tambien como se podria hacer lo mismo con checkbox,radibutton,file,textarea
la combinacion de php y html
  #2 (permalink)  
Antiguo 18/08/2011, 07:14
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: array y select desplegable

Creo que nada de lo que pones tiene sentido, no sé si vienes de otro lenguaje de programación o qué, pero esos trozos de código que has puesto ni si quiera cumplen la sintaxis de PHP:
Código PHP:
Ver original
  1. array_sexo_cliente = array("hombre","mujer")
Esto no crea un array, pues te falta el $ de la variable:
Código PHP:
Ver original
  1. $array_sexo_cliente = array("hombre","mujer")

Código PHP:
Ver original
  1. $sexo_cliente == array_sexo_cliente {
  2.  
  3. }
Esto no tiene ningún sentido, te falta el $ de la variable, estás haciendo una comparación sin ningún if y estás comparando un string con un array, supongo que lo que buscas es algo así:
Código PHP:
Ver original
  1. if ($sexo_cliente == $array_sexo_cliente[0]) {
  2.    echo "Aquí entra si la cadena de sexo_cliente es igual a cadena de la posición 0 (hombre) del array_sexo_cliente";
  3. } else if ($sexo_cliente == $array_sexo_cliente[1]) {
  4.    echo "Aquí entra si la cadena de sexo_cliente es igual a cadena de la posición 1 (mujer) del array_sexo_cliente";
  5. } else {
  6.    echo "Aquí entra si la cadena de sexo_cliente no es igual ni a la posicón 0 (hombre) ni a la 1 (mujer) del array_sexo_cliente";
  7. }

Código PHP:
Ver original
  1. <select name="sexo_cliente">
  2. <option value=" " selected="selected">- seleccione un sexo-</option>
  3. <option value= $array_sexo_cliente
  4. while ($array_sexo_client){
  5. if($array_sexo_client == $sexo_cliente){
  6. seleced="selected";
  7. }
  8. > $array_sexo_cliente </option>
  9. }
  10. </select>
Y esto ya es la bomba, metes HTML junto con PHP sin usar los tags <?php ?>, pasas al value de option el contenido de un array completo, imprimes seleced (mal escrito) sin usar echo, cierras mal el while y el option, construyes mal la condición del while y un sinfín de cosas más. Aquí si que ya es muchísimo suponer que buscas algo así:
Código PHP:
Ver original
  1. <select name="sexo_cliente">
  2.    <option value="" selected="selected">- seleccione un sexo-</option>
  3. <?php
  4. for ($i = 0; $i < count($array_sexo_cliente); $i++) {
  5.    echo '   <option value=' . $array_sexo_cliente[$i];
  6.    if ($array_sexo_cliente[$i] == $sexo_cliente) {
  7.       echo ' selected="selected"';
  8.    }
  9.    echo '>' . $array_sexo_cliente[$i] . '</option>';
  10. }
  11. ?>
  12. </select>

Como verás, no tiene absolutamente nada que ver con lo que tú tenías. Y si he acertado que era eso lo que querías, que tiemble Aramis Fuster, porque soy el nuevo adivino de España.

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 18/08/2011, 08:10
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: array y select desplegable

vgonga1986 gracias por la ayuda y perdona por mi desconocimiento

soy novato con php y la programación nunca asido mi fuerte espero que dentro un par de años aprenda un poco

tengo un par de dudas ahora esta mejor que la pregunta anterior es porque había hecho dos preguntas similares y nadie me contesto pero
estaban mejor que la que me has contestado tu

con respecto el de el array también lo podría hacer así

Código PHP:
Ver original
  1. if($sexo_cliente == 'hombre' &&  $sexo_cliente  == 'mujer' ){
  2.    
  3. }

pero tengo otro select con 23 letras, no cojo las datos de ninguna base de datos y creo que tendría que hacer un array

para no tener que hacer $letra_dni_cliente == 'a' && $letra_dni_cliente == 'b' etc...
Código PHP:
Ver original
  1. $array_letra_dni  = ('a','b','c');

pero tendría que hacer un bucle para recorrer las 23 letras y comparar la que le llega desde el formulario


Código PHP:
if(isset($POST['submit']))
{
$nombre_cliente $_POST["nom_client"];

$validacio_nombre_cliente "/[A-Za-z]{2,15}/";

$sexo_cliente $_POST['sexo_cliente']

if(    
preg_match($validacion_nombre_cliente$nombre_cliente ) &&
       (
$sexo_cliente == 'hombre' &&  $sexo_cliente  == 'mujer'
  ){
            
$hostname="**************";
            
$user="****************";
            
$password="**************";
            
$database="*****************";
        
            
$link mysqli_connect($hostname,$user,$password,$database);
            
$query_insert_cliente =
            
"INSERT INTO clientes (nombre_cliente,sexo_cliente)
            VALUES(
                """ 
.   strtolower($nombre_cliente) .  "\"," .
                
"\"" .   strtolower($sexo_cliente) .  "\"
            );"
;
          
            
$result_insert_client mysqli_query($link,$query_insert_client)  or die (mysqli_error($link));
            echo 
'sexo registrado i nombre';
          }

        else
        {
            
$nombre_cliente =  $_POST["nombre_cliente"];
              
$validacio_nombre_cliente "/[A-Za-z]{2,15}/";
            if( !
preg_match($validacion_nombre_cliente$nombre_cliente ))
            {
                
$nombre_cliente_error 'Introduzca un nombre ex: Raul .'<br/>';
            }
            
            $sexo_cliente = $_POST["sexo_cliente"];
            if( !$sexo_cliente == '
hombre' && !sexo_cliente='mujer' ){
                $sexo_cliente_error = '
Introduzca un sexo exHombre .'<br/>';
            }
        }      
}
?> 
Código HTML:
Ver original
  1. * Campos Obligatorios
  2.         <form action="formulario_de_registro.php" method="post">
  3.              <label for="nombre_cliente">Nombre: *</label><br/>
  4.             <input type="text" name="nombre_cliente" value="<?php if(isset($nombre_cliente)) echo $nombre_cliente ?>" size="15" maxlength="15"/><br/>
  5.             <?php echo $nombre_cliente_error;?>
  6.            
  7.             <label for="sexo_cliente">Sexo: *</label><br/>
  8.               <select id="sexo_cliente" name="sexo_cliente">
  9.                 <option value="" selected="selected"> - Selecciona una Sexo - </option>
  10.                 <optgroup label="Sexo">
  11.                 <option value="hombre">Hombre</option>
  12.                 <option value="mujer">Mujer</option>
  13.                 </optgroup>
  14.               </select><br/>
  15.              <?php /*echo $sexe_cliente_error;*/?>
  16.              
  17.         <input type="submit" name="submit" value="submit"/><br/>
  18.         </form>
  19.     </body>
  20. </html>

en otras ocasiones si hago un desplegable que me salgan las provincias que extraigo de una base de datos antes
de hacer el insert vuelvo a validar las provincias haciendo otra select

mi pregunta también como se podria hacer lo mismo con checkbox, radibutton,file,textarea
la combinación de php y html

con el el input ya se como funciona y creo que con lo que me has dicho del select ya me va a funcionar ahora voy a aprobarlo

como lo haces para aprender php?

Código HTML:
Ver original
  1. <label for="nombre_cliente">Nombre: *</label><br/>
  2. <input type="text" name="nombre_cliente" value="<?php if(isset($nombre_cliente)) echo $nombre_cliente ?>" size="15" maxlength="15"/><br/>
  3. <?php echo $nombre_cliente_error;?>
  #4 (permalink)  
Antiguo 18/08/2011, 09:18
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: array y select desplegable

Vamos por partes, como dijo Jack el Destripador:

1) Si nadie te respondió a tus preguntas anteriores probablemente será porque eran similares a esta. Nosotros estamos aquí para echar una mano a la gente, pero no para empezar a enseñarles de 0. Para eso están los manuales (que tienes millones por todos lados). Si los que vienen a echar una mano ven un post con un código como el que has puesto tú, directamente ni se molestan en contestar, porque salta a la vista que la persona no tiene ni idea, tienes que empezar con manuales.

2) El if este está mal montado:
Código PHP:
Ver original
  1. if($sexo_cliente == 'hombre' &&  $sexo_cliente  == 'mujer' ){
Lo que quieres es que te valide si es hombre O mujer. Ahí has puesto hombre Y mujer. Como no puede ser las dos cosas a la vez eso siempre devolverá false. Sería así.
Código PHP:
Ver original
  1. if($sexo_cliente == 'hombre' ||  $sexo_cliente  == 'mujer' ){

3) Lo que comentas de las letras, es mucho más sencillo si utilizas la función in_arrray:
Código PHP:
Ver original
  1. $array_letra_dni  = ('a', 'b', 'c', 'd', 'e', 'f'); // Aquí todas las letras que quieras.
  2. if (in_array($letra_dni_cliente, $array_letra_dni)) {
  3.    echo "La letra está en el array";
  4. } else {
  5.    echo "La letra NO está en el array";
  6. }
(También lo puedes hacer con expresiones regulares).

4) El código que has puesto deja bastante que desear, tienes varios errores de comillas, si te fijas incluso el coloreador de código del foro te lo detecta y te pinta mal las cosas:
Código PHP:
Ver original
  1. "INSERT INTO clientes (nombre_cliente,sexo_cliente)
  2.            VALUES('" . strtolower($nombre_cliente) . "', '" . strtolower($sexo_cliente) . "');";
Código PHP:
Ver original
  1. $nombre_cliente =  $_POST["nombre_cliente"];
  2.               $validacio_nombre_cliente = "/[A-Za-z]{2,15}/";
  3.             if( !preg_match($validacion_nombre_cliente, $nombre_cliente )) {
  4.                 $nombre_cliente_error = 'Introduzca un nombre ex: Raul<br/>';
  5.             }
  6.            
  7.             $sexo_cliente = $_POST["sexo_cliente"];
  8.             if(!$sexo_cliente == 'hombre' && !sexo_cliente == 'mujer' ) {
  9.                 $sexo_cliente_error = 'Introduzca un sexo ex: Hombre<br/>';
  10.             }
En este trozo además, hacías mal la comparación (!sexo_cliente='mujer'), eso es una asignación (=) y esto es una comparación (==). Además, las variables nombre_cliente, validacio_nombre_cliente y sexo_cliente las sobreescribes con el mismo valor, no necesitas hacerlo dos veces, ya lo tienes el que quieres.

5) Lo que comentas del radiobutton, file, textarea... La idea es exactamente la misma, los valores se pasarán por $_POST, pero tienen ligeras diferencias en la forma en que se pasan. Lo único que tienes que hacer es buscarte un buen manual de tratamiento de formularios en PHP, te va a explicar las cosas mejor que yo.

6) Cómo he hecho para aprender PHP? Como todos, supongo. Yo tuve la suerte de que en clases de informática me enseñaron ASP (que no es PHP, pero se asemeja) y tenía la base, pero si no, es exactamente igual. La gente aprende con manuales, primero, y luego con imaginación, ganas y pruebas. No hay otra forma, te lo aseguro.

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 18/08/2011, 10:07
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: array y select desplegable

1-Esto no lo acabo de entender
Además, las variables nombre_cliente, validacio_nombre_cliente y sexo_cliente las sobreescribes con el mismo valor, no necesitas hacerlo dos veces, ya lo tienes el que quieres.

2-conoces algun manual de tratamiento de formularios en PHP preferiblemente en español

3-siempre tengo problema con los strings
"INSERT INTO clientes (nombre_cliente,sexo_cliente)
VALUES('" . strtolower($nombre_cliente) . "', '" . strtolower($sexo_cliente) . "');";


ahora voy a probar el in_array o la expression regular

que programa utilizas para programar con php i utilizas algun debugador como xdebug
lo digo porque hacer echos i print_r es un palo
he utilizado netbenas6.9 i eclipse pero ahora utilizo uno que se llama aptana

yo hice un grado supererior de administracion de sistemas pero utilizamos C i C# i PHP pero hicimos muy poca programacion
teniamos un professor que no ensenyava nada de php i suspendia a toda la classe todos sacabamos un 2 menos uno que sabia mas que el profe i saco un 6
tampoco es que en C i C# sacara un 10 sacaba un 5

ahora estoy aprendiento por mi cuenta con un libro i la ayuda del foro pero me esta costando bastante
  #6 (permalink)  
Antiguo 18/08/2011, 10:13
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: array y select desplegable

1) Lo que digo es que estás volviendo a asignar valor a las variables, exactamente el que tenían arriba. No te da problemas, pero es una operación que te sobra, porque ya tienen ese valor. Es como hacer:
$variable = "Hola";
$variable = "Hola";

2) Prueba con google.

3) Utiliza comillas dobles y simples, pero con cabeza, que si no te vas a liar más. Toma una forma de hacerlo y hazlo siempre igual, si te adaptas a tu propia norma, no te confundirás.

Yo uso un editor de textos cualquiera (en mi caso UltraEdit) con que colorée el código me va que me sobra. No lo suelo usar mucho, pero tengo instalada la extensión FireBug del Firefox, para casos especiales, pero te aseguro que es mucho mejor hacer prints y echos, yo controlo los código así. Todo lo que se salga de esto, me parece una utilización de recursos absurda, todos esos programas suelen consumir mucho y ralentizar la máquina, yo mientras más ligerito mejor.

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?
  #7 (permalink)  
Antiguo 22/08/2011, 06:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 443
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: array y select desplegable

hay alguna forma de ver cada iteración del for en php

lo del count no lo acabo de entender count($array_sexo_cliente)

hay alguna otra forma de hacerlo para que lo entienda mejor


se que la función count sirve para contar cada posición del array la primera iteración sera 0 hombre y la segunda 1 mujer

se que los array comienza por cero
la primera iteración va comparar hombre con hombre y la segunda mujer con mujer si no es ninguno de estos dos va a mostrar un mensaje de error diciendo que se tiene que seleccionar un sexo

en el formulario tengo 5 campos y 4 son input y uno es select los 4 input tengo en el value
para que se mantenga la información hasta no tengo los 5 campos obligatorios para poder
rellenar el formulario

value="<?php if(isset($nombre_cliente)) echo $nombre_cliente ?>"

he hecho algo parecido en el for pero me da error

echo '<option value=' . if(isset($array_sexo_cliente[$sexo_cliente_for])) echo $array_sexo_cliente[$sexo_cliente_for];

lo unico que he conseguido es que imprima dos veces en vez de una el nombre pero eso no
es lo que quiero

echo '<option value=' . $array_sexo_cliente[$sexo_cliente_for] ; echo $array_sexo_cliente[$sexo_cliente_for];
if( $array_sexo_cliente[$sexo_cliente_for] == $sexo_cliente){


con respecto con el select de 23 letras se podría hace la validación con un array o expresión regular
pero select se tiene que hacer con un array y el for como el ejemplo de hombre y mujer
  #8 (permalink)  
Antiguo 22/08/2011, 07:09
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: array y select desplegable

1) Para ver cada iteración del for simplemente imprime lo que quieras ver con echo e imprime el índice, así sabrás qué valor tiene en cada iteración:
echo "Iteración número " . $i . ": " . $valor_que_quieras_imprimir;

2) count aplicado a un array te da el tamaño del array. Si no sabes esto y cómo montar un bucle for, te recomiendo encarecidamente que mires manuales, porque no hay nada más básico que esto.

3) Te repito lo de antes, esto no es para nada complicado. Mejor que buscar una forma más simple (que dudo que la encuentres) dedícate a aprender. No intentes buscar soluciones mágicas, sólo hay que leer un poco.

4) Esto está fatal, tienes un montón de errores de sintaxis:
Código PHP:
Ver original
  1. echo '<option value=' . if(isset($array_sexo_cliente[$sexo_cliente_for])) echo $array_sexo_cliente[$sexo_cliente_for];
  2. echo '<option value=' . $array_sexo_cliente[$sexo_cliente_for] ; echo $array_sexo_cliente[$sexo_cliente_for];
  3. if( $array_sexo_cliente[$sexo_cliente_for] == $sexo_cliente){
En serio, mírate manuales, porque no sabes escribir PHP.

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?

Etiquetas: desplegable, html, select, formulario
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 13:25.