Tutorial, uso de php con las bases de datos...

Iniciado por programatrix, 4 Febrero 2006, 13:58 PM

0 Miembros y 1 Visitante están viendo este tema.

programatrix

Bueno, pues estaba un poquito aburrido aqui y me he decidido a poner un tutorial de como escribir datos dentro de una bd con php, leerlos, borrar tablas etc...
Lo primero, aunque esto viene ya preparado en los hoting hay que saber 4 datos basicos:
CitarHost: Normalmente es localhost es el servidor al que nos conectamos.
Usuario: El nombre de usuario para acceder a la bd.
Password: La contraseña de ese usuario.
BD Es la base de dato donde se encuentran los datos adonde queremos acceder. En los hosting normalmente un usuario tiene acceso a una sola bd.
Una vez puestos estos datos vemos si va bien las conexiones:
La orden mysql_connect, permite conectarse a un servidor de bases de datos y logearse.
La variable $co, marca que con esa variable de conexion vamos a enviar instrucciones y demas.
Luego con la instruccion mysql_select_db seleccionamos la bd a partir de abernos conectado con la variable $co.

<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
?>


La instruccion or die, permite en caso de fallo de la sentencia mostrar un error, no todas las sentencias pueden usar or die. Me acuerdo que puse un or die en un include, me volvi loco  ;D.
La filosofia de una tabla en la bd es la siguiente.
Tenemos por ejemplo una tabla llamada estadisticas, y con los campos equipo|goles|posicion
Y se podria representar asi:
Citar
Tabla virtual:
Equipo    |    Goles       |      Posicion
Real.M          20                      1
Barsa            10                     3
Atletic            15                     2

Ahora estan las ordenes en mysql para coger esos datos. Tienen la siguiente sintaxis.
CitarSeleccioname dato delatabla tabla donde undatodeesatabla = 'datodelusuario'
Esto es como sería asi hablado, para que se entienda pero la sentencia como la escribimos es:
SELECT dato FROM tabla WHERE dato='datodelusuario'
La sentencia WHERE es opcional.
Para enviar estas ordenes se usa:
mysql_query, esta funcion manda una orden a una bd, en base a  una conexion. La repuesta se guarda en una variable, que se transforma en un array, un ejemplo de como podemos nosotros coger un dato de la bd, un dato sin tener en cuenta de algo que el usuario haya seleccionado.

<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$dato mysql_query("SELECT Posicion FROM estadisticas",$co);
if(
mysql_num_rows($dato)){
//Primero se comprueva si el dato existe, de existir le sacamos
$dato mysql_fetch_array($dato); //Esta funcion nos permite sacar el dato, en forma de array, dato[0] muestra el primero que haya encontrado en la bd, esto es solo util si hay solo un dato
$dato[0] = htmlspecialchars($dato[0]); //Lo vamos a mostrar y por seguridad lo limpiamos, no vaya a ser que haya una vulnerabiliad XSS.
$dato $dato[0]; //pasamos la variable dato[0] a otra que es un array, yo lo hago para que se mas facil el trabajo, vosotros podeis hacer lo que querais.
echo 'El dato sacado es '.$dato;
}else{
echo 
'No se puedo sacar el dato de la bd';
}
?>
                   

Esto nos permite sacar un dato, la sentencia de antes se usa normalmente cuando hay que sacar muchos datos.
CitarSELECT * FROM tabla
Cuando queremos sacar solo uno, que por ejemplo nos muestre, cual equipo esta en la 3º posicion, usamos esto, con la instruccion WHERE:
<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$dato mysql_query("SELECT Equipo FROM estadistica WHERE posicion='3'",$co);
if(
mysql_num_rows($dato)){
//Primero se comprueva si el dato existe, de existir le sacamos
$dato mysql_fetch_array($dato); //Esta funcion nos permite sacar el dato, en forma de array, dato[0] muestra el primero que haya encontrado en la bd, esto es solo util si hay solo un dato
$dato[0] = htmlspecialchars($dato[0]); //Lo vamos a mostrar y por seguridad lo limpiamos, no vaya a ser que haya una vulnerabiliad XSS.
$dato $dato[0]; //pasamos la variable dato[0] a otra que es un array, yo lo hago para que se mas facil el trabajo, vosotros podeis hacer lo que querais.
echo 'El tercer equipo es: '.$dato;
}else{
echo 
'No se puedo sacar el dato de la bd, posiblemente no existe';
}
?>


Ahora si nosotros queremos sacar los datos de la bd, todos pero sin ningun orden, podemos usar:
<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$lista mysql_query("SELECT * FROM estadisticas",$co); //El * sirve para acceder a todo tipo de datos dentro de esa tabla
while ($listando mysql_fetch_array($lista)) {
echo 
'Equipo: '.$listando["Equipo"].', '.'Goles: '.$listando["Goles"].', '.'Posicion: '.$listando["Posicion"];
}
?>


Aunque si ademas, quieres que los datos te salgan ordenados, puedes:
<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$lista mysql_query("SELECT * FROM estadisticas ORDER BY 'Posicion' DESC",$co); //El * sirve para acceder a todo tipo de datos dentro de esa tabla, ahora estan los datos ordenados
while ($listando mysql_fetch_array($lista)) {
echo 
'Equipo: '.$listando["Equipo"].', '.'Goles: '.$listando["Goles"].', '.'Posicion: '.$listando["Posicion"];
}
?>

Se puede hacer lo mimo, pero en vez de poner DESC puedes poner ASC.
Ahora, si quieres grabar datos en una base de datos, se puede hacer:
<?php
//Estos datos son enviamos por un formulario, damos poor hecho que sabe hacer formularios
$co mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$equipo $_POST["equipo"];
$goles $_POST["goles"];
$posicion $_POST["posicion"];
$guardarficha mysql_query("INSERT INTO N_noticias (Equipo,Goles,Posicion) VALUES ('$equipo','$goles',$posicion')",$co) or die (mysql_error());
Echo 
'Datos agregados con exito';
?>


Siempre hay que tener cuidado con estas ordenes que van a la bd, entre otras cosas porque, con pueden producirse mysql inyection.
Ahora vamos a crear una tabla, la tabla con la que hemos hecho todos estos ejemplos:

<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$creartabla mysql_query("CREATE TABLE estadisticas(
Equipo TEXT NOT NULL,
Goles INT(2) NOT NULL,
Posicion INT(2) NOT NULL
);"
)or die(mysql_error());
echo 
'Tabal creada:';
?>


Tambien, podemos cambiar un dato por otro:

<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$goles $_POST["goles"];
$cambiar mysql_query("Update estadisticas Set  Goles='$goles' Where Equipo='Real.M'",$co) or die (mensaje(mysql_error()));
echo 
'Ficha cambiada';
?>


Y tambien podemos borrar un dato de nuestra bd:

<?php
$co 
mysql_connect("localhost""usuario""contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$eliminar mysql_query("DELETE FROM `estadisticas` WHERE Equipo='atletic'",$co);
echo 
'Ficha borrada con exito';
?>


Vaciar el contenido entero de una tabla:

$co = mysql_connect("localhost", "usuario", "contraseña") or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$eliminartabla0 = mysql_query("DELETE FROM `estadisticas`");
echo 'Tabla vaciada';
?>

Importante no confundir DELETE con DROP delete es para vaciar una tabla y drop es para borrarla, ejemplo de borrar una tabla:

$co = mysql_connect("localhost", "usuario", "contraseña) or die("Error a conectar al host"); //Conectamos a la bd con el host, usuario y contraseña.
mysql_select_db("mybd",$co) or die("Error al abrir bd");
$eliminartabla0 = mysql_query("DROP TABLE `estadisticas`");
echo 'Tabla borrada';
?>

A lo mejor despues de este tutorial esto de las bases de datos hos puede parecer una tonteria..., y no lo es actualmente en internet muchisimas cosas de almazenar informacion se hace en las bases de datos.
Para que veais un ejemplo de una base de datos, aqui en el smf:
Si nosotros, los usuarios normales (en cualquier foro smf), tenemos el numero 1 (no se cual tenemos). Y imaginaros que el 5 es el admin, pues con modificar un numero podríamos tener un acceso total al sistema. Mientras que con el 1 somo usuarios normales. ¿fascinante el poder que tienen, no??
Bueno, dicho esto me despido de todos vosotros, me he entretenido un rato escribiendo esto..., podeis hacer lo que hos de la gana con este tutorial, pero por favor me gustaría mucho que si le copiais que pusiera mi nombre en el  ;D
Y lo mas importante, no he verificado que las sentencias esten bien, las he cogido de varios de mis sistemas que estan construidos o en proceso de contruccion. Aqui que con cualquier fallo ponedlo.., faltas de ortografia (no creo que le haga gracia a Ertai)  ;D, criticas, fallos ponedlo.
Y sobre todo admito que me pongais felicitaciones por el tutorial  ;D
Sin mas, me despido de quien me este leyendo y hasta otra que este aburrido y me de por escribir  :D
Saludos a todos  :rolleyes:

programatrix


JorgeEMX

Fenomenal XD..

Apenas entro de paso en este tema y con esto estaré probando..

Sin mas que decir lo checaré por la madrugada XD (otra noche sin dormir)..

Saludos!!