Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/11/2011, 18:08
Avatar de Antonio_España
Antonio_España
 
Fecha de Ingreso: mayo-2007
Mensajes: 58
Antigüedad: 17 años, 5 meses
Puntos: 4
De acuerdo Respuesta: Hacer busqueda en base a un campo tipo array creado en HTML

Entiendo lo que te ocurre.
Ahora relatare el planteamiento de tu codigo, porque el problema es el diseño.

Cuando pones una eleccion (puse text=1 y seleccione Nexen), nos sale:
array(2) { ["valor"]=> string(1) "1" ["brand"]=> array(1) { [0]=> string(5) "Nexen" } }

y ordenandolo, lo vemos mas claro:
Código:
array(2) 
{
   ["valor"]=> string(1) "1" 
   ["brand"]=> array(1) 
   { 
      [0]=> string(5) "Nexen" 
   } 
}
Como ves, no se esta creando un apareamiento ideal.
Tienes el valor almacenado en un sitio, y el nombre, almacenado en otro.
El nombre, Nexen, no conserva el valor 1, sino que lo hace $_GET en su indice[0].

En otras palabras, tu buscas guardar parejas clave/valor, clave "Nexen", valor "1":
Nexen = 1

cosa que no esta pasando aqui. Por eso cuando seleccionas varias checkbox, (las marco todas con valor 1), obtenemos esto:
Código:
array(2) 
{ 
   ["valor"]=> string(1) "1" 
   ["brand"]=> array(4) 
   { 
      [0]=> string(5) "Nexen" 
      [1]=> string(5) "Kumho" 
      [2]=> string(6) "Falken" 
      [3]=> string(6) "Aurora" 
   } 
}
En otras palabras, valor contiene "1", y brand contiene los nombres.
No tienes la coleccion clave-valor que necesitas para relacionar el valor con el nombre y poder realizar las busquedas en la coleccion.

La solucion mas sencilla es asignar un textbox al lado de cada nombre.

Pero dado que quieres relacionar 1 textbox con todos los nombres, el planteamiento tiene que cambiar.

Te ofrezco una orientacion:
Código:
<form method="get" action="">
<input type="text" name='valor'>
<label><input type="checkbox" name='brand[]' value="Nexen">Nexen</label>
<label><input type="checkbox" name='brand[]' value="Kumho">Kumho</label>
<label><input type="checkbox" name='brand[]' value="Falken">Falken</label>
<label><input type="checkbox" name='brand[]' value="Aurora">Aurora</label>
<input type="submit" value="enviar" />
</form> 
<?
	if ($_GET)
	{
		var_dump($_GET);
		$valor = $_GET['valor'];
		$nombres = $_GET['brand'];

		// Esta variable contendra nuestra coleccion
		// $clave_nombreValor[];

		// Asigno el valor a cada nombre
		foreach ($nombres as $contenido)
		   $clave_nombreValor[$contenido]=$valor;
		   
		echo "<p></p><p>Ahora tenemos:</p>";
		var_dump($clave_nombreValor);
	}
?>
y esto nos da:
Cita:
array(2) { ["valor"]=> string(2) "12" ["brand"]=> array(4) { [0]=> string(5) "Nexen" [1]=> string(5) "Kumho" [2]=> string(6) "Falken" [3]=> string(6) "Aurora" } }


Ahora tenemos:
array(4) { ["Nexen"]=> string(2) "12" ["Kumho"]=> string(2) "12" ["Falken"]=> string(2) "12" ["Aurora"]=> string(2) "12" }
Nos centramos en "Ahora tenemos", para comprobar que efectivamente ahora tenemos nuestra coleccion clave-valor:
Código:
array(4) 
{ 
   ["Nexen"]=> string(2) "12" 
   ["Kumho"]=> string(2) "12" 
   ["Falken"]=> string(2) "12" 
   ["Aurora"]=> string(2) "12" 
}
Espero que te haya servido este ratito tan entretenido que eche para ti.

Un saludo y mucha suerte :)