Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO ¿Dudas con la POO?

Estas en el tema de ¿Dudas con la POO? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos he estado aprendiendo php hace poco tiempo pero ahora que estoy entrando en la POO hay algunas cosas que tengo duda, si ...
  #1 (permalink)  
Antiguo 09/02/2013, 13:16
Avatar de Vaneek  
Fecha de Ingreso: febrero-2013
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta ¿Dudas con la POO?

Hola a todos he estado aprendiendo php hace poco tiempo pero ahora que estoy entrando en la POO hay algunas cosas que tengo duda, si alguien me puede explicar que estoy haciendo mal en este código, se lo agradecería mucho.
Código PHP:
<?php
class DataBase{

public 
$connect_db;

function 
Connect($sername$dbuser$dbpass$dbname){
$this->connect_db mysqli_connect($sername$dbuser$dbpass$dbname);
return 
$this->connect_db;
}

function 
QueryInsert($sql$table_name){
$query_sql 'INSERT INTO '.$table_name.'('.implode(', 'array_keys($sql)).')'.' VALUES('.implode(', ',$sql).')';
$query mysqli_query($this->connect_db$query_sql);
return 
$query;
}
}
?>
Solo es conectar a la base de datos y insertar datos usando un formulario nada más y no se que hago mal por que no me inserta el dato

Tengo un archivo llamado global.php y en este llamo al objeto
Código PHP:
<?php
require_once("source/config.php");
require_once(
"source/oop/class_database.php");

$db = new DataBase;
$db->Connect(SernameDbuserDbpassDbname);
?>
en config.php tengo constantes para conectar a la base de datos y en mi archivo index.php

Código PHP:
<?php
require_once "global.php"

if(!isset(
$_GET['values'])){
?>
<form action="index.php" method="GET">
<input type="text" name="values"/>
<input type="submit" value="Enviar"/>
</form>
<?php
}else{
$sql = array('name' => $_GET['values']);
$db->QueryInsert($sql'config');
}
?>
Y aclaro que no me da ningún erro en la sintasys
Espero su ayuda
  #2 (permalink)  
Antiguo 09/02/2013, 13:47
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 13 años, 6 meses
Puntos: 44
Respuesta: ¿Dudas con la POO?

Hola. ¿Que error obtienes?

Mientras estén en un entorno de desarrollo activa el error_reporting (ALL) y el display_errors en tu php.ini para poder observar todos los errores y warnings que te arroja la aplicación.

Así simple vista no sabría decirte sin ver el resto del código. Revisa bien las constantes definidas que utilizas en tu método conexión

PD: ya que utilizas POO, te recomiendo utilizar mysqli en su orientación a objetos para acelerar tu aprendizaje.

Saludos
  #3 (permalink)  
Antiguo 09/02/2013, 13:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 2 meses
Puntos: 2135
Respuesta: ¿Dudas con la POO?

Yo lo que veo es que el segundo parámetro de tu método QueryInsert debe de ser un array, y tú le estas pasando un string, por eso no funciona correctamente, pero sigue los consejos de SetheR, así puedes ver los errores que te marque.

Saludos.
  #4 (permalink)  
Antiguo 09/02/2013, 15:39
Avatar de Vaneek  
Fecha de Ingreso: febrero-2013
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: ¿Dudas con la POO?

Cita:
Iniciado por SetheR Ver Mensaje
Hola. ¿Que error obtienes?

Mientras estén en un entorno de desarrollo activa el error_reporting (ALL) y el display_errors en tu php.ini para poder observar todos los errores y warnings que te arroja la aplicación.

Así simple vista no sabría decirte sin ver el resto del código. Revisa bien las constantes definidas que utilizas en tu método conexión

PD: ya que utilizas POO, te recomiendo utilizar mysqli en su orientación a objetos para acelerar tu aprendizaje.

Saludos
Ya los tengo activados y en realidad no me aparece ningún error y las constantes estas definadas así.

Código PHP:
<?php
const Sername "localhost";
const 
Dbuser  "root";
const 
Dbpass  "";
const 
Dbname  "proyecto";
?>
Y mi servidor local trabaja con php 5.4 no creo que sean las constantes.
  #5 (permalink)  
Antiguo 09/02/2013, 15:41
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 15 años, 5 meses
Puntos: 137
Respuesta: ¿Dudas con la POO?

las constantes se definen con la funcion de php define
Código PHP:
Ver original
  1. define('Sername',"localhost");
  2. // etc
si tienes los errores activados deberian aparecer esos errores, por favor revisa tu configuración
__________________
>> abimaelmartell.com
  #6 (permalink)  
Antiguo 09/02/2013, 15:53
Avatar de Vaneek  
Fecha de Ingreso: febrero-2013
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: ¿Dudas con la POO?

Cita:
Iniciado por abimex Ver Mensaje
las constantes se definen con la funcion de php define
Código PHP:
Ver original
  1. define('Sername',"localhost");
  2. // etc
si tienes los errores activados deberian aparecer esos errores, por favor revisa tu configuración
Que no es lo mismo?? según la documentación de php esta forma se puede aplicar desde php 5.3.

Aunque aun cambiando a define no me cambia el resultado, es decir que no me hace nada, ningún error ni nada.
  #7 (permalink)  
Antiguo 09/02/2013, 16:01
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 12 años, 4 meses
Puntos: 461
Respuesta: ¿Dudas con la POO?

pues concuerdo con setter, deberias sacar ventaja a mysqli orientado a objetos, de todas maneras siempre es bueno ver si hay algun error y lanzar una excepcion, puedes ver como usar mysqli::error, con eso pudieras lanzar una excepcion, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 09/02/2013, 16:07
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 15 años, 5 meses
Puntos: 137
Respuesta: ¿Dudas con la POO?

si estas en una clase si se puede hacer esto
Código PHP:
Ver original
  1. class MiClase{
  2.    const CONST = 'Valor';
  3. }

pero fuera del contexto de una clase, las constantes se definen con define,
y por favor revisa que esté activado la salida de errores, si no te dice nada pega esto al inicio de tu archivo para que veas los errores.
Código PHP:
Ver original
  1. ini_set('display_errors', 1);
__________________
>> abimaelmartell.com
  #9 (permalink)  
Antiguo 09/02/2013, 16:29
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 14 años, 7 meses
Puntos: 845
Respuesta: ¿Dudas con la POO?

En realidad a partir de PHP 5.3+ las constantes se pueden definir de las formas, ahora en relación a tu problema, has debugeado para ver donde "muere" el script ?, si es que muere, mysqli_error no te indica nada ?
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 09/02/2013 a las 16:40
  #10 (permalink)  
Antiguo 09/02/2013, 20:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 2 meses
Puntos: 2135
Respuesta: ¿Dudas con la POO?

Yo solo veo que no haz hecho lo que te dije , estas mandando llamar tu método de forma incorrecta.
  #11 (permalink)  
Antiguo 09/02/2013, 21:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 14 años, 7 meses
Puntos: 845
Respuesta: ¿Dudas con la POO?

@GatorV, talves estoy dormido(puede que sea la hora :P), pero el segundo parámetro no es el nombre de la tabla ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #12 (permalink)  
Antiguo 09/02/2013, 21:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 2 meses
Puntos: 2135
Respuesta: ¿Dudas con la POO?

Cierto jaja creo que el dormido soy yo xD
  #13 (permalink)  
Antiguo 10/02/2013, 04:41
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 14 años, 7 meses
Puntos: 845
Respuesta: ¿Dudas con la POO?

Jeje, suele suceder, yo miraba y miraba el código :P.
@Vaneek, hay alguna razón para utilizar GET en el formulario.
__________________
http://es.phptherightway.com/
thats us riders :)
  #14 (permalink)  
Antiguo 10/02/2013, 15:24
Avatar de Vaneek  
Fecha de Ingreso: febrero-2013
Mensajes: 4
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: ¿Dudas con la POO?

Cita:
Iniciado por carlos_belisario Ver Mensaje
pues concuerdo con setter, deberias sacar ventaja a mysqli orientado a objetos, de todas maneras siempre es bueno ver si hay algun error y lanzar una excepcion, puedes ver como usar [URL="http://www.php.net/manual/es/mysqli.error.php"]mysqli::error[/URL], con eso pudieras lanzar una excepcion, saludos
El problema no es si quiero usar de una u otra forma para la base de datos si no que es aprender a usar la POO y la mejor forma es hacer una estructura de base de datos funcional, aunque eso pienso yo y no es necesario que los demás piensen igual.

Cita:
Iniciado por GatorV Ver Mensaje
Yo solo veo que no haz hecho lo que te dije , estas mandando llamar tu método de forma incorrecta.
Sí, como te dicen arriba es solo es el nombre de la tabla donde inserto el dato.

Cita:
Iniciado por masterpuppet Ver Mensaje
Jeje, suele suceder, yo miraba y miraba el código :P.
@Vaneek, hay alguna razón para utilizar GET en el formulario.
Ninguna, es una pura prueba y la verdad erra por que no quería poner más script y como es prueba no sirve para nada xD.

Pero ya vi que erra el erro y no es mi código, o bien que sí xD pero me fije que en la consulta SQL no había puesto un simple carácter y es la comillas simple, por eso no me daba ningún problema en el script y al poner mysqli_error me daba que le faltaba un parámetro, así que lo puse bien y funciona perfectamente.

Gracias por la ayuda, aprenderé a hacer script con un sistema de error desde ahora que es algo común en mi caso ya que la mayoría de script que hago no me dan errores xD(claro que son scripts simples)

Etiquetas: oop, php
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 22:29.