Foros del Web » Programando para Internet » PHP »

Problema Con Consulta php- mysql

Estas en el tema de Problema Con Consulta php- mysql en el foro de PHP en Foros del Web. Hola buenos dias a todos quiero consultarles, estoy creando una especie de intranet no tengo mucha experiencia y el tema es que debo ingresar las ...
  #1 (permalink)  
Antiguo 01/02/2012, 10:47
Avatar de erick_reyesg  
Fecha de Ingreso: enero-2012
Ubicación: Guatemala
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 2
Pregunta Problema Con Consulta php- mysql

Hola buenos dias a todos quiero consultarles, estoy creando una especie de intranet no tengo mucha experiencia y el tema es que debo ingresar las formaciones que han tenido los usuarios el problema es que el usuario pudo haber recibido hasta 5 formaciones por ejemplo

usuario fecha formador tema tiempo
t633620 01/01 juan 1 30
t633620 01/02 pedro 2 40
t633620 01/03 luis 3 50
t633620 01/04 juan 4 60
t633620 01/05 luis 5 70

pero al realizar la consulta no me da los registros unicamente me muestra el primero que encuentra por ejemplo me muestra t633620 01/01 jua 1 30
este es mi codigo

<?php
include ("config.php");
mysql_connect($server, $db_user, $db_pass) or die (mysql_error());
$result = mysql_db_query($database, "select * from formaciones WHERE usuario = '$usuario'") or die (mysql_error());

while ($qry = mysql_fetch_array($result)) {

echo"<tr>";
echo"<th scope='row'>$qry[tema]</th>";
echo"<td>$qry[fecha] </td>";
echo"<td>$qry[formador]</td>";
echo"<td>$qry[tema]</td>";
echo"<td>$qry[tiempo]</td>";
echo"</tr>";

al poner otro codigo similar al de arriba asumi que me daria el segundo registro pero muestra siempre el primero

echo"<tr>";
echo"<th scope='row'>$qry[tema]</th>";
echo"<td>$qry[fecha] </td>";
echo"<td>$qry[formador]</td>";
echo"<td>$qry[tema]</td>";
echo"<td>$qry[tiempo]</td>";
echo"</tr>";

espero haberme explicado Saludos
  #2 (permalink)  
Antiguo 01/02/2012, 11:14
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 126
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Problema Con Consulta php- mysql

Tu error es muy simple y claro... Luego de una consulta, si traes mas de 1 registro, ya debes hacerlo en un array y mostrarlo con un foreach. El codigo que vos usas solo sirve para mostrar un registro.
Vos estas trayendo registros que cumplan con la condicion que vos queres. Luego, que pasa si hay mas de 1 registro con esa condicion? traera todos los registros que cumplan dicha condicion. Entonces:

El codigo MySQL te quedaria:
Código SQL:
Ver original
  1. $array = array();
  2. $query = "SELECT ... FROM ... WHERE...";
  3. $resultado = mysql_query ($query, $dbConn);
  4. while ( $row = mysql_fetch_assoc ($resultado)) {
  5.     array_push( $array,$row );
  6. }

Y la forma de mostrarlo en php seria:
Código PHP:
Ver original
  1. <? foreach ($array as $mostrar) { ?>       
  2. <div><? echo $mostrar['Campo_a_mostrar_de_tu_db']; ?></div>
  3. <? } ?>

Nota: Reemplaza el codigo que te pase por los que tengas en tu db. Espero que te funcione, Saludos.. :)
  #3 (permalink)  
Antiguo 01/02/2012, 12:00
Avatar de erick_reyesg  
Fecha de Ingreso: enero-2012
Ubicación: Guatemala
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Problema Con Consulta php- mysql

Hola maiximiliano disculpa mi ignoracia he probado el codigo y me da el siguiente error

Warning: mysql_query() expects parameter 2 to be resource, null given in C:\AppServ\www\intranet\form.php on line 298

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\intranet\form.php on line 299

te dejo como he puesto el codgio

<?php
include ("config.php");
mysql_connect($server, $db_user, $db_pass) or die (mysql_error());

$array = array();
$query = "select * from formaciones WHERE usuario = '$usuario'";
$resultado = mysql_query ($query, $dbConn);
while ( $row = mysql_fetch_assoc ($resultado)) {
array_push( $array,$row );
}

el error me lo da en la linea

298 $resultado = mysql_query ($query, $dbConn);
299 while ( $row = mysql_fetch_assoc ($resultado)) {


tambien prove cambiando el $dbConn por $database pense q ese podria ser el error ya que ahi selecciona la base de datos

Gracias desde ya
__________________
No hay Mayor señal de Ignoracia que creer imposible lo Inexplicable
  #4 (permalink)  
Antiguo 01/02/2012, 12:29
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 126
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Problema Con Consulta php- mysql

Pero claro, no estas conectando con la db. $dbConn es un puntero de conexion que yo te pase, en tu script no apunta a ningun lado la variable $dbConn. Debes cambiar esto:

Código PHP:
Ver original
  1. $query = "select * from formaciones WHERE usuario = '$usuario'";
  2. $resultado = mysql_query ($query, $dbConn);

por

Código PHP:
Ver original
  1. $resultado = mysql_query("select * from formaciones WHERE usuario = '$usuario'";) or die (mysql_error());


Otra opcion que tenes es que puedes usar el puntero de conexion que yo te di para tener las cosas organizadas. Siquieres hacer esto, al comienzo de la pagina, debes agregar otro include con la ruta conexion.php.
Luego debes eliminar esta linea mysql_connect($server, $db_user, $db_pass) or die (mysql_error());

Agrega esto luego de los includes:
Código PHP:
Ver original
  1. // obtengo puntero de conexion con la db
  2. $dbConn = conectar();

Este será el archivo conexion.php
Código PHP:
Ver original
  1. <?php
  2.      
  3. function conectar () {
  4.      
  5. $db_con = mysql_pconnect (DB_SERVER,DB_USER,DB_PASS);
  6. if (!$db_con) return false;
  7. if (!mysql_select_db (DB_NAME, $db_con)) return false;
  8. return $db_con;
  9.      }
  10.      
  11. ?>

Luego me cuentas que tal te fue... ;)
  #5 (permalink)  
Antiguo 01/02/2012, 14:59
Avatar de erick_reyesg  
Fecha de Ingreso: enero-2012
Ubicación: Guatemala
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Problema Con Consulta php- mysql

He probado el codigo men y me funciona muy bien como te decia agradezco tu tiempo y gracias nuevamente eres un master ^_^
__________________
No hay Mayor señal de Ignoracia que creer imposible lo Inexplicable
  #6 (permalink)  
Antiguo 01/02/2012, 15:43
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema Con Consulta php- mysql

Cita:
Iniciado por maximilianojcelis Ver Mensaje
Tu error es muy simple y claro... Luego de una consulta, si traes mas de 1 registro, ya debes hacerlo en un array y mostrarlo con un foreach. El codigo que vos usas solo sirve para mostrar un registro.
Vos estas trayendo registros que cumplan con la condicion que vos queres. Luego, que pasa si hay mas de 1 registro con esa condicion? traera todos los registros que cumplan dicha condicion. Entonces:

El codigo MySQL te quedaria:
Código SQL:
Ver original
  1. $array = array();
  2. $query = "SELECT ... FROM ... WHERE...";
  3. $resultado = mysql_query ($query, $dbConn);
  4. while ( $row = mysql_fetch_assoc ($resultado)) {
  5.     array_push( $array,$row );
  6. }

Y la forma de mostrarlo en php seria:
Código PHP:
Ver original
  1. <? foreach ($array as $mostrar) { ?>       
  2. <div><? echo $mostrar['Campo_a_mostrar_de_tu_db']; ?></div>
  3. <? } ?>

Nota: Reemplaza el codigo que te pase por los que tengas en tu db. Espero que te funcione, Saludos.. :)
Pero que leo aqui O.O, para que vas a pasar de un array al otro si ya esta dentro de un loop (while) es redundante...

Ahora no se para que usas mysql_pconnect, eso solo creará problemas, una conexión persistente solo se utiliza en ocasiones muy especificas, ya que si llegas al limite no podrás crear conexiones nuevas

y por ultimo mysql_db_query esta desfasado y su uso no es recomendable, para eso existe mysql_query, aparte, haces mal uso de los array...
Código PHP:
Ver original
  1. //mal
  2. echo $qry[formador];
  3.  
  4. //bien
  5. echo $qry['formador'];

Cita:
al poner otro codigo similar al de arriba asumi que me daria el segundo registro pero muestra siempre el primero

echo"<tr>";
echo"<th scope='row'>$qry[tema]</th>";
echo"<td>$qry[fecha] </td>";
echo"<td>$qry[formador]</td>";
echo"<td>$qry[tema]</td>";
echo"<td>$qry[tiempo]</td>";
echo"</tr>";

espero haberme explicado Saludos
Para mostrar todos los items de un array si o si es necesario desplegar dentro de un loop, (while, for, foreach, etc)
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: mysql, registro, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:15.