Foros del Web » Programando para Internet » PHP »

Cual Es El Problema De Este Codigo

Estas en el tema de Cual Es El Problema De Este Codigo en el foro de PHP en Foros del Web. $listanombre = mysql_query("SELECT * from PERSONAL WHERE NIVEL <9 ORDER BY NOMBRE"); $row = mysql_fetch_array($listanombre); while ($row) { $nomlista = $row["NOMBRE"]; if ($nombres == $nomlista) ...
  #1 (permalink)  
Antiguo 16/03/2004, 01:56
 
Fecha de Ingreso: diciembre-2002
Mensajes: 130
Antigüedad: 15 años
Puntos: 0
Cual Es El Problema De Este Codigo

$listanombre = mysql_query("SELECT * from PERSONAL WHERE NIVEL <9 ORDER BY NOMBRE");

$row = mysql_fetch_array($listanombre);

while ($row) {
$nomlista = $row["NOMBRE"];
if ($nombres == $nomlista) {
print "<option value=\"$nomlista\" SELECTED>" . $row["NOMBRE"] . "</option>";
}
else {
print "<option value=\"$nomlista\">" . $row["NOMBRE"] . "</option>";
}
$row = mysql_fetch_array($listanombre);
}
  #2 (permalink)  
Antiguo 16/03/2004, 01:58
 
Fecha de Ingreso: diciembre-2002
Mensajes: 130
Antigüedad: 15 años
Puntos: 0
Esque no me funciona es un despegable en un formulario de autentificacion, no se cual puede ser el problema.
He probado con varios codigos, pero creo que el problema es que no me entra en el bucle while, y no se porque puede ser.
  #3 (permalink)  
Antiguo 16/03/2004, 02:32
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
bueno tendrias de poner el while asi

while($row = mysql_fetch_array($listanombre){
if ($row["NOMBRE"] == // al nombre comparado no se con el login???) {
print "<option value=\"$nomlista\" SELECTED>" . $row["NOMBRE"] . "</option>";
}
else {
print "<option value=\"$nomlista\">" . $row["NOMBRE"] . "</option>";
}


}

la comparacion la debes hacer con otro dato, el login, su nombre el nivel etccc, lo que no pudes comparar una cosa con siguo misma porque siempre te dara true

saludos
  #4 (permalink)  
Antiguo 16/03/2004, 02:48
 
Fecha de Ingreso: diciembre-2002
Mensajes: 130
Antigüedad: 15 años
Puntos: 0
SIGUE SIN FUNCIONAR

<?
$listanombre = mysql_query("SELECT * from PERSONAL WHERE NIVEL <9 ORDER BY NOMBRE");
while($row = mysql_fetch_array($listanombre)){
if ($row["NOMBRE"] == $row["NIVEL"]){
print "<option value=\"$nomlista\" SELECTED>" . $row["NOMBRE"] . "</option>";
}
else {
print "<option value=\"$nomlista\">" . $row["NOMBRE"] . "</option>";
}
}
?>
Sigue sin funcionar, el desplegable me aparece en blanco, sin el contenido que hay en la base de datos.

No se cual es el motivo necesito ayuda con urgencia.
  #5 (permalink)  
Antiguo 16/03/2004, 02:56
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
veo que pones maysculas y minusculas, la pregunta es?
Los campos de la BDD ,estan escritos tal cual los sacas,

y el nombre puede ser igual al nivel, osea que si me llamo juan tengo un nivel de juan?? me parece que no...

y por tercero pon eso

mysql_query("SELECT * from PERSONAL WHERE NIVEL <9 ORDER BY NOMBRE") or die (mysql_error());

te dara un error si existe

Un saludo
  #6 (permalink)  
Antiguo 16/03/2004, 03:19
 
Fecha de Ingreso: diciembre-2002
Mensajes: 130
Antigüedad: 15 años
Puntos: 0
SIGUE SIN SALIR EL CONTENIDO DENTRO DEL DESPEGABLE

La base de datos es auth, la tabla sobre la que trabajo es PERSONAL y sus campos son los siguientes:

CODIGO
NOMBRE
CLAVE
NIVEL
fecha_ultimo_apunte
COSTE_HORA
CUENTA
DEPARTAMENTO
siglasTC2
JORNADA

El codigo que acabo de utilizar es el siguiente cual crees que puede ser el fallo, yo lo unico que quiero que haga esq que me aprezca en el formulario, en el apartado de nombre un despegable con todos los nombres que yo tengo en la base de datos y poder seleccionar el que quiera:

$listanombre = mysql_query("SELECT * from PERSONAL WHERE NIVEL <9 ORDER BY NOMBRE") or die (mysql_error());
while($row = mysql_fetch_array($listanombre)){
$nombre = $row["NOMBRE"];
$nivel = $row["NIVEL"];
if ($row["NOMBRE"] == $row["NIVEL"]){
print "<option value=\"$nombre\" SELECTED>" . $row["NOMBRE"] . "</option>";
}
else {
print "<option value=\"$nombre\">" . $row["NOMBRE"] . "</option>";
}
}
  #7 (permalink)  
Antiguo 16/03/2004, 03:29
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
Te da error??

si no te lo da escribe

echo mysql_num_rows($listanombre) ; antes del wile

eso te dara la contidad de lineas que ha sacado de la base de datos

Pude ser que la sentencia no te arroge resultados, porque no los hay, osea que no hay registros que el nivel sea menor de 9


Y luego te decia, $row["NOMBRE"] == $row["NIVEL"]){

el nombre puede ser en algun momento igual que el nivel??

si me llamo juan, mi nivel pude ser juan?? o sera un numero??

salduos
  #8 (permalink)  
Antiguo 16/03/2004, 03:31
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
otra cosa, el campo nivel es numerico INT, si es asi puede ir sin comillas pero si no debe estar entre comillas

NIVEL < '9'
  #9 (permalink)  
Antiguo 16/03/2004, 05:09
 
Fecha de Ingreso: diciembre-2002
Mensajes: 130
Antigüedad: 15 años
Puntos: 0
Muchas gracias Jordi, que el problema no era del codigo ese, el problema era debido que en la conexion de la base de datos me faltaba la s en una variable.

Muchas gracias por tus consejos.
Saludos.

Ahora tengo otra duda a lo mejor me la puedes resolver quien sabe:

Como puedo limitar a un numero de registros en una lista desplegable, esq en el campo de formulario nombre, tengo un desplegable que tira del campo nombre de la bd pero el problema esq hay mas 100 registros y cuando pincho en la flecha se me abre el desplegable que me ocupa toda la página, y me gustaria limitarlo a 10 regitros pq queda super feo.

Gracias Saludos
  #10 (permalink)  
Antiguo 16/03/2004, 05:54
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
Usas la sentenccia SELECT * from PERSONAL WHERE NIVEL <9 ORDER BY NOMBRE LIMIT 10;

Y si lo que quiers es paginar, pues aqui en ele foro hay varios sitemas,
Saludos
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 07:20.