Foros del Web » Programando para Internet » PHP »

Problema con select multiple

Estas en el tema de Problema con select multiple en el foro de PHP en Foros del Web. Buenas tardes equipo, Me estoy volviendo loco con este select multiple que os dejo más adelante. Es el select de la categoría del producto (puede ...
  #1 (permalink)  
Antiguo 04/04/2011, 11:32
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Problema con select multiple

Buenas tardes equipo,

Me estoy volviendo loco con este select multiple que os dejo más adelante. Es el select de la categoría del producto (puede ser múltiple) y en el formulario de modificar el producto (deberían de aparecer seleccionadas las categorías a las que pertenece). Hasta ahora he conseguido que las seleccione pero me duplica los campos :S

Os agradeceré eternamente si me podeis echar una mano, llevo hoooooooooras dándole al código y no hay manera.

Os dejo el código del formulario:

<form action="trabajomodificado.php" method="post" enctype="multipart/form-data" name="form1">
<p class="texto"> <span class="Estilo2">
<?php
$id=$_POST["trabajo"];
$sql="SELECT *
FROM trabajos where id=$id";
$resultado=mysql_query($sql);
while($fila=mysql_fetch_array($resultado)){;?>
<input name="id" type="hidden" id="id" value="<?php echo $fila["id"]; ?>">
<strong> Categor&iacute;a:</strong><br>



<?php
$categorias = $fila["categoria"];
$separar = explode(',',$categorias);
$sql2="SELECT *
FROM categorias
ORDER BY id DESC";
$resultado2=mysql_query($sql2);
echo '<select name="cat[]" size="3" multiple>';
while($fila2=mysql_fetch_array($resultado2)){;
for($i=0;$i<count($separar);$i++){
if($separar[$i]==$fila2["id"]){
echo "<option value=\"".$fila2["id"]."\"selected>".$fila2["cas"]."</option>";
}else{
echo "<option value=\"".$fila2["id"]."\">".$fila2["cas"]."</option>";
}}};
echo '</select>';
?>

</span></p>
<p class="texto"><span class="Estilo2">T&iacute;tulo (castellano):<br>
<input name="tcas" type="text" id="titulo2" size="60" value="<?php echo $fila["titcas"]; ?>">
</span></p>
<p class="Estilo2">T&iacute;tulo (euskera):<br>
<input name="teus" type="text" id="teus" size="60" value="<?php echo $fila["titeus"]; ?>">
</p>
<p class="Estilo2">T&iacute;tulo (franc&eacute;s):<br>
<input name="tfra" type="text" id="teus3" size="60" value="<?php echo $fila["titfra"]; ?>">
</p>
<p class="Estilo2">Texto (castellano)<br>
<textarea name="texcas" cols="60" id="texcas"><?php echo $fila["texcas"]; ?></textarea>
</p>
<p class="Estilo2">Texto (euskera)<br>
<textarea name="texeus" cols="60" id="texeus"><?php echo $fila["texeus"]; ?></textarea>
</p>
<p class="Estilo2">Texto (franc&eacute;s)<br>
<textarea name="texfra" cols="60" id="textarea2"><?php echo $fila["texfra"]; ?></textarea>
</p>
<p class="Estilo2">Imagen:<br>
<img src="../images/mini.php?imagen=<?php echo $fila["imagen"]; }?>"> </p>
<p class="Estilo2">Cambiar por: (formato JPEG &oacute; GIF)<br>
<input type="file" name="file">
</p>
<p> <span class="Estilo2">
<input type="submit" name="Submit" value="Modificar trabajo">
</span> </p>
</form>


GRACIAS!!!!!!
  #2 (permalink)  
Antiguo 04/04/2011, 12:04
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Problema con select multiple

proba de hacelo con ajax, es muy sensillo, carga el primer select y abajo pone un div, hace la llamada por ajax con el id que se selecciono en el select.
y el resultado lo pones en el div
  #3 (permalink)  
Antiguo 04/04/2011, 14:36
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

Con ajax no creo que me salga, seguro que alguien viendo el código puede echarme un cable... el problema es que los datos de las categorías están guardados como id en forma de array en la tabla de productos (por ej, 21,26,27)
  #4 (permalink)  
Antiguo 04/04/2011, 14:40
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

¿Algún experto en arrays? :S
  #5 (permalink)  
Antiguo 04/04/2011, 14:50
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema con select multiple

Saludos

El inconveniente se encuentra en el ciclo for.

Prueba modificando esta sección del código:

Código PHP:
Ver original
  1. <?php
  2.             $categorias = $fila["categoria"];
  3.             $sql2 = "SELECT *
  4. FROM categorias WHERE categoria IN ($categorias)
  5. ORDER BY id DESC";
  6.             $resultado2 = mysql_query($sql2);
  7.             echo '<select name="cat[]" size="3" multiple>';
  8.             while ($fila2 = mysql_fetch_array($resultado2)) {
  9.                         echo "<option value=\"" . $fila2["id"] . "\"selected>" . $fila2["cas"] . "</option>";
  10.             };
  11.             echo '</select>';
  12.         ?>

Utiliza array_search para reemplazar esta validación que tenias

Código PHP:
Ver original
  1. if ($separar[$i] == $fila2["id"]) {
  2.                         echo "<option value=\"" . $fila2["id"] . "\"selected>" . $fila2["cas"] . "</option>";
  3.                     } else {
  4.                         echo "<option value=\"" . $fila2["id"] . "\">" . $fila2["cas"] . "</option>";
  5.                     }
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #6 (permalink)  
Antiguo 04/04/2011, 15:00
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

Que va Nano, lo he probado y no tira... el problema es que tengo una tabla con las categorias (con el id y el nombre de la categoria) y otra tabla de trabajos en la que hay un campo que se llama 'categoria' y mando los datos por array mediante select multiple (un producto puede pertenecer a varias categorías a la vez) y le mando el id de la categoría por lo que me queda dentro de ese campo un valor por ejemplo 24, 26, 27 (el id de cada categoria a la que pertenece el producto. Pero a la hora de hacer el select multiple para modificar las categorías del producto me las selecciona bien pero me las duplica (el problema como bien dices creo que es el for), es decir, debene aparecer todas las categorias en el select y seleccionadas solo a las que pertenece el producto pero que haya posibilidad de cambiarlas... me explico bien? Si consigues ayudarme te hago un altar y prometo adorarlo a diario.

GRACIAS!
  #7 (permalink)  
Antiguo 04/04/2011, 15:06
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema con select multiple

Saludos

Si notas también que es en el for hiciste el reemplazo del ciclo por array_search?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #8 (permalink)  
Antiguo 04/04/2011, 15:07
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

No controlo esa función Nano... ¿Cómo tendría que modificarla? :S Gracias maestro!!!!!!
  #9 (permalink)  
Antiguo 04/04/2011, 15:10
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema con select multiple

Saludos

Prueba de la siguiente manera reemplazando el ciclo for por las siguientes lineas

Código PHP:
Ver original
  1. if ( array_search($fila2["id"], $separar)) {
  2.                  
  3.                         echo "<option value=\"" . $fila2["id"] . "\"selected>" . $fila2["cas"] . "</option>";
  4.                    
  5. } else {
  6.                         echo "<option value=\"" . $fila2["id"] . "\">" . $fila2["cas"] . "</option>";
  7.  }
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #10 (permalink)  
Antiguo 04/04/2011, 15:21
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

Creo que casi lo tenemos, pero no me devuelve seleccionados todas las categorías a las que pertenece... siempre falta 1... qué puede pasar Nano?

Tengo este código puesto:

<?php
$categorias = $fila["categoria"];
$separar = explode(',',$categorias);
$sql2="SELECT *
FROM categorias
ORDER BY id DESC";
$resultado2=mysql_query($sql2);
echo '<select name="cat[]" size="3" multiple>';
while($fila2=mysql_fetch_array($resultado2)){;
if ( array_search($fila2["id"], $separar)) {

echo "<option value=\"" . $fila2["id"] . "\"selected>" . $fila2["cas"] . "</option>";

} else {
echo "<option value=\"" . $fila2["id"] . "\">" . $fila2["cas"] . "</option>";
}}
echo '</select>';
?>
  #11 (permalink)  
Antiguo 04/04/2011, 15:31
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema con select multiple

Saludos

Te la muestra en el option pero no lo coloca selected?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #12 (permalink)  
Antiguo 04/04/2011, 15:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

Eso es, y hay un producto que pertenece solo a 1 categoria y no aparece ninguna seleccionada, pero en los demás que pertenecen a varias categorías siempre falta 1 por seleccionar...
  #13 (permalink)  
Antiguo 04/04/2011, 15:46
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

Nano es el primer valor del array el que obvia y no lo selecciona... qué puede ser?
  #14 (permalink)  
Antiguo 04/04/2011, 15:49
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema con select multiple

Saludos

Te entiendo mmmm.... modifica la funcion array_search por in_array

Código PHP:
Ver original
  1. if (in_array($fila2["id"], $separar)) {
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #15 (permalink)  
Antiguo 04/04/2011, 15:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

Funciona!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!! Eres grande Nano, sí señor!!!!!!!!!! MUCHAS GRACIAS!!!!!!!! Ni te imaginas la de horas que llevaba pegándome con esto... GRACIAS!!!!!!!!!!
  #16 (permalink)  
Antiguo 04/04/2011, 15:55
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema con select multiple

Saludos

Con mucho gusto!.. Que bueno que te halla funcionado!

Hasta Pronto!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #17 (permalink)  
Antiguo 04/04/2011, 15:56
 
Fecha de Ingreso: marzo-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con select multiple

Gracias y hasta pronto!!!!!! ;)

Etiquetas: 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 15:04.