Ver Mensaje Individual
  #22 (permalink)  
Antiguo 27/05/2008, 14:24
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Respuesta: Enviar variable por <select>

Cita:
Iniciado por Wakkos Ver Mensaje
mmmm
Array ( [527] => 527 )
no deberian ser dos variables? xd
No entiendo tu pregunta.

Tú estás definiendo dos arrays:
$_POST['categoria']
$_POST['my_stuff']

El error que te sale es porque no reconoce $my_stuff directamente en el each(). Utiliza each($_POST['my_stuff']).

Volvamos a los arrays...
$_POST['categoria'], viene en el <select>. la variable se llama categoria[], así que los índices serán numéricos y se irán generando consecutivamente a partir del cero. Así, tendrás que al otro lado llega:
Código:
$_POST['categoria']
	= Array(
		[0]=>cat elegida en el 1er select
		[1]=>cat elegida en el 2do select
		[2]=>cat elegida en el 3er select
	)
$_POST['my_stuff'], viene definida en chekboxes. La variable la defines como my_stuff[".$row[0]."]' value=".$row[0]. Así que el array tendrá como índice al id del registro ($row[0]) y como valor también tendrá al id.

Por eso obtienes
Código:
$_POST['my_stuff']
	= Array ( 
		[527] => 527
		[532] => 532
	)
Lo que te decía es que no tienes manera de relacionar ambos arrays. La única manera sería por el número de id. Pero el primer array no lo guarda.

Por eso te dije que hagas que el select genere un array [id]=>categoriaSeleccionada

Y my_stuff sí puede tener índices automáticos, total lo que interesa es la lista de ids que vas a a editar.
[]=>id

Te repito lo que te puse:
Código PHP:
<select name="categorias[<?php echo $row[0]; ?>]">
Código PHP:
echo "Seleccione para eliminar, editar o agregar
    <input    type=\"checkbox\"
        name=\"my_stuff[]\"
        value="
.$row[0].">"
Y para leer estos registros, haces lo siguiente:
- Lees el primer id de $_POST['my_stuff'].
- Buscas el índice que corresponda a ese id en $_POST['categoria'].
- Obtienes el valor seleccionado y lo escribes en la BD.

Código PHP:
case "editar":

foreach(
$_POST['my_stuff'] as $id){
    
$query_numPosts "UPDATE pre_registros SET categoria = '".$_POST['categoria'][$id]."' WHERE ID ='".$id."'";
    
mysql_query($query_numPosts$link);
    echo 
"Categoría actualizada en mensaje # '".$id."' ('".$_POST['categoria'][$id]."') <br>";
}
                    }
break; 
Claro... faltaría hacer alguna validación. Pero, en general, funciona así.

Saludos,