Foros del Web » Programando para Internet » PHP »

error variable indefinida y mysql_fetch_array() expects parameter 1 to be resource, n

Estas en el tema de error variable indefinida y mysql_fetch_array() expects parameter 1 to be resource, n en el foro de PHP en Foros del Web. Hola buenas tardes, Tengo el siguiente problema, lo estuve viendo con un compañero de curso y no logramos solucionarlo, les dejare el codigo de todas ...
  #1 (permalink)  
Antiguo 03/01/2015, 08:59
 
Fecha de Ingreso: octubre-2014
Mensajes: 70
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta error variable indefinida y mysql_fetch_array() expects parameter 1 to be resource, n

Hola buenas tardes, Tengo el siguiente problema, lo estuve viendo con un compañero de curso y no logramos solucionarlo, les dejare el codigo de todas formas, les comento de que trata, tengo un buscador con un editar, el buscador funciona, tengo tablas relacionadas, de tipo genero, resulta que el buscador funciona, pero apenas abro la pagina me aparecen los siguientes 2 problemas,
"( ! ) Notice: Undefined variable: consulta in C:\wamp\www\pag2\pagina\buscaproducto2.php on line 180"
Este la tengo definida mas arriba en la consulta

y este

"( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\wamp\www\pag2\pagina\buscaproducto2.php on line 180"

El codigo es el siguiente

Código:
 <?php
 
  if (
  (isset($_POST['nombre'])) || 
  	(isset($_POST['link']))  || 
	(isset($_POST['sinopsis']))|| 
	(isset($_POST['fecha']))|| 
	(isset($_POST['generos']))|| 
	(isset($_POST['direccion']))) {
$consulta=mysql_query(

"SELECT 
video.idvideo,
video.nombre, 
video.link,
video.sinopsis,
video.fecha,
video.direccion,
gen_video.idvideo,
gen_video.idgenero
FROM 
video, 
gen_video 
WHERE 
  video.nombre like '%".$_POST['nombre']."%' 
and video.link like '%".$_POST['link']."%'
and video.sinopsis like '%".$_POST['sinopsis']."%'
and video.fecha like '%".$_POST['fecha']."%'
and video.direccion like '%".$_POST['direccion']."%' 

and gen_video.idgenero like '%".$_POST['generos']."%'
and gen_video.idvideo = video.idvideo 


" ) or die (mysql_error());}
 $i = 0; 
 
  while($row = mysql_fetch_array($consulta)){
 

  
  echo "
  <tr  OnMouseOver='Resaltar_On(this);' OnMouseOut='Resaltar_Off(this);' OnClick=datos('$row[0]','$row[1]','$row[2]','$row[3]','$row[4]','$row[5]','$row[6]') >
   <td><input type='text' name='idvideo[$i]' readonly = 'readonly' value ='".$row[0]. "'/></td>
    <td><input type='text' name='nombre[$i]' value ='".$row[1]."'></td>
    <td><input type='text' value= ".$row[2]."'width={'100px' height='100px'/></td>
	<td><input type='text' name='link[$i]' value ='".$row[3]."'></td>
    
	<td><input type='text' name='sinopsis[$i]'  onKeyPress='return justNumbers(event)' value ='".$row[5]."'></td>
    <td><input type='textarea' name='direccion[$i]' cols=5 rows=5 value ='".$row[4]."'></td>
	
	<td><input type='radio' name='seleccion[$i]' value='modifica".$row[0]."'></td>
	<td><input type='radio' name='seleccion[$i]' value='eliminar".$row[0]."'></td>
	<td><input type='submit' name='Enviar' id='Enviar' value='Enviar' /></td>
  </tr>";$i++;}?>
</table>
</form>
Desde ya muchas gracias a los que me hallan leido.

Saludos
  #2 (permalink)  
Antiguo 03/01/2015, 09:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: error variable indefinida y mysql_fetch_array() expects parameter 1 to be

Lo más probable, para mí, es que la consulta no te esté devolviendo registros, aunque no esté dando error. Por lo que luego mysql_fetch_array() no puede recuperar nada en tanto apunta a nulos.
Ese es un error habitual. Debes verificar que la consulta efectivamente haya devuelto registros antes de intentar recorrerlos.
Por otro lado, a nivel de la consulta veo un pésimo uso de las condiciones del WHERE, un abuso de LIKE, que es una de las peores cláusulas que existen.
No se debe usar LIKE para hacer comparaciones contra identificadores numéricos. Tiende a generar datos basura, proque LIKE aplica a cadenas de texto y no a magnitudes escalares.
Un dato numérico es igual, mayor, menor o está dentro de un rango, pero nunca es "parecido a...".
¿Se entiende la distinción.
Eso mismo pasa con las fechas, no existen fechas "parecidas a...", o son iguales, son anteriores, posteriores o están entre dos fechas (rango).
Poner LIKE es una mala costumbre de los que recién se inician. Ademas es una clausula de muy mala performance, donde lo recomendable a nivel de BBDD y SQL, es no usarla, o no usarla con comodines ("%") a ambos lados porque eso hace que se lea toda la tabla, hasta el último registro... Imaginate que estás haciendo esa consulta en una tabla de diecisiete millones de registros. ¿Tendría sentido?

Empieza por verificar que tengas datos que cumplan las condiciones, y por sobre todo verifica que ninguna de las variables lleguen vacías. Y no digo que existan, o estén definidas, sino que no contengan caracteres vacíos, que no es lo mismo que NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/01/2015, 10:00
 
Fecha de Ingreso: octubre-2014
Mensajes: 70
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: error variable indefinida y mysql_fetch_array() expects parameter 1 to be

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo más probable, para mí, es que la consulta no te esté devolviendo registros, aunque no esté dando error. Por lo que luego mysql_fetch_array() no puede recuperar nada en tanto apunta a nulos.
Ese es un error habitual. Debes verificar que la consulta efectivamente haya devuelto registros antes de intentar recorrerlos.
Por otro lado, a nivel de la consulta veo un pésimo uso de las condiciones del WHERE, un abuso de LIKE, que es una de las peores cláusulas que existen.
No se debe usar LIKE para hacer comparaciones contra identificadores numéricos. Tiende a generar datos basura, proque LIKE aplica a cadenas de texto y no a magnitudes escalares.
Un dato numérico es igual, mayor, menor o está dentro de un rango, pero nunca es "parecido a...".
¿Se entiende la distinción.
Eso mismo pasa con las fechas, no existen fechas "parecidas a...", o son iguales, son anteriores, posteriores o están entre dos fechas (rango).
Poner LIKE es una mala costumbre de los que recién se inician. Ademas es una clausula de muy mala performance, donde lo recomendable a nivel de BBDD y SQL, es no usarla, o no usarla con comodines ("%") a ambos lados porque eso hace que se lea toda la tabla, hasta el último registro... Imaginate que estás haciendo esa consulta en una tabla de diecisiete millones de registros. ¿Tendría sentido?

Empieza por verificar que tengas datos que cumplan las condiciones, y por sobre todo verifica que ninguna de las variables lleguen vacías. Y no digo que existan, o estén definidas, sino que no contengan caracteres vacíos, que no es lo mismo que NULL.
Hola, muchas gracias por tu respuesta, y como podría hacerlo de una forma eficiente? conoces de algun tutorial que pueda usar como referencia para poder lograr hacer el buscador con el editar ?

Saludos
  #4 (permalink)  
Antiguo 03/01/2015, 10:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: error variable indefinida y mysql_fetch_array() expects parameter 1 to be

La optimización de consultas SQL es pura práctica. Los tutoriales no ayudan mucho a menos que tengas buenos conocimientos de SQL. Hay algunas páginas dedicadas a temas de performance, pero siempre requieren algo de practica y conocimiento.

Para el caso, en este sitio hay subforos específicos de BBDD y SQL. Las dudas que te surjan en ese tema, te recomiendo postearlas allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/01/2015, 10:30
 
Fecha de Ingreso: octubre-2014
Mensajes: 70
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: error variable indefinida y mysql_fetch_array() expects parameter 1 to be

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La optimización de consultas SQL es pura práctica. Los tutoriales no ayudan mucho a menos que tengas buenos conocimientos de SQL. Hay algunas páginas dedicadas a temas de performance, pero siempre requieren algo de practica y conocimiento.

Para el caso, en este sitio hay subforos específicos de BBDD y SQL. Las dudas que te surjan en ese tema, te recomiendo postearlas allí.
Vale gracias por tu tiempo

Etiquetas: expects, fecha, mysql, parameter, resource, select, sql, tabla, variable
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 16:34.