Foros del Web » Programando para Internet » PHP »

Problema en ABM

Estas en el tema de Problema en ABM en el foro de PHP en Foros del Web. Hola gente, tengo un problema en un abm que descargue por internet y la verdad que no se como solucionarlo. Pego los dos php para ...
  #1 (permalink)  
Antiguo 14/04/2009, 16:29
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 1
Problema en ABM

Hola gente, tengo un problema en un abm que descargue por internet y la verdad que no se como solucionarlo.

Pego los dos php para que vean:

index.php

Código PHP:
<html>
<head>
<title></title>
</head>
<body>
<?php
include_once ("clase.php"); // incluye las clases
    
$nombre="";
    
$apellido="";
    
$fecha="";
    
$cliente="";
    
$id="";

if (isset(
$_GET['md'])) // si modifica este valor viene seteado y ejecuta el siguiente codigo
{
    
$cliente=new Cliente($_GET['md']);  // instancio la clase cliente pasandole en nro de cliente, de esta forma lo busca
    
$nombre=$cliente->getNombre();        // obtengo el nombre
    
$apellido=$cliente->getApellido();    // obtengo el apellido
    
$fecha=$cliente->getFecha();        // obtengo la fecha de nac
    
$peso=$cliente->getPeso();            // obtengo su peso 
    
$id=$cliente->getID();                // obtengo el id
}
?>

<div >
<form method="POST" action="index.php"> 
<input type="hidden" name="id" value="<?php print $id ?>">
<table border=1>

<tr>
    <td>Nombre</td>
    <td><input type="text" name="nombre" value = "<?php print $nombre ?>"></td>
</tr>
<tr>
    <td>Apellido</td>
    <td><input type="text" name="apellido"value = "<?php print $apellido ?>"></td>
</tr>
<tr>
    <td>Fecha Nacimiento</td>
    <td><input type="text" name="fecha"value = "<?php print $fecha ?>">'yyyy-mm-dd'</td>
</tr>
<tr>
    <td>Peso</td>
    <td><input type="text" name="peso"value = "<?php print $peso ?>"></td>
</tr>
<tr>
    <td></td>
    <td align =right><input type="submit" name="submit" value ="<?php if(is_numeric($id)) print "Modificar"; else print "Ingresar";?>"></td>
</tr>
</table>
</form>
</div>
<?php




if (isset($_POST['submit'])&&!is_numeric($_POST['id'])) // si presiono el boton ingresar
{
    
$cliente=new Cliente();
    
//print_r($_POST);
    
$cliente->setNombre($_POST['nombre']); // setea los datos
    
$cliente->setApellido($_POST['apellido']);    
    
$cliente->setFecha($_POST['fecha']);    
    
$cliente->setPeso($_POST['peso']);    
    print 
" Consulta ejecutada: "$cliente->insertCliente(); // inserta y muestra el resultado
}
if (isset(
$_POST['submit'])&&is_numeric($_POST['id'])) // si presiono el boton y es modificar
{
    
$cliente=new Cliente($_POST['id']);  // instancio la clase pasandole el nro de cliente para cargar los datos
    
$cliente->setNombre($_POST['nombre']); // setea los datos nuevos
    
$cliente->setApellido($_POST['apellido']);    
    
$cliente->setFecha($_POST['fecha']);    
    
$cliente->setPeso($_POST['peso']);    
    print 
" Consulta ejecutada: "$cliente->updateCliente(); // inserta y muestra el resultado
}
if (isset(
$_GET['br'])&&is_numeric($_GET['br'])) // si presiono el boton y es eliminar
{
    
$cliente=new Cliente();
    print 
" Consulta ejecutada: "$cliente->deleteCliente($_GET['br']); // elimina el cliente
}



$cliente=new Cliente();
$clientes$cliente->getClientes();

print 
'<br/><br/><table border=1>'
          
.'<tr><td>Nombre:</td>'
          
.'<td>Apellido:</td>'
          
.'<td>Fecha Nacimiento</td>'
          
.'<td>peso</td>'
          
.'<td>Modificar</td>'
          
.'<td>Borrar</td></tr>';

while (
$row=mysql_fetch_Array($clientes))
{
    print 
'<tr>'
          
.'<td>'.$row['nombre'] .'</td>'
          
.'<td>'.$row['apellido'] .'</td>'
          
.'<td>'.$row['fecha_nac'] .'</td>'
          
.'<td>'.$row['peso'] .'</td>'
          
.'<td><a href="index.php?md='.$row['id'].'">Modificar</a></td>'   // en este ejemplo para simplificar se envian los parametros por get utilizando un href
          
.'<td><a href="index.php?br='.$row['id'].'">Borrar</a></td>'        // lo correcto seria enviarlos por post con un submit por ejem.
          
.'</tr>';
}
print 
'</table>';
?>
</body>
</html>

clase.php

Código PHP:
<?php
class Conexion  // se declara una clase para hacer la conexion con la base de datos
{
    var 
$con;
    function 
Conexion()
                
    {
        
// se definen los datos del servidor de base de datos 
        
$conection['server']="localhost";  //host
        
$conection['user']="root";         //  usuario
        
$conection['pass']="";        //password
        
$conection['base']="prueba";            //base de datos
        
        
        // crea la conexion pasandole el servidor , usuario y clave
        
$conectmysql_pconnect($conection['server'],$conection['user'],$conection['pass']);


            
        if (
$conect// si la conexion fue exitosa , selecciona la base
        
{
            
mysql_select_db($conection['base']);            
            
$this->con=$conect;
        }
    }
    function 
getConexion() // devuelve la conexion
    
{
        return 
$this->con;
    }
    function 
Close()  // cierra la conexion
    
{
        
mysql_close($this->con);
    }    

}




class 
sQuery   // se declara una clase para poder ejecutar las consultas, esta clase llama a la clase anterior
{

    var 
$pconeccion;
    var 
$pconsulta;
    var 
$resultados;
    function 
sQuery()  // constructor, solo crea una conexion usando la clase "Conexion"
    
{
        
$this->pconeccion= new Conexion();
    }
    function 
executeQuery($cons)  // metodo que ejecuta una consulta y la guarda en el atributo $pconsulta
    
{
        
$this->pconsultamysql_query($cons,$this->pconeccion->getConexion());
        return 
$this->pconsulta;
    }    
    function 
getResults()   // retorna la consulta en forma de result.
    
{return $this->pconsulta;}    
    
    function 
Close()        // cierra la conexion
    
{$this->pconeccion->Close();}    
    
    function 
Clean() // libera la consulta
    
{mysql_free_result($this->pconsulta);}
    
    function 
getResultados() // debuelve la cantidad de registros encontrados
    
{return mysql_affected_rows($this->pconeccion->getConexion()) ;}
    
    function 
getAffect() // devuelve las cantidad de filas afectadas
    
{return mysql_affected_rows($this->pconeccion->getConexion()) ;}
}




class 
Cliente
{
    var 
$nombre;     //se declaran los atributos de la clase
    
var $apellido;
    var 
$fecha;
    Var 
$peso;
    Var 
$id;
    function 
Cliente($nro=0// declara el constructor, si trae el numero de cliente lo busca , si no trae todos los clientes
    
{
        if (
$nro!=0)
        {
            
$obj_cliente=new sQuery();
            
$result=$obj_cliente->executeQuery("select * from clientes where id = $nro"); // ejecuta la consulta para traer al cliente 
            
$row=mysql_fetch_array($result);
            
$this->id=$row['id'];
            
$this->nombre=$row['nombre'];
            
$this->apellido=$row['apellido'];
            
$this->fecha=$row['fecha_nac'];
            
$this->peso=$row['peso'];
        }
    }
    function 
getClientes() // este metodo podria no estar en esta clase, se incluye para simplificar el codigo
        
{
            
$obj_cliente=new sQuery();
            
$result=$obj_cliente->executeQuery("select * from clientes"); // ejecuta la consulta para traer al cliente 
            
return $result// retorna todos los clientes
        
}
        
        
// metodos que devuelven valores
    
function getID()
     { return 
$this->id;}
    function 
getNombre()
     { return 
$this->nombre;}
    function 
getApellido()
     { return 
$this->apellido;}
    function 
getFecha()
     { return 
$this->fecha;}
    function 
getPeso()
     { return 
$this->peso;}
     
        
// metodos que setean los valores
    
function setNombre($val)
     { 
$this->nombre=$val;}
    function 
setApellido($val)
     {  
$this->apellido=$val;}
    function 
setFecha($val)
     {  
$this->fecha=$val;}
    function 
setPeso($val)
     {  
$this->peso=$val;}

    function 
updateCliente()    // actualiza el cliente cargado en los atributos
    
{
            
$obj_cliente=new sQuery();
            
$query="update clientes set nombre='$this->nombre', apellido='$this->apellido',fecha_nac='$this->fecha',peso='$this->peso' where id = $this->id";
            
$obj_cliente->executeQuery($query); // ejecuta la consulta para traer al cliente 
            
return $query .'<br/>Registros afectados: '.$obj_cliente->getAffect(); // retorna todos los registros afectados
    
    
}
    function 
insertCliente()    // inserta el cliente cargado en los atributos
    
{
            
$obj_cliente=new sQuery();
            
$query="insert into clientes( nombre, apellido, fecha_nac,peso)values('$this->nombre', '$this->apellido','$this->fecha','$this->peso')";
            
            
$obj_cliente->executeQuery($query); // ejecuta la consulta para traer al cliente 
            
return $query .'<br/>Registros afectados: '.$obj_cliente->getAffect(); // retorna todos los registros afectados
    
    
}    
    function 
deleteCliente($val)    // elimina el cliente
    
{
            
$obj_cliente=new sQuery();
            
$query="delete from clientes where id=$val";
            
$obj_cliente->executeQuery($query); // ejecuta la consulta para  borrar el cliente
            
return $query .'<br/>Registros afectados: '.$obj_cliente->getAffect(); // retorna todos los registros afectados
    
    
}    
    
}


?>

el error que me tira al ejecutar el index.php es el siguiente:

Caundo quiero hacer el insert me tira esto:

Consulta ejecutada: insert into clientes( nombre, apellido, fecha_nac,peso)values('', '','','')
Registros afectados: -1

y mas abajo antes de la edicion me tira el siguiente error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\Abm\index.php on line 96

Espero alguien pueda ayudarme y decirme el motivo y/o la soloucion a esto.

Gracias de antemano

Salu2
  #2 (permalink)  
Antiguo 14/04/2009, 16:55
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: Problema en ABM

pero para que utilizar mysql_fetch_array(), si la clase tiene un método llamado getClientes, uqe te retorna un array, con los registros de la consulta, entonces quedaría recorrer ese método con el while.
suerte.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #3 (permalink)  
Antiguo 14/04/2009, 17:06
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problema en ABM

hola amigo, no comprendo, como quedaria entonces???

Salu2 y gracias
  #4 (permalink)  
Antiguo 14/04/2009, 17:14
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: Problema en ABM

$i=0;
$items=$obj->getClientes();
while($i<count($items))
{
//debes de hacer un print_r a la variable $items para saber si el indice es numerico o asociativo
//ejm si fuera acociativo entonces imprimes asi echo $item[0]
$i++;
}
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
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 00:25.