miércoles, 4 de junio de 2014

PROYECTO Creación de un Chat. Parte II: Actualización de Datos desde PHP

Antes de nada os mando a la primera parte por si os la habeis perdido. En ella muestro como crear el Host Gratuito y la Base de Datos:

Parte 1: Creación de Base de Datos MySQL
Parte 3: Petición de datos desde PHP a MySQL

Bueno, pues hoy tocaremos algo de PHP así por encima. Tampoco es nada demasiado complejo e intentaré explicarlo bien. Si nunca habeis programado en PHP yo os recomendaría el notepad++ que es gratuito.

Antes de nada os explicaré un pequeño detalle que me ha tenido comiendome el coco un buen rato. En PHP las Strings se pueden definir con comillas dobles ("hola") o comillas simples('hola').
La diferencia es (si me equivoco avisadme ;) ) que lo que pongas en las comillas simples va tal cual, mientras que con las comillas dobles puedes meter etiquetas como <br> (un salto de línea en  html ) o \n (un salto de linea de String). Además muchas veces uso las dobles cuando necesito usar una string que tenga comillas simples dentro (para sentencias SQL).

Ahora sí, he aquí mi código:

<html>
 <?php 
 
// Creo las variables y las defino. No es necesario poner el tipo
$Nick    = 'yo';
  $ip     = $_SERVER['REMOTE_ADDR'];
  $server  = 'mysql.hostinger.es';
  $usuario = 'nombreDeUsuarioDeMiBD';
  $pass  = 'password';
  $BD  = 'NombreDeLaBD';
  
//Conecto con la BD
$link = mysql_connect($server, $usuario, $pass);
  mysql_select_db($BD, $link);

  //Creo las sentencias que vaya a utilizar
  $inser = "Insert Into Usuario Values ('".$nick."', '".$ip."')";
  $inser2 = "INSERT INTO Usuario (Nick, IP) VALUES ('".$nick."', '".$ip."') ON DUPLICATE KEY UPDATE IP= '".$ip."'";

  //Envio la sentencia
mysql_query($inser2, $link); 
  mysql_close($link); // Cerramos la conexion con la base de datos 
  
  
 ?>
</html>
NOTAS:
-Las variables llevan siempre el símbolo $ delante.
-Para concatenar Strings en PHP se usa el punto.
-Podeis ver como en $inser y $inser2 uso las comillas dobles porque los valores en SQL deben ir entre comilas simples.
-Como veis hay dos sentencias. La primera ($inser) es la que usaba, pero si un Nick ya existía no me lo reemplazaba, por lo que busqué como solución la segunda.
-La IP se calcula directamente y mete la que estamos usando en ese momento.

Este archivo deberéis guardarlo con nombre userReg.php (en realidad el nombre es irrelevante, pero es el que yo uso y así os evitais comederos de cabeza innecesarios :p).

Os acordais en la entrada anterior que marqué un cuadro llamado 'Administrador de Archivos'? Ahí subiremos el archivo que acabamos de crear. Para ejecutarlo nos vamos a nuestro navegador y escribimos la dirección de nuestro host (la que pusimos al crear el nuevo Hosting gratuito). Supongamos que era "pruebasdephp.hol.es". En este caso iriamos al navegador y pondríamos "pruebasdephp.hol.es/userReg.php".


Esto ejecutaría nuestro php (no os dije que la única forma de ejecutar un programa php era subiendolo a un servidor? :P) y en principio nos aparecería la página en blanco (pues no le hemos dicho que nos imprima nada) pero en nuestra base de datos si nos metemos debería estar el resultado.

En mi caso tengo más entradas, pero como tienen IP verdaderas no las voy a mostrar :P

Ahora bien, os voy a enseñar a pasar datos desde el exterior a PHP. Para ello cambiaremos la definición de Nick a la siguiente:
$Nick    = $_GET['nick'];

Resubimos el nuevo archivo modificado al servidor y ahora entraremos a la url de la siguiente forma:
"pruebasdephp.hol.es/userReg.php?nick=holaa" (sin las comillas).

Os explico, al decirle a $Nick que es $_GET['nick] le estamos diciendo que su resultado lo tomará de la url. Luego en la url ponemos una interrogación (esto le dice que van a aparecer las variables) y ponemos nick=holaa, ergo el valor de nick será 'holaa' y te guardará un usuario holaa con tu IP.
Si por algún caso no saliera prueba a borrar de la tabla el que creamos antes. Puede que tengas un conflicto al ser las dos IPs las mismas (Aunque en principio no debería de dar problemas).

Al fin acabo. Esta entrada es muy espesa, tiene mucho contenido y (si no sabes nada de PHP) vas a tener que leértela  un par de veces. Cualquier duda comentadla, estaré encantado de resolverlas.

Saludos y Gracias ;)

No hay comentarios:

Publicar un comentario