Recordemos un poco de SQl.
Las sentencias SQL pertenecen a dos categorías principales: Lenguaje de Definición de Datos, DDL y Lenguaje de Manipulación de Datos, DML. La diferencia principal reside en que el DDL crea objetos en la base de datos y sus efectos se pueden ver en el diccionario de la base de datos; mientras que el DML es el que permite consultar, insertar, modificar y eliminar la información almacenada en los objetos de la base de datos.
Sentencia DDL
Alter procedure:
Recompilar un procedimiento almacenado.
Alter Table:
Añadir o redefinir una columna, modificar la asignación
de almacenamiento.
Analyze:
Recoger estadísticas de rendimiento sobre los objetos de la
BD para utilizarlas en el optimizador basado en costes.
Create Table:
Crear una tabla.
Create Index:
Crear un índice.
Drop Table:
Eliminar una tabla.
Drop Index:
Eliminar un índice.
Grant:
Conceder privilegios o papeles, roles, a un usuario o a otro rol.
Truncate:
Eliminar todas las filas de una tabla.
Revoke:
Retirar los privilegios de un usuario o rol de la base de datos.
Sentencia DML
Insert:
Añadir filas de datos a una tabla.
Delete:
Eliminar filas de datos de una tabla.
Update:
Modificar los datos de una tabla.
Select:
Recuperar datos de una tabla.
Commit:
Confirmar como permamentes las modificaciones realizadas.
Rollback:
Deshacer todas las modificaciones realizadas desde la última
confirmación.
miércoles, 10 de enero de 2007
martes, 9 de enero de 2007
Tablas y Campos
Quieres crear una tabla sin preocuparte de la cantidad de campos que tienes en la base de datos????
Este programita, lista en una tabla html todos los registros que existen en una tabla de la base de datos, lo entretenido es que no se especifican manualmente los campos a mostrar.
Esto gracias a la sentencia "SHOW COLUMNS FROM DATOS" que devuelve un arreglo con los nombres de los campos que existen en la tabla DATOS.
Debes crear tu código de coneccion "Conect_bd"
Mejoras:
- Existe también la sentencia "SHOW TABLES FROM BASEDATOS" que devuelve un arreglo con los nombres de las tablas dentro de una base de datos.
El código es el siguiente:
< ?php
include("conect_bd.php");
$link= conectarse();
?>
< table border ="1">
< tbody>
< ?php
$query1="select * from datos";
$result1= mysql_query($query1, $link);
while ($rw1=mysql_fetch_array($result1))
{
echo "< tr>";
$query2="show columns from datos";
$result2= mysql_query($query2, $link);
while ($rw2=@mysql_fetch_array($result2))
{
$valor= $rw1[$rw2[0]];
echo "< td>".$valor."< /td>";
}
echo "< /tr>";
}
?>
< /tbody>
< /table>
Este programita, lista en una tabla html todos los registros que existen en una tabla de la base de datos, lo entretenido es que no se especifican manualmente los campos a mostrar.
Esto gracias a la sentencia "SHOW COLUMNS FROM DATOS" que devuelve un arreglo con los nombres de los campos que existen en la tabla DATOS.
Debes crear tu código de coneccion "Conect_bd"
Mejoras:
- Existe también la sentencia "SHOW TABLES FROM BASEDATOS" que devuelve un arreglo con los nombres de las tablas dentro de una base de datos.
El código es el siguiente:
< ?php
include("conect_bd.php");
$link= conectarse();
?>
< table border ="1">
< tbody>
< ?php
$query1="select * from datos";
$result1= mysql_query($query1, $link);
while ($rw1=mysql_fetch_array($result1))
{
echo "< tr>";
$query2="show columns from datos";
$result2= mysql_query($query2, $link);
while ($rw2=@mysql_fetch_array($result2))
{
$valor= $rw1[$rw2[0]];
echo "< td>".$valor."< /td>";
}
echo "< /tr>";
}
?>
< /tbody>
< /table>
Reportes con PHP
Hola, aqui les muestro una solucion muy elegante que encontre, para crear reportes.
La solución que propongo necesita la creacion de un documento RTF, ¿como lo creas?. Bueno, en una hoja de Word, escribes lo siguiente:
Hola: #*NOMBRE*#
Tu mail es el siguiente: #*MAIL*#
Al guardar, cambias el tipo de documento, por RTF y listo.
"SE ESCRIBEN DE ESTA FORMA #*NOMBRE*#, PARA SABER EN QUE LUGAR SE ESCRIBIRÁ EL CONTENIDO DE LA BASE DE DATOS"
Despues creas una BD "DocuBD" para este caso.
Una tabla "Usuarios"
2 campos "nombre y mail"
Tambien puedes insertar algunos registros para probar la solución
El código es el siguiente:
< ?php
function leef($fichero)
{
$texto= file($fichero);
$tamleef = sizeof($texto);
for ($n=0; $n<$tamleef;$n++)
{ $todo = $todo.$texto[$n];}
return $todo;
}
function rtf($sql, $plantilla, $fsalida, $matequivalencias)
{
$pre=time();
//de esta forma no se sobrescriben los documentos
$fsalida=$pre.$fsalida;
$link=mysql_connect('localhost','root','');
$txtplantilla=leef($plantilla);
$matriz=explode("sectd",$txtplantilla);
$cabecera=$matriz[0]."sectd";
$inicio=strlen($cabecera);
$final=strrpos($txtplantilla,"}");
$largo=$final-$inicio;
$cuerpo=substr($txtplantilla,$inicio,$largo);
$punt = fopen($fsalida ,"w");
fputs($punt,$cabecera);
mysql_select_db("docubd",$link);
$result=mysql_query($sql,$link);
while($row=mysql_fetch_array($result))
{
$despues=$cuerpo;
foreach($matequivalencias as $dato)
{
$datosql=$row[$dato[1]];
$datosql=stripslashes($datosql);
$datortf=$dato[0];
$despues=str_replace($datortf,$datosql,$despues);
}
fputs($punt,$despues);
$saltopag="\par \page \par";
fputs($punt,$saltopag);
}
fputs($punt,"}");
fclose($punt);
return $fsalida;
}
$plantilla="docu.rtf";
$sql = "SELECT nombre,mail FROM usuarios ORDER BY nombre";
$equivalencia[0][0]="#*NOMBRE*#";
$equivalencia[0][1]="nombre"; // ojo, cuidado, este valor es el nombre del campo en la base
$equivalencia[1][0]="#*MAIL*#";
$equivalencia[1][1]="mail"; //este también
$salida=rtf($sql,$plantilla,"certificado.rtf",$equivalencia);
echo "tus reportes fueron exitosamente creados";
?>
La solución que propongo necesita la creacion de un documento RTF, ¿como lo creas?. Bueno, en una hoja de Word, escribes lo siguiente:
Hola: #*NOMBRE*#
Tu mail es el siguiente: #*MAIL*#
Al guardar, cambias el tipo de documento, por RTF y listo.
"SE ESCRIBEN DE ESTA FORMA #*NOMBRE*#, PARA SABER EN QUE LUGAR SE ESCRIBIRÁ EL CONTENIDO DE LA BASE DE DATOS"
Despues creas una BD "DocuBD" para este caso.
Una tabla "Usuarios"
2 campos "nombre y mail"
Tambien puedes insertar algunos registros para probar la solución
El código es el siguiente:
< ?php
function leef($fichero)
{
$texto= file($fichero);
$tamleef = sizeof($texto);
for ($n=0; $n<$tamleef;$n++)
{ $todo = $todo.$texto[$n];}
return $todo;
}
function rtf($sql, $plantilla, $fsalida, $matequivalencias)
{
$pre=time();
//de esta forma no se sobrescriben los documentos
$fsalida=$pre.$fsalida;
$link=mysql_connect('localhost','root','');
$txtplantilla=leef($plantilla);
$matriz=explode("sectd",$txtplantilla);
$cabecera=$matriz[0]."sectd";
$inicio=strlen($cabecera);
$final=strrpos($txtplantilla,"}");
$largo=$final-$inicio;
$cuerpo=substr($txtplantilla,$inicio,$largo);
$punt = fopen($fsalida ,"w");
fputs($punt,$cabecera);
mysql_select_db("docubd",$link);
$result=mysql_query($sql,$link);
while($row=mysql_fetch_array($result))
{
$despues=$cuerpo;
foreach($matequivalencias as $dato)
{
$datosql=$row[$dato[1]];
$datosql=stripslashes($datosql);
$datortf=$dato[0];
$despues=str_replace($datortf,$datosql,$despues);
}
fputs($punt,$despues);
$saltopag="\par \page \par";
fputs($punt,$saltopag);
}
fputs($punt,"}");
fclose($punt);
return $fsalida;
}
$plantilla="docu.rtf";
$sql = "SELECT nombre,mail FROM usuarios ORDER BY nombre";
$equivalencia[0][0]="#*NOMBRE*#";
$equivalencia[0][1]="nombre"; // ojo, cuidado, este valor es el nombre del campo en la base
$equivalencia[1][0]="#*MAIL*#";
$equivalencia[1][1]="mail"; //este también
$salida=rtf($sql,$plantilla,"certificado.rtf",$equivalencia);
echo "tus reportes fueron exitosamente creados";
?>
lunes, 8 de enero de 2007
EXCEL Y PHP
El siguiente código PHP, nos permite conectar una planilla de calculo excel, a un servidor de datos como MySQL, específicamente, "tomar una planilla Excel, y cargarla en una base de datos".
Recomendaciones:
Crear una base de datos, con 1 tabla. (datos).
Crea en la tabla 3 campos (c1, c2, c3).
Crear un archivo excel, con 3 columnas, y todas las filas que guste.
Crear un archivo PHP, que pida el ingreso de un archivo.
Ej:
< type="file" name= "cualquiera">
Descargar Reader.php y Oleread.inc
Crear un archivo de conección Conect_bd.php
Ej:
< ?php function Conectarse()
{
if (!($link=mysql_connect("localhost","root","")))
{
exit();
}
if (!mysql_select_db("base_prueba",$link))
{
exit();
}
return $link;
}
?>
El código es el siguiente:
< ?php
//elimina el error de tiempo de 30 segundos del browser
//solución para planillas excel gigantescas.
set_time_limit(0);
// conección a la base de datos
include ("conect_bd.php");
$link =Conectarse();
//conección a excel
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->setUTFEncoder('mb');
$archivo = $_FILES["ruta"]["name"]; //rescatar el archivo < type=" file">
$data->read($archivo);
error_reporting(E_ALL ^ E_NOTICE);
?>
< table border ="1">
< tbody>
< ?php //la tabla se crea solo para visualizar la solución.
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
echo "< tr>";
$sw=0;
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
$valor = $data->sheets[0]['cells'][$i][$j];
if (!$valor) {$valor="-";}
echo "< td>".$valor."< /td>";
if ($sw == 0){
$query= mysql_query("insert into `datos`(`c1`) values ('$valor');", $link);
$sw=1;
$primer= $valor;
}
elseif ($sw == 1){
$query= mysql_query("UPDATE datos SET c2='$valor' where c1= $primer;", $link);
$sw=2;
}
elseif ($sw==2) {
$query= mysql_query("UPDATE datos SET c3='$valor' where c1= $primer;", $link);
}
}
echo "< /tr>";
}
?>
< /tbody >
< /table >
Recomendaciones:
Crear una base de datos, con 1 tabla. (datos).
Crea en la tabla 3 campos (c1, c2, c3).
Crear un archivo excel, con 3 columnas, y todas las filas que guste.
Crear un archivo PHP, que pida el ingreso de un archivo.
Ej:
< type="file" name= "cualquiera">
Descargar Reader.php y Oleread.inc
Crear un archivo de conección Conect_bd.php
Ej:
< ?php function Conectarse()
{
if (!($link=mysql_connect("localhost","root","")))
{
exit();
}
if (!mysql_select_db("base_prueba",$link))
{
exit();
}
return $link;
}
?>
El código es el siguiente:
< ?php
//elimina el error de tiempo de 30 segundos del browser
//solución para planillas excel gigantescas.
set_time_limit(0);
// conección a la base de datos
include ("conect_bd.php");
$link =Conectarse();
//conección a excel
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->setUTFEncoder('mb');
$archivo = $_FILES["ruta"]["name"]; //rescatar el archivo < type=" file">
$data->read($archivo);
error_reporting(E_ALL ^ E_NOTICE);
?>
< table border ="1">
< tbody>
< ?php //la tabla se crea solo para visualizar la solución.
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
echo "< tr>";
$sw=0;
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
$valor = $data->sheets[0]['cells'][$i][$j];
if (!$valor) {$valor="-";}
echo "< td>".$valor."< /td>";
if ($sw == 0){
$query= mysql_query("insert into `datos`(`c1`) values ('$valor');", $link);
$sw=1;
$primer= $valor;
}
elseif ($sw == 1){
$query= mysql_query("UPDATE datos SET c2='$valor' where c1= $primer;", $link);
$sw=2;
}
elseif ($sw==2) {
$query= mysql_query("UPDATE datos SET c3='$valor' where c1= $primer;", $link);
}
}
echo "< /tr>";
}
?>
< /tbody >
< /table >
jueves, 4 de enero de 2007
saludos
Hola a todos....
Estoy creando mi blog.
Este espacio lo dedicare a mostrar soluciones en el área de la programación, si quieren pueden hacer preguntas.
ojala que les guste.
los lenguajes que manejo:
Pascal, C, Visual Basic, HTML, PHP, Javascript, SQL, también un poco de CSS, Cobol, Java.
Ok, solo pregunten, y comenten
saludos
Estoy creando mi blog.
Este espacio lo dedicare a mostrar soluciones en el área de la programación, si quieren pueden hacer preguntas.
ojala que les guste.
los lenguajes que manejo:
Pascal, C, Visual Basic, HTML, PHP, Javascript, SQL, también un poco de CSS, Cobol, Java.
Ok, solo pregunten, y comenten
saludos
Suscribirse a:
Entradas (Atom)