Foros del Web » Programando para Internet » PHP »

PHP OO Clase ManiDB fácil manipulación de datos para novatos!

Estas en el tema de Clase ManiDB fácil manipulación de datos para novatos! en el foro de PHP en Foros del Web. [Moderadores por favor si pueden poner un Stick a este post para que se expanda esta clase.] Ustedes son programadores (novatos, expertos...), en un proyecto ...
  #1 (permalink)  
Antiguo 13/02/2011, 23:18
Avatar de proxipor  
Fecha de Ingreso: diciembre-2009
Mensajes: 211
Antigüedad: 14 años, 3 meses
Puntos: 10
Sonrisa Clase ManiDB fácil manipulación de datos para novatos!

[Moderadores por favor si pueden poner un Stick a este post para que se expanda esta clase.]

Ustedes son programadores (novatos, expertos...), en un proyecto que realizo, estoy trabajando con PHP y MySQL.

Desde hace semanas estuve escribiendo algo de código en PHP para que la manipulación de datos sea mas rápida y sin esforzarte mucho.

Creo que les será de mucha utilidad a programadores novatos o incluso a programadores con más experiencia que no deseen escribir tanto código.

Se que existen Frameworks que facilitan el uso de Bases de Datos, pero esta clase es muy simple no necesitas tener amplios conocimientos en PHP para lograr utilizarla.

La clase se llama ManiDB.

Aquí les pongo un ejemplo de esta clase.

Suponiendo que tienes una tabla llamada 'usuarios', en una base de datos llamada 'base'.

La tabla contiene los siguientes campos: id_usuario, nombre, email.


Código PHP:

<?php
require('Manidb.class.php');

//El constructor lo iniciamos con el host, usuario, password y base de datos.
$var = new Manidb("locahlost""root""pass""base");

//Hacemos la consulta y retorna un arreglo, en donde guarda todos los registros separados por comas.

$arreglo $var->consulta("SELECT * FROM usuarios");

//Ahora podemos imprimir el arreglo y escribirá toda la consutla por ejemplo 1, edgar, [email protected].

//Para separarlo usamos el siguiente método.
$arreglo $var->separa($arreglo);

//Ahora ya tenemos separados los campos, podemos imprimirlos de manera separada.

foreach($arreglo as $a)
{
echo 
'El id es: '.$a[0].' ';
echo 
'El nombre es: '.$a[1].' ';
echo 
'El email es: '.$a[2].' ';
}

//Listo imprimira todos los registros que haya en la tabla usuarios.

//También podemos insertar estos.

$insertar = array('Edgar''[email protected]');

//Insertamos los datos desde un arreglo, podrán notar que no tiene el campo id, es por que el metodo de insertar asigna automaticamente el id, si este esta como autoincrement. El segundo parametro es la tabla en la que se desea insertar.

$var->insertar($insertar"usuarios");

//Una actualización sencilla.
//El primer parametro contiene el valor nuevo, el segundo la condicion y el tercero la tabla.

$var->actualizar("nombre = 'Alan' ""id_usaurio = '1' ""usaurios");

//Le dije que actualice el nombre a Alan si el id_usuario es igual a 1 en la tabla usuario.

//Ahora a borrar un registro. Primer parametro condicion, segundo Tabla.

$var->borrar("id_usuario = '1'""usuarios");


?>
Son ejemplos muy básicos pronto le añadiré nuevas funciones y subiré algunos videotutoriales de como utilizarla para usuarios novatos.

Tiene licencia CC asi que pueden modificarla y adaptarla a su proyecto, siempre y cuando reconozcan la fuente.

Programadores si me dan una manita y me corrigen algunos errores y me ayudan a incluir funciones se los agradecería mucho!

Pueden bajar la clase de aquí:

https://sourceforge.net/projects/manibd/

Saludos!
  #2 (permalink)  
Antiguo 14/02/2011, 20:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Clase ManiDB fácil manipulación de datos para novatos!

Interesante, pero... cuando ejecutas la consulta, obtienes los resultados en una matriz (array), que despues conviertes en cadena, separandolos por comas y, finalmente, usas la funcion separa para volver a recuperar la matriz original, pero... que pasa si en alguno de los valores existe una coma?

empresa, direccion, telefono
Google Inc.,Somewhere in USA,1-800-google
Coma, S.A.,Calle y numero,#### -> te va a generar un error

Sugerencias:
- Utiliza consulta para devolver un recurso MySQL
- La funcion recupera puede ser util para leer todos los registros encontrados y sin necesidad sin "dar margen de error" al usuario

Disculpame, pero en realidad no le veo mucho sentido a esta clase, necesitas trabajarla un poco mas y ponerla a prueba para encontar los puntos fuertes y tambien los posibles fallos para ir mejorando.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 15/02/2011, 00:19
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Clase ManiDB fácil manipulación de datos para novatos!

Opino igual que Triby, esta clase esta aun muy joven, tiene bastantes deficiencias.

1. ¿Que pasa cuando ya no necesito el enlace a la base de datos? ¿y si necesito conectarme a otra base de datos?
2. Falta el sanitizador de sentencias. La clase es susceptible a ataques de inyección.
3. Necesita una manejador de errores externo.
4. Se pueden crear múltiples instancias de la clase, necesitas agregar el patrón singleton.
... y otras de las cuales todavia no me doy cuenta.

Pero échale ganas, siempre se empieza por algo.
  #4 (permalink)  
Antiguo 15/02/2011, 01:05
Avatar de proxipor  
Fecha de Ingreso: diciembre-2009
Mensajes: 211
Antigüedad: 14 años, 3 meses
Puntos: 10
De acuerdo Respuesta: Clase ManiDB fácil manipulación de datos para novatos!

Cita:
Iniciado por Triby Ver Mensaje
Interesante, pero... cuando ejecutas la consulta, obtienes los resultados en una matriz (array), que despues conviertes en cadena, separandolos por comas y, finalmente, usas la funcion separa para volver a recuperar la matriz original, pero... que pasa si en alguno de los valores existe una coma?

empresa, direccion, telefono
Google Inc.,Somewhere in USA,1-800-google
Coma, S.A.,Calle y numero,#### -> te va a generar un error

Sugerencias:
- Utiliza consulta para devolver un recurso MySQL
- La funcion recupera puede ser util para leer todos los registros encontrados y sin necesidad sin "dar margen de error" al usuario

Disculpame, pero en realidad no le veo mucho sentido a esta clase, necesitas trabajarla un poco mas y ponerla a prueba para encontar los puntos fuertes y tambien los posibles fallos para ir mejorando.
Tienes mucha razon Triby!

No habia pensado eso, tratare de usar tus sugerencias y modificar eso de las comas (:

Saludos y Gracias!

Cita:
Iniciado por jonasanx Ver Mensaje
Opino igual que Triby, esta clase esta aun muy joven, tiene bastantes deficiencias.

1. ¿Que pasa cuando ya no necesito el enlace a la base de datos? ¿y si necesito conectarme a otra base de datos?
2. Falta el sanitizador de sentencias. La clase es susceptible a ataques de inyección.
3. Necesita una manejador de errores externo.
4. Se pueden crear múltiples instancias de la clase, necesitas agregar el patrón singleton.
... y otras de las cuales todavia no me doy cuenta.

Pero échale ganas, siempre se empieza por algo.
Yo nunca dije que fuera una maravilla, simplemente queria que la comunidad la adaptara a sus proyectos optimizandola ellos y compartiendo sus logros, aqui en el foro.

Si hay algun programador que tenga algo de tiempo libre y le pueda hacer algunas mejoras se lo agaradeceria.

Saludos!
  #5 (permalink)  
Antiguo 27/05/2013, 08:27
 
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Clase ManiDB fácil manipulación de datos para novatos!

Buenos dias , yo estoy usando la clase que publicaron, no le he hecho ninguna modificación, y cuando intento insertar me muestra varios errores

Notice: Undefined index: TextNombre in C:\wamp\www\obando\htdocs\Pacientes.php on line 24

Call Stack
# Time Memory Function Location
1 0.0004 681208 {main}( ) ..\Pacientes.php:0
2 0.0004 681208 Insert( ) ..\Pacientes.php:75

( ! ) Notice: Undefined index: TextApellido in C:\wamp\www\obando\htdocs\Pacientes.php on line 24
Call Stack
# Time Memory Function Location
1 0.0004 681208 {main}( ) ..\Pacientes.php:0
2 0.0004 681208 Insert( ) ..\Pacientes.php:75

( ! ) Notice: Undefined index: TextCedula in C:\wamp\www\obando\htdocs\Pacientes.php on line 24
Call Stack
# Time Memory Function Location
1 0.0004 681208 {main}( ) ..\Pacientes.php:0
2 0.0004 681208 Insert( ) ..\Pacientes.php:75

( ! ) Notice: Undefined index: TextCiudad in C:\wamp\www\obando\htdocs\Pacientes.php on line 24
Call Stack
# Time Memory Function Location
1 0.0004 681208 {main}( ) ..\Pacientes.php:0
2 0.0004 681208 Insert( ) ..\Pacientes.php:75

( ! ) Notice: Undefined index: TextTel in C:\wamp\www\obando\htdocs\Pacientes.php on line 24
Call Stack
# Time Memory Function Location
1 0.0004 681208 {main}( ) ..\Pacientes.php:0
2 0.0004 681208 Insert( ) ..\Pacientes.php:75
Hay un error en la consulta: Column count doesn't match value count at row 1


eeso es lo que me muestra y no entiendo muy bien por que soy nuevo en php,,mi codigo es este:



Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>

[PHP]<?php 
function Insert(){
require('Manidb.class.php'); 

//El constructor lo iniciamos con el host, usuario, password y base de datos. 
$var = new Manidb('localhost', ,, 'odontologia');   aca si tengo contraseña y pass si  no que por seguridad no las pongo

//Hacemos la consulta y retorna un arreglo, en donde guarda todos los registros separados por comas. 

$arreglo = $var->consulta("SELECT * FROM pacientes"); 

//Ahora podemos imprimir el arreglo y escribirá toda la consutla por ejemplo 1, edgar, [email protected]. 

//Para separarlo usamos el siguiente método. 
$arreglo = $var->separa($arreglo); 

//También podemos insertar estos. 
$insertar = array("'"+$_POST["TextNombre"]+"', '"+$_POST["TextApellido"]+"','"+$_POST["TextCedula"]+"','"+$_POST["TextCiudad"]+"','"+$Telefono= $_POST["TextTel"]+"'"); 
$var->insertar($insertar, "pacientes"); 
}
?>[/PHP]
</head>

<body>
<table width="600" border="0" align="center">
  <tr>
    <td align="center" valign="middle">
      <p>&nbsp;</p>
      <table width="395" border="0">
        <tr>
          <td width="75">Nombre</td>
          <td width="310" align="center" valign="middle"><label for="TextNombre2"></label>
            <input name="TextNombre" type="text" id="TextNombre2" size="50" /></td>
        </tr>
        <tr>
          <td>Apellidos</td>
          <td align="center" valign="middle"><label for="TextApellido"></label>
            <input name="TextApellido" type="text" id="TextApellido" size="50" /></td>
        </tr>
        <tr>
          <td>Cedula</td>
          <td align="center" valign="middle"><label for="TextApellido"></label>
            <input name="TextCedula" type="text" id="TextApellido" size="50" /></td>
        </tr>
        <tr>
          <td>Ciudad</td>
          <td align="center" valign="middle"><label for="TextCiudad"></label>
            <input name="TextCiudad" type="text" id="TextCiudad" size="50" /></td>
        </tr>
        <tr>
          <td>Telefono</td>
          <td align="center" valign="middle"><label for="TextTel"></label>
            <input name="TextTel" type="text" id="TextTel" size="50" /></td>
        </tr>
      </table>
      <p>
        <input type="submit" name="BtnIngresarP" id="BtnIngresarP" value="Ingresar Paciente" onclick="<?php Insert()?>" />
      </p>
      <p>&nbsp;</p></td>
  </tr>
</table>
</body>
</html> 
  #6 (permalink)  
Antiguo 27/05/2013, 10:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Clase ManiDB fácil manipulación de datos para novatos!

Cita:
no entiendo muy bien por que soy nuevo en php,,mi codigo es este:
Eres nuevo en PHP, no entiendes mucho, ¿y te pusiste a usar una clase bocetada de un forista, a pesar de las objeciones que los más expertos le dieron hace dos años?
Lo tuyo es audacia o simplemente imprudencia.

Si recién estás iniciándote, mi sugerencia es que tires a la basura es a clase mal construida, y te pongas a aprender con cosas que vayas aprendiendo a dominar tu.
Copiar cosas parcialmente armadas no es un buen modo de comenzar.



No pierdas tiempo intentando reparar eso. Es preferible que tomes ejemplos de las FAQs, o bien de manuales de POO en PHP, y no experimentar con códigos mal resueltos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 27/05/2013, 10:20
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Clase ManiDB fácil manipulación de datos para novatos!

concuerdo con @gnzsoloyo de principiante siempre comenzamos reinventando la rueda, está bien para aprender, pero de allí a publicarlo... te aplastarán con las críticas.

aveces hay que tragarse un poco el orgullo (tipo: sé que puedo hacerlo) e intentar con clases y modelos ampliamente reconocidos como PDO, ActiveRecord, DataMappers, Doctrine, Propel y demás, al final incluso podrías crear un mejor derivado de éstos o complementar los ya hechos.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 27/05/2013, 19:14
 
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Clase ManiDB fácil manipulación de datos para novatos!

Código PHP:
<?php
$conexion 
mysql_connect("localhost","Jonathan","jhz2438");
mysql_select_db("odontologia",$conexion);
$sql="INSERT INTO pacientes(Nombre,Apellido,Cedula,Ciudad,Telefono) VALUES('Sonia','Romo',20,'med',15)";
mysql_query($sql);
?>
ahora tengo ya este codigo, pero no me inserta, este codigo está en una pagina y llego a ella desde otra. y lo que quiero es que me inserte en la base de datos cuando le click a un boton , a unque no lo he ligado al boton


Código HTML:
<body>
<table width="600" border="0" align="center">
  <tr>
    <td align="center" valign="middle">
      <p>&nbsp;</p>
      <table width="395" border="0">
        <tr>
          <td width="75">Nombre</td>
          <td width="310" align="center" valign="middle"><label for="TextNombre2"></label>
            <input name="TextNombre" type="text" id="TextNombre2" size="50" /></td>
        </tr>
        <tr>
          <td>Apellidos</td>
          <td align="center" valign="middle"><label for="TextApellido"></label>
            <input name="TextApellido" type="text" id="TextApellido" size="50" /></td>
        </tr>
        <tr>
          <td>Cedula</td>
          <td align="center" valign="middle"><label for="TextApellido"></label>
            <input name="TextCedula" type="text" id="TextApellido" size="50" /></td>
        </tr>
        <tr>
          <td>Ciudad</td>
          <td align="center" valign="middle"><label for="TextCiudad"></label>
            <input name="TextCiudad" type="text" id="TextCiudad" size="50" /></td>
        </tr>
        <tr>
          <td>Telefono</td>
          <td align="center" valign="middle"><label for="TextTel"></label>
            <input name="TextTel" type="text" id="TextTel" size="50" /></td>
        </tr>
      </table>
      <p>
        <input type="submit" name="BtnIngresarP" id="BtnIngresarP" value="insertar" onclick="" />
      </p>
      <p>&nbsp;</p></td>
  </tr>
</table>
</body>
</html> 



me podrian ayudar?

Etiquetas: clase, novatos
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 16:40.