Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta PHP

Estas en el tema de Consulta PHP en el foro de PHP en Foros del Web. Soy novato en la construcción de sistemas sencillos con PHP. Tengo conocimiento básicos y se como funciona lo que escribo pero me arroja un error ...
  #1 (permalink)  
Antiguo 10/07/2013, 11:01
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Pregunta Consulta PHP

Soy novato en la construcción de sistemas sencillos con PHP. Tengo conocimiento básicos y se como funciona lo que escribo pero me arroja un error con el que anteriormente no he tenido que lidiar. Alguien me podria ayudar con este codigo, cual es el error. Lo que quiero es lograr consultar, ya he probado la sentencia sql directamente en phpmyadmin y ha funcionado a la perfeccion ahora intento pasarla al php.



Código PHP:
  function consultar() {
       
         
$con=mysqli_connect("localhost","root","root123","soptecvnzla");

if (
mysqli_connect_errno($con))
  {
  echo 
"Error en Conexión: " mysqli_connect_error();
  }   
       
extract($_POST);

if (
'$codigo' == `equipo`.`codigo`) {
           
$sql"SELECT equipo.codigo,
equipo.responsable,
equipo.ubicacion,
caracteristicas_hardware.marca,
caracteristicas_hardware.observaciones,
caracteristicas_hardware.serial,
caracteristicas_hardware.modelo,
caracteristicas_software.fabricante,
caracteristicas_software.licencia,
caracteristicas_software.observaciones,
caracteristicas_software.version,
software.tipo,
hardware.tipo FROM 
hardware,
caracteristicas_hardware,
software,
caracteristicas_software,
equipo
WHERE
equipo.codigo = caracteristicas_hardware.codigo
AND
caracteristicas_hardware.id_hardware = hardware.id_hardware
AND
equipo.codigo = caracteristicas_software.codigo
AND
caracteristicas_software.id_software = software.id_software"
;

 
$result=mysqli_query($sql,$con);
 if (
$row=mysqli_fetch_array($result)) {
     
     for (
$i=0;$row[i];i++) {
     
     echo 
$row[i];
     }
     else {
     echo 
"Error";
     }
  
   }
   }
   
  } 
  #2 (permalink)  
Antiguo 10/07/2013, 11:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta PHP

Pues de entrada aunque no indicas cual es el error, el ciclo for() no tiene instrucción else.

Saludos.
  #3 (permalink)  
Antiguo 10/07/2013, 11:09
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Consulta PHP

Cierto :v Jajaja, eso lo hice para leer sugerencias. Pero en realidad el error me lo arroja desde el mysqli_query y mysqli_fetch_array :/.

El else es del if que esta anteriormente solo hay un error de llaves.
  #4 (permalink)  
Antiguo 10/07/2013, 11:36
Avatar de alexmetola  
Fecha de Ingreso: julio-2013
Ubicación: madrid
Mensajes: 33
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Consulta PHP

Asi sin meterme tampoco en funcionamiento del codigo el tema de la variable i que se supone que vas incrementando:
A veces pones i otras $i, yo cambiaria las 3 i sueltas que tienes por $i
  #5 (permalink)  
Antiguo 10/07/2013, 11:43
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Consulta PHP

Si si, al igual que el error de las llaves debo colocar $i siempre. Pero en realidad ese no es el problema. :/
  #6 (permalink)  
Antiguo 10/07/2013, 11:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta PHP

Ok, pero entonces ¿que error te marca?
  #7 (permalink)  
Antiguo 10/07/2013, 11:51
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Consulta PHP

Primero creo que no puedo comparar una variable con un campo de mysql como lo intento hacer en la linea
Código PHP:
if ('$codigo' == `equipo`.`codigo`) 
. Segundo si quito esa condicion me marca error en el mysqli_query y en el mysqli_fetch_array


mysqli_query() expects parameter 1 to be mysqli, string given in

mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in



Esos exactamente :s.
  #8 (permalink)  
Antiguo 10/07/2013, 11:57
Avatar de alexmetola  
Fecha de Ingreso: julio-2013
Ubicación: madrid
Mensajes: 33
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Consulta PHP

Correcto de la manera puesta no puedes,por cierto exactamente que quieres hacer.

PD:
Otro error que veo es el $row[$i],juraria que la sentencia for necesita otros parametros.
que contiene$codigo?
  #9 (permalink)  
Antiguo 10/07/2013, 12:01
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Consulta PHP

Pongámoslo de esta forma.

Código PHP:
   function consultar() {
       
         
$con=mysqli_connect("localhost","root","root123","soptecvnzla");

if (
mysqli_connect_errno($con))
  {
  echo 
"Error en Conexión: " mysqli_connect_error();
  }   
       
extract($_POST);


           
$sql"SELECT equipo.codigo,
equipo.responsable,
equipo.ubicacion,
caracteristicas_hardware.marca,
caracteristicas_hardware.observaciones,
caracteristicas_hardware.serial,
caracteristicas_hardware.modelo,
caracteristicas_software.fabricante,
caracteristicas_software.licencia,
caracteristicas_software.observaciones,
caracteristicas_software.version,
software.tipo,
hardware.tipo FROM 
hardware,
caracteristicas_hardware,
software,
caracteristicas_software,
equipo
WHERE
equipo.codigo = caracteristicas_hardware.codigo
AND
caracteristicas_hardware.id_hardware = hardware.id_hardware
AND
equipo.codigo = caracteristicas_software.codigo
AND
caracteristicas_software.id_software = software.id_software"
;
$result=mysql_query($sql);

$row=mysql_fetch_array($result); 
Si eso funcionara a la perfeccion la busqueda seria exitosa, hasta ahora me da un error en el mysql_fetch_array.

Si suponiendo que eso funciona, quiero agregarle una condicion al principio que compare la variable $codigo (que viene previamente de un formulario) con el campo equipo.codigo de mysql y que si eso se da prosiga con la sentencial sql, luego mostrar todos esos resultados.
  #10 (permalink)  
Antiguo 10/07/2013, 12:23
Avatar de alexmetola  
Fecha de Ingreso: julio-2013
Ubicación: madrid
Mensajes: 33
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Consulta PHP

Vale parece ser que empezamos a aclararnos,ya comprendo lo que quieres hacer,prosigamos
cuando lanzas esa select en tu phpmyadmin(por ejemplo) te da algun error?,si es asi ahi esta el error de cuando recorres el array,luego haber para lo que quieres hacer,lo tienes que hacer con un if cierto pero no de la forma que lo estabas haciendo ,primero la variable $codigo va sin comillas pues si le pones las comillas es un string que pone $codigo y no es lo que tu quieres, creo que crees que esto lo hace todo y no es asi,para recoger y recorrer el campo equipo.codigo y compararlo con la nueva variable que tu indicas lo limitaria en la select que realizas,es mucho mas facil que intentar limitarlo por un if te pongo el codigo:


Código PHP:
           $sql'SELECT equipo.codigo, 
equipo.responsable, 
equipo.ubicacion, 
caracteristicas_hardware.marca, 
caracteristicas_hardware.observaciones, 
caracteristicas_hardware.serial, 
caracteristicas_hardware.modelo, 
caracteristicas_software.fabricante, 
caracteristicas_software.licencia, 
caracteristicas_software.observaciones, 
caracteristicas_software.version, 
software.tipo, 
hardware.tipo FROM  
hardware, 
caracteristicas_hardware, 
software, 
caracteristicas_software, 
equipo 
WHERE 
equipo.codigo = caracteristicas_hardware.codigo 
AND 
caracteristicas_hardware.id_hardware = hardware.id_hardware 
AND 
equipo.codigo = caracteristicas_software.codigo 
AND 
caracteristicas_software.id_software = software.id_software
and equipo.codigo= '
$codigo

$result=mysql_query($sql); 

$row=mysql_fetch_array($result); 
  #11 (permalink)  
Antiguo 10/07/2013, 12:31
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Consulta PHP

Exacto. De esta forma tambien lo he intentado. El error sigue estando aqui



mysql_fetch_array(): supplied argument is not a valid MySQL result resource in



He revisado diferentes partes y todos lo usan como lo intento usar yo. No entiendo cual es el error amigo :/.
La sentencia sql si funciona directamente al phpmyadmin, el error no esta alli.

Última edición por AnGuisi; 10/07/2013 a las 12:37
  #12 (permalink)  
Antiguo 10/07/2013, 12:57
Avatar de alexmetola  
Fecha de Ingreso: julio-2013
Ubicación: madrid
Mensajes: 33
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Consulta PHP

Vale ya lo tengo:

Código PHP:
function consultar() { 
        
         
$con=new mysqli("localhost","root","root123","soptecvnzla"); 

if (
mysqli_connect_errno($con)) 
  { 
  echo 
"Error en Conexión: " mysqli_connect_error(); 
  }    
       
extract($_POST); 


           
$sql"SELECT equipo.codigo, 
equipo.responsable, 
equipo.ubicacion, 
caracteristicas_hardware.marca, 
caracteristicas_hardware.observaciones, 
caracteristicas_hardware.serial, 
caracteristicas_hardware.modelo, 
caracteristicas_software.fabricante, 
caracteristicas_software.licencia, 
caracteristicas_software.observaciones, 
caracteristicas_software.version, 
software.tipo, 
hardware.tipo FROM  
hardware, 
caracteristicas_hardware, 
software, 
caracteristicas_software, 
equipo 
WHERE 
equipo.codigo = caracteristicas_hardware.codigo 
AND 
caracteristicas_hardware.id_hardware = hardware.id_hardware 
AND 
equipo.codigo = caracteristicas_software.codigo 
AND 
caracteristicas_software.id_software = software.id_software
and equipo.codigo="
$codigo

  
$result $con->query($sql);


$row $result->fetch_array();
    
  } 
Bueno dime haber si te funciona.
  #13 (permalink)  
Antiguo 10/07/2013, 13:09
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Consulta PHP

Nada. Y aun haciendo algunos cambios tampoco, siempre es el mysqli_fetch_array el del problema :/.

Call to a member function fetch_array() on a non-object on line 110.

Ese error me arroja en el codigo que pasaste.
  #14 (permalink)  
Antiguo 10/07/2013, 13:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta PHP

Si estas usando mysqli, el primer parámetro es la conexión siempre, prueba algo así (ajustalo a tu código no hagas copy/paste):
Código PHP:
Ver original
  1. $link = mysqli_connect(/* */);
  2.  
  3. $sql = "la sql";
  4. $result = mysqli_query($link, $sql);
  5. if (!$result) {
  6.        die("error en la consulta: " . mysqli_error($link));
  7. }
  8.  
  9. while ($row = mysqli_fetch_assoc($result)) {
  10.       var_dump($row);
  11. }

Saludos.
  #15 (permalink)  
Antiguo 10/07/2013, 13:17
Avatar de alexmetola  
Fecha de Ingreso: julio-2013
Ubicación: madrid
Mensajes: 33
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Consulta PHP

Ese error me salta a mi tambien pero unicamente cuando escribo la select mal.
prueba a quitarle la ultima linea de la query,o a sustituirla por esto :
and equipo.codigo=$codigo";

Este error quiere decir que la select esta mal y por lo que no puede recuperarlo como array,estoy 100% seguro que el problema es de la select y no del fetch_array.
  #16 (permalink)  
Antiguo 10/07/2013, 13:29
Avatar de AnGuisi  
Fecha de Ingreso: julio-2013
Ubicación: San Felipe - Yaracuy
Mensajes: 122
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Consulta PHP

¡Gatooooooooooooooooorv!

¡Funcionó! :D Gracias bro.

AlexMola gracias a ti también por ayudarme bro.


TEMA SOLUCIONADO.

Última edición por AnGuisi; 10/07/2013 a las 13:34
  #17 (permalink)  
Antiguo 10/07/2013, 13:34
Avatar de alexmetola  
Fecha de Ingreso: julio-2013
Ubicación: madrid
Mensajes: 33
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Consulta PHP

Siempre esta ahi gatorv para ayudarnos

Etiquetas: 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 04:27.