Ver Mensaje Individual
  #16 (permalink)  
Antiguo 11/08/2008, 11:45
Avatar de chitoso
chitoso
 
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 16 años
Puntos: 5
Respuesta: Problema con caracteres especiales desde phpmyadmin

No se bien a que te referís, porque el error ya lo describi varias veces, creo que me estas preguntando por el momento en que guardo y obtengo los datos... aca va.

Lo muestro para el caso de ABM de Clientes.

En el script para guardar:

Código PHP:
if(!empty($_POST['name'])){
            
$client->setName($_POST['name']); 
La conexión a la base de datos (PDO):

Código PHP:
static public function getConnection() {
            require(
HOME.'/dbconfig.php');
            try {
                
$dbh = new PDO("mysql:dbname=$db;host=$host""$user""$pass");
                
$dbh->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
                
$dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND"SET NAMES 'utf8'");
                return 
$dbh;
            }
            catch(
PDOException $e)
            {
                throw new 
Exception("Error al conectarse a la base de datos:<br/>" $e->getMessage());
            }
        } 
Para guardar el cliente:

Código PHP:
$dbh MySQLConnect::getConnection();

            if(
$c->getId() == -1){
                
$stmt $dbh->prepare("INSERT INTO clients
                                       (
                                           id,
                                           name,
                                           phone,
                                           email,
                                           address,
                                           rut,
                                           razon_social,
                                           active
                                       )
                                       VALUES
                                       (
                                            :client_id,
                                            :name,
                                            :phone,
                                            :email,
                                            :address,
                                            :rut,
                                            :razon_social,
                                            :active
                                       )"
                
);
                
$oid OIDManager::getInstance()->getClientID();
                
$stmt->bindParam(':client_id'$oid);
            }
            else{
                
$stmt $dbh->prepare("UPDATE clients
                                       SET
                                            name = :name,
                                            phone = :phone,
                                            email = :email,
                                            address = :address,
                                            rut = :rut,
                                            razon_social = :razon_social,
                                            active = :active
                                       WHERE id  = :client_id"
                
);
                
$stmt->bindParam(':client_id'$c->getId());
            }


            
$stmt->bindParam(':name'$c->getName());
            
$stmt->bindParam(':phone'$c->getPhone());
            
$stmt->bindParam(':email'$c->getEmail());
            
$stmt->bindParam(':address'$c->getAddress());
            
$stmt->bindParam(':rut'$c->getRut());
            
$stmt->bindParam(':active'$c->getActive());
            
$stmt->bindParam(':razon_social'$c->getRazonSocial());

            try
            {
                
$stmt->execute();
                
$dbh null;
            }
            catch(
PDOException $ex){
                throw new 
Exception($ex->getMessage());
            }
        }

        public function 
loadClient(Client &$c){

            
$link MySQLConnect::getConnection();
            
$query "";

            if(
$c->getId()!=-1){
                
$query "SELECT id, name, phone, email, address, rut, razon_social, active
                              FROM clients
                              WHERE id = "
.$c->getId()." LIMIT 1";
            }
            else{
                
$query "SELECT id, name, password, fullname, email, authority
                              FROM  users
                              WHERE username = '"
.$c->getUsername()."' LIMIT 1";
            }

            try{
                
$stmt $link->query($query);
                
$row $stmt->fetch(PDO::FETCH_OBJ);

                
$c->setId($row->id);
                
$c->setName($row->name);
                
$c->setPhone($row->phone);
                
$c->setEmail($row->email);
                
$c->setAddress($row->address);
                
$c->setRut($row->rut);
                
$c->setRazonSocial($row->razon_social);
                
$c->setActive($row->active);

                
$link null;
            }
            catch(
PDOException $e)
            {
                echo 
$e->getMessage();
            } 
Y... bueno, para mostrarlo hago un load() al cliente, que basicamente hace lo mismo, pero carga los valores, sin aplicarle ningun tipo de funcion.
Luego $client->getName().

Como decía, desde la web, y desde el gestor de BD, es consistente. Es decir, todos los datos que modifico y doy de alta en la web, se ven ok en la web. El tema es que si ingreso "mañana" y lo voy a ver en phpmyadmin, se ve mal (y viceversa). Perdón por ser repetitivo.

Si no era especificamente lo que preguntaste, decime que estoy atento.