Tema: DUda!.
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 01/02/2003, 20:43
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Para el caso de cadenas (strings) .. y usando arrays como es tu caso .. Emplea mejor un blucle foreach para recorrer dicho array .. El cual no hace mas q extrar en cada pasada del bucle un elemento (correlativo) del array hasta su último elemento ..

Código PHP:
$sexo=$row["sexo"];
$sexo_nombres=Array("Masculino","Femenino");
echo 
"<select name=\"sexo\">\n";
foreach (
$sexo_nombres as $sex){
   if (
$sexo==$sex){
     echo 
"<option value=\"".$sexo."\" selected>".$sexo."\n";
   }else{
     echo 
"<option value=\"".$sexo."\">".$sexo."\n";
   }
}
echo 
"</select>\n";

En tu caso .. no te funcinoba porque estabas comparando en el IF .. una cadena ($sexo .. ) con el $contador q es numero .. Deberias usar el elemento q corresponda a ese indice en el array ..

Código PHP:
$sexo=$row["sexo"];
$sexo_nombres=Array(1=>"Masculino","Femenino");
echo 
"<select name=\"sexo\">\n";
for (
$contador=1$contador <=2$contador++){
   if (
$sexo==$sexo_nombres[$contador]){  // <--------
     
echo "<option value=\"".$contador."\" selected>".$sexo_nombres[$contador]."\n";
   }else{
     echo 
"<option value=\"".$contador."\">".$sexo_nombres[$contador]."\n";
   }
}
echo 
"</select>\n";

Si necesitas que tu "value" de tus options sea "1" y "2" .. usa el 2º código (el tuyo con el detalle q te comenté ..). Si necesitas el "value" de tus options como "Masculino" y "Femenino" .. usa el primer código ...

Tambien asegurate que siempreee tus cadenas (strings) a comparar sean iguales .. Si una es "Femenino" y la otra es "femenino" (la del array por ejemplo y la otra la de tu campo de tu BD) siempre te dará el caso "else" del IF ..

Una solución a esto (si es q no sabes como puede llegar tu cadena de tu BD) es convertirlo a minusculas por ejemplo amabas cadenas (el array lo tienes en minusculas por defecto .. y tu $row['sexo'] .. lo pasas a minusculas via strtolower() ...)

Un saludo,