Foros del Web » Programando para Internet » PHP »

Problema mysql_fetch_array

Estas en el tema de Problema mysql_fetch_array en el foro de PHP en Foros del Web. Hola a todos! quería pedirles un favor, es q tengo un problemita el cual no se como resolverlo, pues veo que tengo el script bn, ...
  #1 (permalink)  
Antiguo 08/02/2011, 11:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 6 meses
Puntos: 1
Problema mysql_fetch_array

Hola a todos!

quería pedirles un favor, es q tengo un problemita el cual no se como resolverlo, pues veo que tengo el script bn, pero me sale el siguiente error:

mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Pagina\ff11sjdd\Admin\x1nuser2\def ault.php on line 211

Y no entiendo porque si el script esta bn y lo revise como muchas veces, el script es:
Código:

if (isset($_REQUEST['nhardware'])) {

    $nombre_hardware = $_POST['nombre_hardware'];
    $firmware = $_POST['firmware'];

    $conexion = new Conexion();
    $conexion->conectar();
    //Se consulta si ya existe el firmware
    $resultado = $conexion->consulta("SELECT count( * ) FROM hardware WHERE nombre_hardware = '" . $nombre_hardware . "'");
    while ($res = mysql_fetch_array($resultado)) {
        $x = $res['count( * )'];
    }


    //se consulta el id para el firmware nuevo
    $resultado = $conexion->consulta("SELECT idhardware from hardware");
    $i = 0;
    while ($res = mysql_fetch_array($resultado)) {
        $id[$i] = $res['idhardware'];
        $i++;
    }
    sort($id);
    $idf = ($id[$i - 1]) + 1; // Se establece el id del firmware nuevo
    //Si el firmware no existe se crea, si existe no entra a insertar nada

    if ($x == "0") {
        $resultado = $conexion->consulta("INSERT INTO hardware(idhardware,nombre_hardware) VALUES('" . $idf . "','" . $nombre_hardware . "')");
    }

    $resultado = $conexion->consulta("select idhardware from hardware where nombre_hardware='" . $nombre_hardware . "'");
    $res = mysql_fetch_array($resultado);
    $idf = $res['idhardware'];

    $msjf = true;
    for ($i = 0; $i < count($firmware); $i++) {
        $j = 0;
        $resultado = $conexion->consulta('SELECT idproductos from firmwarexproducto where idfirmware = '. $firmware[$i] .' ');
        while ($res = mysql_fetch_array($resultado)) { // Esta es la linea 211!

            $idp[$j] = $res['idproductos'];
            
            if (!empty($idp)) {
                $resultado = $conexion->consulta("INSERT INTO hardwarexproducto (idproducto,idhardware) VALUES(" . $idp[$j] . ", '" . $idf . "')");
            } else {
                $msjf = false;
            }            
            $j++;            
        }
    }

    if ($msjf == true) {
        echo "Se ha guardado su nuevo hardware";
        return false;
    } else {
        echo "Uno o más hardware x Producto ya existen, estos se han saltado y se ha seguido con la insercion de los demas hardware";
        return false;
    }
}
y la clase conexion.php es:

Código:
<?php
class Conexion {

    private $conexion;
    private $resultados;
    private $error;

    function conectar() {
        $this->conexion = mysql_connect("localhost", "root", "") or die("Problemas en la conexion");
        mysql_select_db("mydb", $this->conexion) or die("Problemas en la selección de la base de datos");
    }

    function consulta($consulta) {        
        $resultados = mysql_query($consulta, $this->conexion) or die("Problemas en la consulta: " . mysql_error());
        $this->error = mysql_errno();
        return $resultados;
    }

    function cerraConexion() {
        mysql_close($this->conexion);
    }

    function devuelveError() {
        return $this->error;
    }

}

?>
realmente les agradecería mucho la ayuda de ustedes :D
  #2 (permalink)  
Antiguo 08/02/2011, 11:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema mysql_fetch_array

prueba imprimir mysql_error() cuando obtengas dicho error, así ya sabrás la razón verdadera del problema... que siendo tan común, es casi siempre por que dicha consulta está mal escrita...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/02/2011, 11:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Problema mysql_fetch_array

No entiendo la parte de imprimir ese error, es decir como iria en el codigo? O.o

seria algo asi?

$msjf = true;
for ($i = 0; $i < count($firmware); $i++) {
$j = 0;
$resultado = $conexion->consulta('SELECT idproductos from firmwarexproducto where idfirmware = ' . $firmware[$i] . ' ');
while ($res = mysql_fetch_array($resultado)) {
$idp[$j] = $res['idproductos'];

if (!empty($idp)) {
$resultado = $conexion->consulta("INSERT INTO hardwarexproducto (idproducto,idhardware) VALUES('" . $idp[$j] . "', '" . $idf . "')");
echo mysql_errno($conexion) . ": " . mysql_error($conexion) .
} else {
$msjf = false;
}
$j++;
}
}


No realmente no creo que sea así :/
  #4 (permalink)  
Antiguo 08/02/2011, 11:54
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 22 años, 11 meses
Puntos: 39
Respuesta: Problema mysql_fetch_array

El error que te esta marcando es que el tipo de dato que le quieres ingresar a un campo es incorrecto.. asi que revisa eso...
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/
  #5 (permalink)  
Antiguo 08/02/2011, 12:03
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Problema mysql_fetch_array

Ya revise, y los tipos de datos en la BDD son INT(11) y le quite las comillas a la consulta, y sigue saliendo el mismo error~

Lo extraño es que aun asi, con ese error, ingresa los datos a la BDD una sola vez... es decir ingresa una vez y cuando va a repetir el ciclo (while) es cuando sale el error. :/
  #6 (permalink)  
Antiguo 08/02/2011, 12:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema mysql_fetch_array

en realidad, a pesar de que tiene un mal diseño tu clase de conexión...

quizá, el problema sería este:
Código PHP:
    function consulta($consulta) {        
        
$this->resultados mysql_query($consulta$this->conexion) ;
        if (
$this->error mysql_errno()) die("Problemas en la consulta: " mysql_error());;
        return 
$this->resultados;
    } 
y además. ¿para que usar mysql_fetch_loquesea() fuera de la clase?

cuando bien podrías agregar dicha funcionalidad dentro de la misma clase:
Código PHP:
function fetch_array()
// etc...
  
return mysql_fetch_array($this->resultados);

y usar...
Código PHP:
$conexion->fetch_array(); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 08/02/2011, 12:47
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Problema mysql_fetch_array

Sigue saliendo el mismo error :/

Lo siento, soy algo novato en esto de php
  #8 (permalink)  
Antiguo 08/02/2011, 14:56
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Problema mysql_fetch_array

Lo intente con el fetch array en la clase, pero no sabría como mantener el ciclo while :/

Realmente no doy con el error u.u
  #9 (permalink)  
Antiguo 08/02/2011, 15:17
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 22 años, 11 meses
Puntos: 39
Respuesta: Problema mysql_fetch_array

Creo que el problema es cuando mandas a llamar a tu conexion, ya que si dices que ingresa el primero y el segundo truena quiere decir que en la segunda vuelta ya no existe la conexion..


Si la tienes en una funcion o la cierras en tu while evita eso..
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/

Etiquetas: Ninguno
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 14:40.