Foros del Web » Programando para Internet » PHP »

¿Problema con un if?

Estas en el tema de ¿Problema con un if? en el foro de PHP en Foros del Web. Hola, haber si me explico, en mi proyecto, tengo un codigo que se inserta en la base de datos con select pero el contenido de ...
  #1 (permalink)  
Antiguo 14/05/2010, 11:25
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 15 años, 1 mes
Puntos: 5
¿Problema con un if?

Hola, haber si me explico, en mi proyecto, tengo un codigo que se inserta en la base de datos con select pero el contenido de los select no es dinamico, si no escrito manualmente.

Me explico

Tengo este codigo.

Código PHP:
<tr>
<
td>Sexo</td>
<
td><select name="sexo">
        <
option value="varon">Varon</option>
        <
option value="hembra">Hembra</option>
    </
select>
</
td>
</
tr>

<
tr>
<
td>Estado Civil</td>
<
td><select name="estadocivil">
        <
option value="soltero/a" selected>Soltero/a</option>
        <
option value="casado">Casado/a</option>
        <
option value="arrejuntado/a">Arrejuntado/a</option>
        <
option value="divorciado/a">Divorciado/a</option>
        <
option value="sin pareja previa">Sin pareja previa</option>
        <
option value="menor de edad">Menor de edad</option>
    </
select>

</
td>
</
tr>

<
tr>
<
td>Sexualidad</td>
<
td><select name="sexualidadpersonaje">
        <
option value="heterosexual">Heterosexual</option>
        <
option value="Homosexual">Homosexual</option>
        <
option value="Bisexual">Bisexual</option>
    </
select>
</
td>
</
tr
Solo he extraido las partes que interesan, obviamente todo esto iria con la etiqueta table y demas.

Pues bien estoy actualizando datos con update y quiero de algún modo que aparezcan selecionados los que esten insertados en la base de datos y luego los demas SIN QUE SE REPITA, el seleccionado.

Por ejemplo

Este codigo.

Código PHP:

<tr>
<
td>Sexo</td>
<
td><select name="sexo">
        <
option value="varon">Varon</option>
        <
option value="hembra">Hembra</option>
    </
select>
</
td>
</
tr
Imaginemos que el codigo insertado es varón, entonces eso deberia aparecer seleccionado y debajo apareceria para elegir hembra, quedaria asi, el codigo final extraido con el navegador


Código PHP:
<tr>
<
td>Sexo</td>
<
td><select name="sexo">
        <
option value="varon" selected>Varon</option>
        <
option value="hembra">Hembra</option>
    </
select>
</
td>
</
tr
pero realmente no sé como hacerlo, por que de la forma que lo tengo yo, me genera siempre el valor seleccionado y luego todos los demas, por lo que el valor seleccionado apareceria repetido.

Tal que asi.

Código PHP:
<tr>
<td>Sexo</td>
<td><select name="sexo">
    <?php 
        
if($registros["sexo"]!="")
        {
    
?>
        <option value="<?php echo $registros["sexo"];?>" selected><?php echo $registros["sexo"];?></option>
        <option value="varon">Varon</option>
        <option value="hembra">Hembra</option>

    <?php 
        
}
        else
        {
    
?>
        <option value="varon">Varon</option>
        <option value="hembra">Hembra</option>
        <?php 
        
}
    
?>
    </select>
</td>
</tr>

<tr>
<td>Estado Civil</td>
<td><select name="estadocivil">
<?php 
        
if($registros["estado_civil"]!="")
        {
    
?>    
        <option value="<?php echo $registros["estado_civil"];?>" selected><?php echo $registros["estado_civil"];?></option>
        <option value="soltero/a">Soltero/a</option>
        <option value="casado">Casado/a</option>
        <option value="arrejuntado/a">Arrejuntado/a</option>
        <option value="divorciado/a">Divorciado/a</option>
        <option value="sin pareja previa">Sin pareja previa</option>
        <option value="menor de edad">Menor de edad</option>
    <?php 
        
}
        else
        {
    
?>
        <option value="soltero/a" selected>Soltero/a</option>
        <option value="casado">Casado/a</option>
        <option value="arrejuntado/a">Arrejuntado/a</option>
        <option value="divorciado/a">Divorciado/a</option>
        <option value="sin pareja previa">Sin pareja previa</option>
        <option value="menor de edad">Menor de edad</option>
        <?php 
        
}
    
?>
    </select>

</td>
</tr>

<tr>
<td>Sexualidad</td>
<td><select name="sexualidad">
    <?php 
        
if($registros["sexualidad"]!="")
        {
    
?>    
        <option value="<?php echo $registros["sexualidad"];?>" selected><?php echo $registros["sexualidad"];?></option>
        <option value="heterosexual">Heterosexual</option>
        <option value="Homosexual">Homosexual</option>
        <option value="Bisexual">Bisexual</option>
    <?php 
        
}
        else
        {
    
?>
        <option value="heterosexual">Heterosexual</option>
        <option value="Homosexual">Homosexual</option>
        <option value="Bisexual">Bisexual</option>
        <?php 
        
}
    
?>
    </select>
</td>
</tr>
¿Alguna idea para que no se repita el valor seleccionado?
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #2 (permalink)  
Antiguo 14/05/2010, 12:43
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 12 años, 5 meses
Puntos: 48
Respuesta: ¿Problema con un if?

Prueba con esto a ver si te funciona. No esta probado pero por lo menos para que te de una idea de como resolver el problema.

Código PHP:
<select name="sexo"> 
    <?php  
        $sexos 
= array('varon''hembra');
        
$selected "";

        foreach(
$sexos as $sex)
        {
            if(
$registros['sexo']==$sex)
                
$selected="selected=\"selected\"";
            
    
?>
            <option value="<?php echo $registros['sexo'?><?php echo $selected ?>><?php echo $registros['sexo'?></option>             
    <?php
            $selected 
"";
        }
    
?>
</select>
Saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #3 (permalink)  
Antiguo 14/05/2010, 17:44
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: ¿Problema con un if?

Funciona perfecto salvo por una cosa.

He adaptado el codigo, en vez de un foreach he puesto un for, por que el foreach no lo acabo de comprender, me ha quedado asi.

Código PHP:
<?php 
$sexos 
= array('varon''hembra');
        
$selected "";

       for(
$contador=0;$contador<count($sexos);$contador++)
        {
            if(
$registros['sexo']==$sexos[$contador])
            {
                
$selected='selected="selected"';
            
    
?>
            <option value="<?php echo $registros['sexo'?><?php echo $selected ?>><?php echo $registros['sexo'?></option>             
    <?php
            $selected 
"";
            }
        } 
?>
Asi me muestra bien el seleccionado en el desplegable, lo malo es que no me muestra los demas, la idea es hacer una consulta de actualizacion por lo que tienen que aparecer todos los valores que habia en la base de datos y darte la opcion de poder cambiarlo.

La idea es que aparezca hembra seleccionado y macho debajo para poder seleccionar, pero francamente no sé como hacerlo, para que teniendo en cuenta el que este seleccionado me muestre ese seleccionado y los demas debajo.

En este caso, en un personaje hembra, me aparece seleccionado que es hembra, pero no me da mas opciones el desplegable
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333

Última edición por neoarcangel; 14/05/2010 a las 17:54
  #4 (permalink)  
Antiguo 14/05/2010, 18:08
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 12 años, 5 meses
Puntos: 48
Respuesta: ¿Problema con un if?

Cita:
Iniciado por neoarcangel Ver Mensaje
Funciona perfecto salvo por una cosa.

He adaptado el codigo, en vez de un foreach he puesto un for, por que el foreach no lo acabo de comprender, me ha quedado asi.

Código PHP:
<?php 
$sexos 
= array('varon''hembra');
        
$selected "";

       for(
$contador=0;$contador<count($sexos);$contador++)
        {
            if(
$registros['sexo']==$sexos[$contador])
            {
                
$selected='selected="selected"';
            
    
?>
            <option value="<?php echo $registros['sexo'?><?php echo $selected ?>><?php echo $registros['sexo'?></option>             
    <?php
            $selected 
"";
            }
        } 
?>
Asi me muestra bien el seleccionado en el desplegable, lo malo es que no me muestra los demas, la idea es hacer una consulta de actualizacion por lo que tienen que aparecer todos los valores que habia en la base de datos y darte la opcion de poder cambiarlo.

La idea es que aparezca hembra seleccionado y macho debajo para poder seleccionar, pero francamente no sé como hacerlo, para que teniendo en cuenta el que este seleccionado me muestre ese seleccionado y los demas debajo.

En este caso, en un personaje hembra, me aparece seleccionado que es hembra, pero no me da mas opciones el desplegable
Es que la etiqueta <option> va fuera del IF, y tu la has metido dentro, mi codigo original el if no tiene llaves, y en tu adaptación le has metido llaves.

saludos!
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #5 (permalink)  
Antiguo 14/05/2010, 18:33
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 15 años, 1 mes
Puntos: 5
Respuesta: ¿Problema con un if?

Cita:
Iniciado por Synkronice Ver Mensaje
Es que la etiqueta <option> va fuera del IF, y tu la has metido dentro, mi codigo original el if no tiene llaves, y en tu adaptación le has metido llaves.

saludos!

Si bueno lo de las llaves lo he hecho inconscientemente se me hace dificil ver un if sin llaves.

Que yo sepa la estructura es asi
Código PHP:
if(condicion a tener en cuenta)
{
que hacer si se cumple la condicion
¿no?

De todos modos lo voy a probar sin llaves
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #6 (permalink)  
Antiguo 14/05/2010, 20:21
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 12 años
Puntos: 10
Respuesta: ¿Problema con un if?

Prueba este codigo a ver que te parece:

Es codigo suelto pero funciona, luego deberias implementarlo

Haz un archivo php




<?
//creamos un array litaral para simular la consulta a db
//ya que mysql_fetch_array() combierte la consulta en un array
//ninia es el valor que habria en db
$todos = array("ninia");
//$todos = array("hembra"); etc


//recorreriamos ese array ese array que en fin tendria un solo valor
//y almacenamos en una variable el valor hallado
$result=$todos[0];

?>


<script type="text/javascript" language="javascript">
function mostrar(){
for(i=0; i<=(document.getElementsByTagName('option').length ); i++){
//aqui introducimos php...! dentro de js (claro que se puede)
if((document.getElementsByTagName('option')[i].value) == "<?=$result?>"){
//alert(document.getElementsByTagName('option')[i].value);
document.getElementsByTagName('option')[i].selected="selected";
}
}
}
</script>


<!-- Lamamos a la funcion -->
<body onload="mostrar()">

<form name="form">
<select name="genero">
<option value="varon">Varon</option>
<option value="hembra">Hembra</option>
<option value="ninio">Ninio</option>
<option value="ninia">Ninia</option>
</select>
</form>

Etiquetas: Ninguno
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 16:03.