Foros del Web » Programando para Internet » PHP »

secciones en mysql en una tabla

Estas en el tema de secciones en mysql en una tabla en el foro de PHP en Foros del Web. desde hace como 2 meses estoy buscando la forma de crear las secciones de mi web en base de datos. bueno yo utlizo un sistema ...
  #1 (permalink)  
Antiguo 17/05/2003, 22:30
 
Fecha de Ingreso: abril-2002
Ubicación: las condes
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 1
secciones en mysql en una tabla

desde hace como 2 meses estoy buscando la forma de crear las secciones de mi web en base de datos.

bueno yo utlizo un sistema de articulos en mysql que consta de 2 archivos

index.php ( donde se listan los articulos)
ver.php( donde se muestra la informacion extendida) en realidad se veria asi ver.php?id=17

y e visto sitios web que utilizan algo asi
index.php?categoria=1 y despues creo que viene algo asi ç
index.php?categoria=1?musica=17

o algo por el estilo bueno abajo les dejo la forma de la tabla por si alguien me puede indicar como se hace

Tabla mysql:
CREATE TABLE articulos_colegio (
id int(11) NOT NULL auto_increment,
titulo varchar(100) NOT NULL default '',
articulo longtext NOT NULL,
autor varchar(50) NOT NULL default 'Anónimo',
email varchar(200) NOT NULL default '',
web varchar(255) NOT NULL default '',
mostrar enum('0','1') NOT NULL default '0',
id_pub int(11) NOT NULL default '0',
imagen varchar(200) NOT NULL default '',
breve_texto longtext NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;

bueno espero que alguien me de la respuesta y me ponga el codigo en un post más abajo y yo le pondre un banner publicitario en mi web gratis ok

es la unica forma de pago que tengo hasta el momento

un saludo a todos
Juan pablo
__________________
Juan Pablo Sánchez
  #2 (permalink)  
Antiguo 18/05/2003, 00:19
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
bueno lo que tienes que hacer es "arreglar" tu codigo en un solo archivo, de tal manera que pueda analizar los parametros que se envian y asi llamar una u otra cosa segun sea el caso.

por ejemplo yo lo hago asi (en resumen):

en index.php

hago una funcion para mostrar por ejemplo el listado de los articulos publicados, ahora si yo quiero VER algun articulo, deberia ponerle un link con la direccion del php que me va a servir para eso, cierto? bueno pues lo hago pero en vez de llamar a otro archivo php, envio los parametros al mismo index.php, agregando una variable de control que me va a permitir saber que es lo que estoy intentando hacer...

por ejmplo un link ser veria internamente asi:
Código PHP:
echo "<a href=\"index.php?accion=ver&idart=$articulo[id]\">$articulo[nombre]</a>" 
entonces si te fijas le puse una variable mas ... el accion=ver

entonces al entrar al ejecutar index.php voy a ver si existe esta variable y evaluo su valor, definiendo el flujo de mi script

por ejemplo la parte "de entrada" del index.php seria asi

Código PHP:
$op $HTTP_GET_VARS['op'];

switch(
$op){

  case 
"ver":
        
$id $HTTP_GET_VARS['id'];
        
verArticulo($id);
        break;

  case 
"listar":
  default:
        
listarArticulos();
        break;


con esto ya sabes que deberias tener varias funciones dependiendo que quieras hacer, obviamente este script esta sin validaciones ni nada es solo para que lo entiendas...

bueno eso, ojala que te sirva para entender como funciona al menos.. saludos!
__________________
=PoWeReD By MySeLf!=
  #3 (permalink)  
Antiguo 18/05/2003, 10:38
 
Fecha de Ingreso: abril-2002
Ubicación: las condes
Mensajes: 184
Antigüedad: 15 años, 8 meses
Puntos: 1
me explico mejor

yo tengo estas secciones
música,deporte,cine,tecnologia,noticias etc

cada una con una tabla en mysql.

lo que quiero hacer es que enves de tener como 6 base de datos
quiero tener todas en una tabla en mysql.

pero no se como hacer para saber cual son los id respectivo a cada seccion
osea que en el caso de que quiera que ver los articulos de musica como hago para saber que son verdaderamente de la seccion correspondiente.

bueno más arriba esta la tabla de mysql ahora les dejo los archivos

index.php
<? $conn = mysql_connect("localhost","","");

mysql_select_db("site39_1");

$q = mysql_query("SELECT id, imagen, breve_texto, titulo FROM articulos_juegos WHERE mostrar='1' ORDER BY id DESC LIMIT 3");

while($res = mysql_fetch_row($q)){

echo "

<table width=\"98%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" height=\"12\">

<td width=\"100%\" bgcolor=\"#666699\" height=\"13\" valign=\"top\">&nbsp;<font color=\"#000000\" size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">$res[3]</font></td>

</tr></table>

<TABLE width=\"98%\" valign=\"top\">

<TR>

<TD width=\"35%\"><IMG SRC=\"$res[1]\" BORDER=0 ALT=\"$res[3]\" border=\"0\"></a></TD>

<TD width=\"65%\"><font face=\"Verdana\" size=\"1\" color=\"#000000\">$res[2]</font><BR><BR><div align=\"right\"><a href=\"ver.php?id=$res[0]\" class=\"h2\">Más info...</a></div></TD>

</TR>

</TABLE>";

}

mysql_close($conn);

?>

ver.php
<?

$conn = mysql_connect("localhost","","");

mysql_select_db("site39_1");

$q = mysql_query("SELECT titulo, articulo, autor, web, email, imagen FROM articulos_juegos WHERE id=$id");

$res = mysql_fetch_row($q);

$poema = split("\n",$res[1]);

echo "<table><tr><td><font face=\"Tahoma, Arial\" size=\"2\" color=\"#CC0000\"><b>$res[0]</b></font></td></tr><tr><td><br><font face=\"Verdana\" size=\"1\"><b>Por : </b></font> <font face=\"Tahoma, Arial\" size=\"1\">$res[2]</font><BR><font face=\"Verdana\" size=\"1\"><b>E-mail : </b></font> <a href=\"mailto:$res[4]\"><font face=\"Verdana\" size=\"1\">$res[4]</font></a></font><BR><font face=\"Verdana\" size=\"1\"><b>Url : </b></font> <a href=\"$res[3]\" target=\"_blank\"><font face=\"Verdana\" size=\"1\">$res[3]</font></a></td></tr><tr><td><br><font face=\"Tahoma, Arial\" size=\"2\"><img src=\"$res[5]\" align=\"right\">";

for($i=0;$i<count($poema);$i++)

echo "<font class=\"content\">$poema[$i]</font><br>";

echo "</font></td></tr></table>";echo "<br>";

mysql_close($conn);

?>

bueno espero que de este modo puedan ayudarme y arreglar un poco el codigo bueno un saludo gracias
__________________
Juan Pablo Sánchez
  #4 (permalink)  
Antiguo 18/05/2003, 12:46
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 14 años, 7 meses
Puntos: 0
Lo que puedes hacer es lo siguiente. No es recomendado por rendimiento tener toda la informacion en una sola tabla (hay que estructurarla) entonces haces 2 tablas. La primera con 2 columnas(id(autoincrement),tipo(varchar)) aqui pones los tipos de secciones (musica, deporte,etc) quedaria mas o menos asi:

id tipo
-- ----------
1 Deportes
2 Musica
etc.

Despues la otra tabla la tenes con la informacion de las secciones en general y le agregas otra columna llamada id que va a ser la que relaciona esa informacion con la otra tabla:

Noticia Imagen Titulos ETC ID
-------- --------- ------- ----- --
BLABLA BLOB BLABLA etc.. 2 >musica
balbabl blob blabla etc... 1 >deportes

entonces, ya tienes relacionada la informacion de las tablas ahora viene el index.php

Lo que haces es que mandas una variable url o registras o lo que quieras, en el siguiente archivo pones todo, lo primero es la conexion de la BD, los querys con la clausula where id= $variablequevienepor url, y apartir de aqui haces el switch:

switch ($variableurl)
{
case ($variableurl=="1"):
query a la bd con la clausula where id="1"
y lo que necesites aqui, ciclos, echos, html, etc...
---aqui seria deportes----
break;
vase ($variableurl=="2"):
query a la bd con la clausula where id="2"
y lo que necesites aqui, ciclos, echos, html, etc...
---aqui seria musica----
.... y asi con todas las secciones!!!
}


Pura vida
  #5 (permalink)  
Antiguo 18/05/2003, 17:14
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
bueno , es lo mismo que te estuve explicando pero tenias que usar una poco la imaginacion.

tendrias que tener minimo dos tablas

secciones
-id
-nombreseccion
-descripcion

articulos
-id
-id_seccion
-titulo
-contenido

entonces lo que harias ahora seria primero ver todas las categorias, cada link a las categorias seria como

index.php?accion=verseccion&idsec=1

donde idsec siendo 1, corresponderia a la seccion de musica por ejemplo.

y dentro de la parte donde ves la seccion, deberias listar los articulos que pertenecen a esta seccion, cada link para ver el detalle de cada articulo quedaria

index.php?accion=verarticulo&idsec=1&idart=35
donde... bueno, esta a la vista no? :)
(aunke se podria poner sin el id de seccion, pero se hace para evitar inconsistencias)


ahora deberias tener mas opciones dentro del switch que te mencione en mi respuesta anterior

Código PHP:
switch($op){

case 
"verseccion":
// aca recuperas el id de seccion y sacas todos los arts relacionados y los muestras

case "verarticulo":
// aca sacas el id de la seccion y el id del articulo para saber cual es y lo muestras

case "todaslassecciones":
default:
// aca muestras todas las secciones


bueno eso, ojala te sirva de guia, en todo caso si quieres algo hecho deberias pasar primero a algun repositorio de scripts como hotscripts.com, lo que te he escrito aca pretende ser una guia, no quiero hacerte el trabajo, porque asi no aprenderias nada :)

saludos
__________________
=PoWeReD By MySeLf!=

Última edición por e-miliox; 18/05/2003 a las 17:18
  #6 (permalink)  
Antiguo 18/05/2003, 18:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo te recomendaría que leyeses sobre "Normalización" .. que son básicamente los conceptos que te han intentado explicar.

http://www.mysql-hispano.org/page.php?id=16

Tines que definir tu modelo de datos con "lapiz y papel" .. estableciendo los tipos de datos y relaciones que deben tener .. Con eso en la mano el resto es implementarlo fisicamente en tu Base de datos y/o Lenguaje que uses .. Pero sin eso .. te pasaras dos meses mas y muchos mas dandole vueltas al asundo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:19.