[Como usar][tuto] Consultas base de datos MyBB
bueno como les dije que lo haria les pongo lo que usa MyBB para llamar a la DB y como usarlo.... $db->select_db("nombre_de_db"); esto es para selecc...

bueno como les dije que lo haria les pongo lo que usa MyBB para llamar a la DB y como usarlo....

$db->select_db("nombre_de_db"); esto es para seleccionar una base de datos la verdad esque jamas la e ocupado ya que

ni MyBB la usa solo a creo para usarlo al crearmas funciones para llamar a la DB asi que esta practicamente no se usa....

$db->query(""); bueno con esta ya la saben pueden usarla para consultar, eliminar,etc aunque no les recomiendo mucho

usar esto escriben mucho hasta el prefijo por ejemplo para llamar al nombre del usuario online se haria asi con esta funcion
Código PHP:
$db->query('SELECT username FROM '.TABLE_PREFIX.'users WHERE uid='.$mybb->user['uid'].''); 

el TABLE_PREFIX y el mybb->user['uid'] no se los explico ya que ya lo conosen....
PD: No les recomienda mucho esta abajo veran mejores!

$db->write_query(""); es para escribir algo en la DB les pongo un ejemplo es casi parecido al query....
Código PHP:
$db->write_query("
        UPDATE "
.TABLE_PREFIX."users
        SET usergroups='4'
        WHERE uid='"
.intval($mybb->user[uid])."'
    "
); 
este hace que los usuarios por ejemplo se hagan administradores!


$db->explain_query(""); Exactamente no se como se usa pero no se preocupen esta no la usaran para nada al igual que la

primera MyBB solo la creo para hacer funcionar otras de DB.

$db->fetch_array(""); Esta es la que mas vamos a usar o mas bien casi siempre.... con esto podemos com imprimir por

decirlo asi los datos obtenidos de una DB esta se usa siempre acompaña de otra por ejemplo en la de $db->query(""); que les

dije les dije que obtendriamos el nombre de usuario aora este ejemplo la haremos imprimir o ver....

Código PHP:
$query $db->query('SELECT username FROM '.TABLE_PREFIX.'users WHERE uid='.$mybb->user['uid'].'');
$MyBB_Es $db->fetch_array($query)

echo 
$MyBB_Es['username']; 
asi es como se usaria.....


$db->simple_select("","",""); Esta funciona es la que les recomiendo en vez de $query es para obtener datos para

despues imprimirlos con el fetch_array o con otra funcion que me gusta mas que les explico abajo!! Esta se usa asi por

ejemplo igual para obtener el nombre de usuario de quien esta onlin seria asi:
Código PHP:
$db->simple_select("users""username""uid='{$mybb->user['uid']}'"); 

en los primeros parentesis se pone el nombre de la tabla en la segunda es para poner lo que quieres obtener si quieren pueden

poner * para obtener todo de la tabla y el ultimo "" se pone se va obtener dependiendo de que? por ejemplo ami dependiendo es

un ejemplo del usuario online!!

$db->fetch_field(""); Esta funcion me encanta es como el fetch_array la diferencia es que solo imprime una sola cosa

se usa asi (con simple_select) como siempre el mismo ejemplo obtiene y muestra el nombre de usuario del usuario online
Código PHP:
$query $db->simple_select("users""username""uid='".intval($mybb->user['uid'])."'");
$MyBB_Es $db->fetch_field($query'username');

echo 
$MyBB_Es

como veran con esta no se usa ['aqui_el_nombre_de_lo_obtenido'];


$db->num_rows(""); Esta funcion es para contar algo por ejemplo si quieres contar cuantos usuarios hay se haria asi
Código PHP:
$query $db->query("SELECT uid FROM ".TABLE_PREFIX."user");
$rows $db->num_rows($query);

echo 
$rows
con esto te muestra cuantos usuario hay otro ejemplo es mostrar cuantos usuarios administradores hay...
Código PHP:
$query $db->query("SELECT uid FROM ".TABLE_PREFIX."user WHERE usergroup='4'");
$rows $db->num_rows($query);

echo 
$rows
como veran esta cuenta pero solo los que su grupo de usuario es el 4 (administradores) y los muestra en un

echo.


$db->list_tables("",""); Esta funcion esta bonita APESAR QUE NI SE USA CASI ni en plugin ni en archivos de MyBB. MyBB

la a creado UNICAMENTE para insertarla en 2 archivos en las tareas: backupdb.php y checktables.php unicamente esta com su

nombre lo dice es para mostrar todas las tablas de una base de datos por ejemplo
Código PHP:
$db->list_tables($config['database']['database'], $config['database']['table_prefix']); 



$db->table_exists(""); Esta funcion es para saber si una tabla existe dentro de la base de datos es curioso MyBB la a

creado y no la usa en Ningun archivo (la verdad es que no la e buscado si la encuentran hagan favor de desirme por lo que

tengo entendido y aprendi cuando las analizaba eso decia jaja) bueno esta por ejemplo se usa mucho en los plugins para

insertar o eliminar tablas dependiendo si existe por ejemplo si existe la tabla usuarios que haga..... cualquier cosa!
Código PHP:
if($db->table_exists("users"))
{
    
//lo que sea!!!



$db->field_exists("",""); Esta funciona es para saber si existe alguna celdo dentro de la tabla por ejemplo si

existe lo de username dentro de users esto se haria asi por ejemplo si existe username dentro de users que haga... cualquier

cosa tambien jajaja
Código PHP:
if($db->field_exists("username""users"))

     
//lo que sea



shutdown_query(query, name=0); esta funciona no se como funciona si himura la a usado pido la explique!
Código PHP:
$db->shutdown_query("
                    REPLACE INTO "
.TABLE_PREFIX."forumsread (fid, uid, dateline)
                    VALUES('
{$fid}', '{$mybb->user['uid']}', '".TIME_NOW."')
                "
); 





$db->insert_query(table, array); Bueno este la usamos muchos en muchos plugins o casi en todos mas bien es para crear

configuraciones de los plugins , plantillas, etc como ejemplo les pondre como crear un prefijo de tema desde esta tipo

funcion!
Código PHP:
$crear_prefijo = array(
    
"pid"            => $pid,
    
"prefix"        => "Solucionado",
    
"displaystyle"    => "[Solucionado]",
    
"forums"        => -1,
    
"groups"        => -1
);
$db->insert_query("threadprefixes"$crear_prefijo); 

pero donde se declara $pid? bueno esto es con la funcion de abajo lo veran!



$db->insert_id(); Esto es para agregar a la base de datos como una tabla mas o una columna mas esta se hace para

cuando se inserta tablas uso el eemplo de arriba pero completo ya
Código PHP:
$crear_prefijo = array(
    
"pid"            => $pid,
    
"prefix"        => "Solucionado",
    
"displaystyle"    => "[Solucionado]",
    
"forums"        => -1,
    
"groups"        => -1
);
$pid $db->insert_id();
$db->insert_query("threadprefixes"$crear_prefijo); 






$db->insert_query_multiple(table, array); Esto es la misma de arriba de insertar esta inserta tambien pero inserta mas de una les dejo un ejemplo de como se hace
Código PHP:
$crear_prefijo = array();
$crear_prefijo[] = array(
    
"pid"            => $pid,
    
"prefix"        => "Solucionado",
    
"displaystyle"    => "[Solucionado]",
    
"forums"        => -1,
    
"groups"        => -1
);
$crear_prefijo[] = array(
    
"pid"            => $pid,
    
"prefix"        => "Aporte",
    
"displaystyle"    => "[Aporte]",
    
"forums"        => -1,
    
"groups"        => -1
);
$crear_prefijo[] = array(
    
"pid"            => $pid,
    
"prefix"        => "Ayuda",
    
"displaystyle"    => "[Ayuda]",
    
"forums"        => -1,
    
"groups"        => -1
);
$pid $db->insert_id();
$db->insert_query_multiple("threadprefixes"$crear_prefijo); 






$db->update_query($table, $array, $where="", $limit="", $no_quote=false); Este es para subir o editar las tablas de MyBB por ejemplo si en el tema 100 pusimos en el titulo "TEMA 200" y queremos editarlo lo hacemos asi con esta funcion.
Código PHP:
$nuevo_titulo = array(
    
"subject"  =>  "Tema 100"
);
$db->update_query("threads"$nuevo_titulo"tid='100'"); 
Este ejemplo es estupid pero bueno nos sirve para plantillas, configuraciones, etc como ven en la tabla threads el tema numero 100 le pone un nuebo subject (osea un nuevo titulo)




$db->delete_query($table, $where="", $limit=""); Este es para eliminar datos de la DB les dare dos ejemplos primero uno que elimine una tema con el tema SoporteMyBB (jaja) y otro que elimine un usuario con el nombre Bour Elvan:
Código PHP:
$db->delete_query("threads""subject='SoporteMyBB'");
$db->delete_query("users""username='Bour Elvan'"); 




$db->escape_string($string); Este Escapa caracteres especiales en una cadena esta antepone backslashes o como se llame (\) a ciertos caracteres como r,n,',",entre este se usa muchito en los plugins al crear plantillas cuando pones la plantillas la pones en esto.. ejemplo
Código PHP:
echo $db->escape_string('edson ordaz'); 




$db->free_result($query); Este es para liberar la memoria por ejempl para detener por ejemplo o les pondre un ejemplo
Código PHP:
$query $db->simple_select("users""username""uid='".intval($mybb->user['uid'])."'");
$MyBB_Es $db->fetch_field($query'username');
$db->free_result($query);
echo 
$MyBB_Es




$db->escape_string_like($string); Bueno este no sabia que hacia pero lei su codigo y lo entendi su funcion es un poco tonta per bueno lo que hace es que los 2 caracteres % y _ los remplaza por \\% y \\_ no necesita mas explicasion solo se usa asi
Código PHP:
echo $db->escape_string_like("100%"); 




$db->get_version(); Esta ni se usa jaja solo sirve para mostrar la version de Mysql...




$db->optimize_table($table); Este no tiene la gran funcion solo optimiza tablas de la DB les dare un ejemplo optimizare 3 tablas....
Código PHP:
$db->optimize_table("users");
$db->optimize_table("threads");
$db->optimize_table("posts"); 





$db->show_create_table($table); Este les muestra TODA LA INFORMACION de una tabla cada punto,coma te dice si algo es entero,string etc etc...
Código PHP:
echo $db->show_create_table("users"); 




$db->drop_table($table); Este elimina tablas de la DB regularmente la usamos en los plugins para cuando creamos tablas y se desactive el plugin elimine la tabla aqui les dejo un ejemplo de eliminar la tabla usuarios
Código PHP:
$db->drop_table("users"); 




$db->replace_query($table, $replacements=array()); Este remplaza algun dato de alguna celda de la Dno les pongo ejemplos es igual casi al simple_select




$db->add_column($table, $column, $definition); Esta agrega columnas a una tabla por ejemplo en users agregare visitas lo haria asi:
Código PHP:
$db->add_column("users""visitas""INT(10) NOT NULL DEFAULT '0'"); 



$db->rename_column($table, $old_column, $new_column, $new_definition); Esta renombra columnas editaremos aorita la columna que creamos arriva de visitas a visitadores..
Código PHP:
$db->rename_column("users""visitas""visitadores""INT(10) NOT NULL DEFAULT '0'"); 



$db->drop_column($table, $column) Esta es para eleminar columnas de la db por ejemplo ahora eliminaremos la columna que modificamos
Código PHP:
drop_column('users''visitadores'); 







Estas son todas las que me se y todavia faltan como unas 10 pero que no sirven casi para nada o mas bien ni se usan....
PD: Fue muy tedioso escribir todo esto me lleve mas de una hora espero lo agradescan minimo.... Big Grin saludos!
PD2: Si tienen dudas pregunten Wink
muy bonito el tuto y bien elaborado
:)
(17 May, 2011, 5:06 pm)Solstice escribió: muy bonito el tuto y bien elaborado

gracias te apuesto a que no conosias todas......
$db->replace_query($table, $replacements=array());
$db->free_result($query);
$db->num_rows(""); y muchas mas no las conocia
:)
no avia leido el tema....
conosco varias mas no todas yo casi siempre uso esta
$db->query();
Porque no la recomienda edson??, deve ser porque esta consulta es solamente para las bases de datos mysql independiente si usan la extencion mysqli o mysql,
en cambio por ejemplo leer
$db->simple_select()
actualizar con
$db->update_query()
guardar con
$db->insert_query()
etc...
es compatible con todos los motores de base de datos que soporta mybb, eso creo...
no a ti no no se la recomiendo a los que empiezan ya que tienen que saber si poner UPDATE, DELETE, SHOW TABLES, SET NAMES, SHOW COLUMS, SELECT, INSERT, UPDATE, DELETE, OPTIMIZE, ANALYZE, SHOW CREATE, SHOW FIELDS, ALTER TABLE, DROP TABLE, REPLACE, etc etc etc que hay de hecho todo podria ser desde un query pero no se los recomiendo a ellos que van a empezando ya que con query no cmbia solo lo primero si no todo y como se las explico son como unicas para eso y mas fcail de un lado pones tabla de otro nombre de ciolumna, celda, etc ati pues da = lo que te recomiende tu sabes hacerlo com sea!!
antes cuando leia los plugins y no entendia mucho usaba esas, pero varias veces me daban error, y como sabia menos, no podia identificar el error..., y el dueño del cyber me paso un libro de php, alfinal venia trabajar con bases de datos mysql, asique asi aprendi a usar esa funcion, y empece a aplicarla en mybb, no se si se acuerdan por hay un plugin que postie a algunos no les creaba los ajustes, yo no entendia porque xd, leia el codigo y no encontraba errores, mas tarde lo supe, $db-> no mysql_ o mysqli_ xd, algo tan simple puede causar tantos lios yo usaba la extencion mysqli osea tenia my consulta
mysqli_query();
pero ellos usaban mysql
osea devio ser asi
mysql_query();
ahora se $db->query();
se cambiara por la que corresponda xd...
claro y me se casi todas las consultas pero como estan en ingles me equivoco en la sintaxis y mejor copiuo el texto
Código PHP:
$db->table_exists(""

si se utiliza en plugins. se utiliza cuando por ejemplo

le dices activate o algo asi

if(!$db->table_exists("tabla"))

algo asi va el codigo

echo "error no existe la tabla para activar la tabla"

creo que lo puse bien xD

Bueno te va rep por todas creo que me sera mas facil crear cosas

PD: en esto

Código PHP:
echo $db->escape_string('edson ordaz'); 

aqui se crea una plantilla en globales llamada Edson Piruja?

o se crea en las plantillas del tema?

y para agregar datos a la plantilla como se le aria?