Y me da este error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNSIGNED AUTO_INCREMENT,)' at line 1
Eso es porque te sobra una coma:
CREATE TABLE PUNTUACIONES (puntuacion_id INT(11) NOT NULL UNSIGNED AUTO_INCREMENT[COLOR="#FF0000"],[/COLOR]);
Pero luego como sabe la tabla que celda será el 1º y cual la 2º?
La tabla no hará el trabajo por si sola, pues de hecho, lo que quieres tiene que ver con la presentación nada más y por ende se lograría a través de la lógica de los scripts al momento de extraer datos. Con la tabla que intentas crear no lo podrás hacer, porque existe un único valor y no habría forma de saberlo, por eso necesitas otra columna que lleve la puntuación:
puntuaciones (puntuación máxima: 15)
puntuacion_id | puntuacion
1 | 5
2 | 3
3 | 10
4 | 15
5 | 8
Y así sucesivamente. En este caso no se esta puntuando nada porque no hay una relación con ningún otro dato.
Suponiendo que quisieras puntuar una categoría, entonces necesitarías 2 tablas:
CREATE TABLE categoria (
categoria_id INT(11) NOT NULL UNSIGNED AUTO_INCREMENT PRIMARY KEY,
categoria_nombre VARCHAR(200) NOT NULL
) ENGINE=InnoDB CHARSET=utf8;
CREATE TABLE puntuacion (
puntuacion_id INT(11) NOT NULL UNSIGNED AUTO_INCREMENT PRIMARY KEY,
puntos INT(2) NOT NULL,
categoria_id INT(11) NOT NULL UNSIGNED
) ENGINE=InnoDB CHARSET=utf8;
ALTER TABLE puntuacion ADD CONSTRAINT fk_puntuacion_ref_categoria FOREIGN KEY (categoria_id) REFERENCES categoria (categoria_id) ON DELETE CASCADE ON UPDATE CASCADE;
Esa sería una estructura para las tablas. Luego, para insertar los datos en la categoría:
INSERT INTO categoria (categoria_nombre) VALUES ('categoria1'); # y así sucesivamente
Ahora, para insertar los datos en la tabla puntuacion, primero necesitas saber el ID de la categoría que quieres puntuar:
SELECT categoria_id FROM categoria WHERE categoria_nombre = 'categoria1'; # devolverá el ID de la misma
INSERT INTO puntuacion (puntos, categoria_id) VALUES (5, id_devuelto_consulta_anterior);
Para leer los datos cuando hay tablas cruzadas se utiliza JOIN. Join sirve para entrelazar los datos y, dependiendo del tipo de Join, se devolverán los datos repetidos o no:
SELECT * FROM puntuacion
LEFT JOIN categoria
USING (categoria_id);
Para seleccionar la puntuación de una categoría específica es similar a lo anterior, solo tendrías que añadir un WHERE:
SELECT * FROM puntuacion
LEFT JOIN categoria
USING (categoria_id)
WHERE cateogira_nombre = 'categoria_tanto';
Y por último, para ordenar las categorías de forma ascendente (o descendente; como quieras :P):
SELECT * FROM puntuacion
LEFT JOIN categoria
USING (categoria_id)
ORDER BY puntos ASC|DESC; # Elige ASC para ascendente o DESC para lo contrario y elimina el |
Respecto a MySQLi, entiendo que tengo que cambiar todas las páginas para que no me salga error, ¿no? Vamos que si todo lo hago en MySQL y hago una consulta con los comandos de MySQLi, me dará error. Voy a repasar lo que has puesto a ver si soy capaz de pasar todo el codigo a MySQLi sin muchos problemas.
Si no había error antes, entonces debería funcionar igual, pero como dice el manual de PHP, la extensión MySQL esta desaconsejada.
Una ultima cosa, a la hora de hacer tablas, uso lo que se explica en el curso, pero solo se explica como asignar un color a las tablas. Yo quisiera que un campo tuviera un color y otro campo otro, y aparte poder cambiar el color y tamaño del texto de la tabla. ¿Como puedo lograrlo en PHP?
Lo que siempre se recomienda es no poner código CSS (<div
style=""></div> o <font></font> ni <color></color>) o estilos directamente en HTML porque después es MUY difícil de modificar. Vamos por pasos:
Yo quisiera que un campo tuviera un color y otro campo otro
Eso es fácil de hacer con CSS (si es que quieres modificar las filas, no las columnas). Dale una clase a tu(s) tablas:
<table class='mi-tabla'></table>
Luego, en una hoja de estilos, escribe esto:
table.mi-tabla tr:nth-child(odd) { /* tr:nth-child(odd) es para las tablas impares (odd) */
background-color: #fff; /* color de fondo blanco */
color: lightSkyBlue; /* Color de letra celeste (algún tono de celeste :P) */
}
table.mi-tabla tr:nth-child(even) { /* esto es para las tablas pares (even)
/* tus estilos */
}
Para cambiar el tamaño de la letra es simple. Utilizando la misma clase anterior:
table.mi-tabla {
font-size: 1.3em; /* tamaño de letra; en lugar de em (tamaño relativo a la letra 'm') puede ser px (pixeles), % (porcentaje), ex (tamaño relativo a la letra 'x'), pt (puntos o points, que se utilizan más que nada en las plantillas de impresión) o cm (centímetros) */
}
Eso es todo creo :P.
Saludos.