Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] funcion no funciona

Estas en el tema de funcion no funciona en el foro de PHP en Foros del Web. Hola, tengo una problema con una funcion en php que no funciona y no veo porque o donde esta el fallo... ( ya estoy "ofuscado" ...
  #1 (permalink)  
Antiguo 08/08/2013, 02:42
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años, 7 meses
Puntos: 2
Pregunta funcion no funciona

Hola, tengo una problema con una funcion en php que no funciona y no veo porque o donde esta el fallo... ( ya estoy "ofuscado" )

Creo que es la linea del select, pero no estoy seguro.. me podeis echar una mano??

Código:
function selecciona_nacionalidad()
	{
	echo "<SELECT NAME=nacion>";

	$query="SELECT * FROM paises";
	$resultado = mysql_query($query);

	while ($row=mysql_fetch_array($resultado))
		{
		echo"<OPTION NAME=nacion VALUE='.$row['ID'].'>'.$row['PAIS'].'</OPTION>'"; 
		}
	echo "</SELECT>";
	}
Creo que el fallo es esta linea, pero no estoy seguro...

Código:
echo"<OPTION NAME=nacion VALUE='.$row['ID'].'>'.$row['PAIS'].'</OPTION>'";
Ya se que es una tonteria, pero no lo veo....

Alguna sugerencia?
Muchisimas gracias!
  #2 (permalink)  
Antiguo 08/08/2013, 02:49
tfe
 
Fecha de Ingreso: enero-2008
Mensajes: 26
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: funcion no funciona

Hola:

Estas utilizando mysql_fetch_array
http://php.net/manual/en/function.mysql-fetch-array.php

Creo que en realidad quieres utilizad mysql_fetch_assoc, el cual te devuelve un hash, y entonces sí que podrías utilizar $row['ID']
  #3 (permalink)  
Antiguo 08/08/2013, 02:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: funcion no funciona

Sugerencias:

1- Todas las etiquetas y sus atributos se deben escribir en minúsculas, de modo que en lugar de <SELECT NAME=... debería ser <select name=...
2- Todos los atributos deben estar entre comillas, simples o dobles, como gustes, ejemplo: name="nacion"
3- Efectivamente el error está en la línea que mencionas, porque no estás concatenando correctamente, fíjate en las comillas dobles de los extremos y las simples con las que intentas concatenar. Para resolverlo lee esto: http://www.forosdelweb.com/f18/como-...s-bien-588701/

Agrego:

tfe, mysql_fetch_array() puede devolverte array asociativo, numérico o ambos, dependiendo de la configuración, generalmente es ambos; por lo que ese no es el problema.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 08/08/2013, 03:31
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: funcion no funciona

Vale, entonces siguiendo las recomendaciones de Triby, y después de haber leido la referencia que me dice, esto sería lo que funcionaria??


Código:
function selecciona_nacionalidad()
	{
	echo "<select name=nacion>";

	$query="select * from paises";
	$resultado = mysql_query($query);

	while ($row=mysql_fetch_array($resultado))
		{
		echo"<option name=nacion value=".$row['ID'].">".$row['PAIS']."</option>";
		}
	echo "</select>";
	}
Estaria bien construido ahora? y la linea bien concatenada??
Gracias.
  #5 (permalink)  
Antiguo 08/08/2013, 03:59
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: funcion no funciona

Ahora esta mejor, al menos ya tienes etiquetas y atributos en minúsculas y la línea "bien concatenada", el único problema que veo es que no estás usando comillas para delimitar los valores de los atributos, ejemplo: name=nacion debe ser name="nacion" y, en caso de que recibas un error de undefined index, solo pasa a minúsculas ['ID'] y ['PAIS']
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 08/08/2013, 04:14
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: funcion no funciona

Si, pero entonces la concatenación ya no estaría bien hecha, no?

si pasamos de esto:
Código:
echo"<option name=nacion value=".$row['ID'].">".$row['PAIS']."</option>";
a esto otro..
Código:
echo"<option name="nacion" value=".$row['id'].">".$row['pais']."</option>";
Entonces el name="nacion" no quedaria "fuera" de la linea? Es decir, creo que no estaria bien concatenada, no? No seria mejor que fuse nacion='nacion' ? Y por que pasar ahora el id y el pais en minusculas? Si el campo de la tabla está en Mayusculas?

Es para aclararme bien, porque no lo entiendo del todo...
Gracias

Gracias.
  #7 (permalink)  
Antiguo 08/08/2013, 04:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: funcion no funciona

Ups, los option no llevan name, solo value y me parece que no leíste el enlace sobre las comillas!

Código PHP:
Ver original
  1. // Debes escapar las comillas
  2. echo "<select name=\"nacion\">";
  3.  
  4. // O usar comillas sencillas para encerrar la cadena
  5. echo '<select name="nacion">';
  6.  
  7. // Para el option puedes hacer lo mismo
  8. echo '<option value="' . $row['id'] . '">' . $row['pais'] . '</option>';
  9.  
  10. // O encerrar los elementos de array entre llaves y la cadena entre comillas dobles:
  11. echo "<option value=\"{$row['id']}\">{$row['pais']}</option>";

Usa la forma que mejor te acomode, pero asegúrate de que, al final, tu HTML esté correcto; esto puedes verificarlo viendo el código fuente generado en el navegador y, opcionalmente, usando algún validador.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 08/08/2013, 04:34
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: funcion no funciona

Vaya follon...
Bueno, voy a ver si me entero bien, porque aunque me he leido el artículo, sigo sin enterarme porque una cosa u otra...
Lo pruebo y miro a ver que pasa.
gracias
  #9 (permalink)  
Antiguo 08/08/2013, 04:52
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: funcion no funciona

Parece que funciona bien, pero he tenido que pasar los nombres de los campos a Mayusculas, si no, no los recibía. Ni idea de porque, pero así ha sido.

Continuo peleandome con el código que me falta...
Gracias!
  #10 (permalink)  
Antiguo 08/08/2013, 04:55
 
Fecha de Ingreso: agosto-2013
Ubicación: México
Mensajes: 7
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: funcion no funciona

Es fácil la solución solo de agregar las comillas correspondientes con sus correspondientes slash invertidos o en este caso iniciar echo con comillas simples en este caso seria así prueba esto se que funcionara...

Código PHP:
Ver original
  1. function selecciona_nacionalidad()
  2.     {
  3.     echo '<select name="nacion">';
  4.  
  5.     $query="select * from paises";
  6.     $resultado = mysql_query($query);
  7.  
  8.     while ($row=mysql_fetch_array($resultado))
  9.         {
  10.         echo'<option value="'.$row['ID'].'">'.$row['PAIS'].'</option>';
  11.         }
  12.     echo "</select>";
  13.     }

Suerte...

Etiquetas: funcion, mysql, select, sql
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 13:03.