Foros del Web » Programando para Internet » PHP »

PHP y MySQL organizar tablas y mostrar su contenido

Estas en el tema de PHP y MySQL organizar tablas y mostrar su contenido en el foro de PHP en Foros del Web. Código PHP:   Hola buenas noches, por ahora tengo una duda demaciado sencilla. Verán estoy creando un album fotografico que funciona asi: Mediante un formulario ...
  #1 (permalink)  
Antiguo 07/07/2009, 19:34
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
De acuerdo PHP y MySQL organizar tablas y mostrar su contenido

Código PHP:
 
Hola buenas noches, por ahora tengo una duda demaciado sencilla.

Verán estoy creando un album fotografico que funciona asi:

Mediante un formulario en php creo las tablas en mi base de datos, donde cada el nombre de la tabla correspondería a el nombre del album y el contenido de la tabla (id, nombre, tipo, imagen, etc..) corresponde al contenido del album, es decir a todas las imagenes del mismo album.

formulario crear tablas (crear album)
Código PHP:
<?php
mysql_connect
('localhost','root','mypass') or die('No se ha podido conectar el servidor de datos');
mysql_select_db('imagenes') or die('No se puede seleccionar la base de datos especificada'); 

$db mysql_connect("localhost""root""gateway");

//con esto creo la tabla es decir el album
if ($album_name=="")
{
echo 
"Escriba un nombre para su album";
} else {
$sql "CREATE TABLE `".$_POST['album_name']."` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `nombre` varchar(255) default NULL,
  `tipo` varchar(255) default NULL,
  `imagen` longblob NOT NULL,
  KEY `id` (`id`)
) TYPE=MyISAM DEFAULT CHARSET=latin1;"

mysql_query($sql$db);
if ( 
mysql_error () ) 
{
echo 
"El nombre ya ha sido usado o no es válido";
} else {
echo 
"Se ha creado el album";
}
}
?>
<form method="post" action="">
Nombre del Album:
  <input name="album_name" type="text" maxlength="100">
  <input type="submit" value="crear">
</form>
Mediante otro formulario:
1.- consulto cuantas tablas existen en la base de datos y las ordeno en lista desplegable de formulario
2.- Incluyo un campo tipo file para subir la imagen a la base de datos
3.- El campo <select></select> con el nombre de las tablas mysql organizadas en <option></option> que sería el destino a donde se subirá la imagen, es decir el album correspondiente a la imagen.

Código PHP:
<?php
mysql_connect
('localhost','root','mypass') or die('No se ha podido conectar el servidor de datos');
mysql_select_db('imagenes') or die('No se puede seleccionar la base de datos especificada'); 
?>
<!-- formulario subir imagen -->
<b>Subir imagen al album </b><br />
<form enctype="multipart/form-data" method="post" action="subir.php">
  <select name="album">
<?php
$result 
mysql_list_tables("imagenes");
If (!
$result) {
        echo 
"DB Error, No se pueden listar las tablas";
        echo 
"
"
;
        echo 
'MySQL Error: ' mysql_error();
}
While (
$row mysql_fetch_row($result)) {
        echo 
" <option value='$row[0]'>$row[0]</option>";
}
mysql_free_result($result);

?>
</select>
Nombre: <input type="text" name="nombre" maxlength="256" />
<br />
Imagen: <input type="file" name="archivo" />
<br />
<input type="submit" value="subir"/>
</form>
El archivo subir.php tiene el script necesario para subir la imagen.

Código PHP:
<?php
 
# Eial 2004 la versión orginial se encuentra en [url]http://www.programacionweb.net[/url]
 
if (is_uploaded_file($_FILES['archivo']['tmp_name']) === TRUE)
 
{
 
$imagen mysql_escape_string(join(@file($_FILES['archivo']['tmp_name']))); 
 
$nombre mysql_escape_string($_POST['nombre']);
 
$tipo $_FILES['archivo']['type'];
 
# Configurar las dos lineas siguientes 
 
@mysql_connect('localhost','root','mypass') or die('No se ha podido conectar el servidor de datos');
 
@
mysql_select_db('imagenes') or die('La base de datos es inexistente');
 
    if (isset(
$nombre))
 
    {
 
        if (@
mysql_result(@mysql_query("SELECT nombre FROM "$album ." WHERE nombre='$nombre'"),'nombre')) die('El nombre de la imagen esta actualmente en uso');
 
    }
 
@
mysql_query("INSERT INTO "$album ."(nombre,tipo,imagen) VALUES('$nombre','$tipo','$imagen')");
 
$id = @mysql_insert_id();
 
echo 
"
<html>
<body>
<p align='center'>Se ha subido la imagen a la base de datos</p> 
Album: "
$album "<br>
Nombre: "
$nombre ."<br>
Tipo: "
$tipo ."<br>
ID: "
$id ."<br>
Subir otra imagen <a href='index.php'> click aqui</a><br>
<form action='imagenes.php'>
<input type='hidden' name='album' value='"
$album ."'>
<input type='hidden' name='id' value='"
.$id."'>
<input type='submit' value='Ver imagen'>
</form>
</body>
</html>
"
;
 
exit;
 
}
 
else
 
{
 
echo 
'
No se pudo subir intenta de nuevo
'
;
 
}
 
?>
y el archivo imagenes.php donde se muestran las imagenes recien subidas.

imagenes.php
Código PHP:
<?php
 
# Eial 2004 la versión orginial se encuentra en [url]http://www.programacionweb.net[/url]
 
# Configurar las dos lineas siguientes
 
@mysql_connect('localhost','root','mypass') or die('No se puede conectar con el servidor mysql'); 
 
@
mysql_select_db('imagenes') or die('No se puede seleccionar la base de datos especificada'); 
 
$datos = ($_GET['id']) ? 'id=' mysql_escape_string($_GET['id']) : "nombre='" mysql_escape_string($_GET['nombre']) . "'";
 
$resultado = @mysql_query("SELECT imagen,tipo FROM "$album ." WHERE " $datos);
 
$imagen = @mysql_fetch_assoc($resultado) or die('Imagen inexistente');
 
header("Content-type: $imagen[tipo]");
print 
$imagen['imagen']; 
?>
Tengo una duda muy sencilla pero solo queria darme a entender bien, por favor prueben el código para que me pueda dar a entender mejor.

¿Como puedo mostrar las todas las imagenes de una tabla a la vez con un link?
Las imagenes se organiza por id en la DB. y para verlas se utiliza el siguiente una estructura parecida al siguiente achivo

Código PHP:
<a href="ver_imagen.php?id=' . $id . '">ver imagen</a
Código PHP:
<?php
$datos 
= ($_GET['id']) ? 'id=' mysql_escape_string($_GET['id']) : "nombre='" mysql_escape_string($_GET['nombre']) . "'";
$resultado = @mysql_query("SELECT imagen,tipo FROM tabla WHERE " $datos);
$imagen = @mysql_fetch_assoc($resultado) or die('Imagen inexistente');

header("Content-type: $imagen[tipo]");
print 
$imagen['imagen']; 
?>

Por favor ayudenme

Muchas gracias.

P.D: Estoy realizando un PHPScript (pagina web para novios) Ya tiene sistema de mensajeria instantanea (ProChatRomm v5) con todos los plugins y un tema modificado por mi, el chat lo ejemplifique al máximo Sencillo y amoroso, una seccion de cartas ( Mis cartas enviadas , Mis cartas recibidas, escribir carta ) Login de usuarios, Perfil, los cartas incluyen opcion a usar editor sencillo o abanzando TinyMCE, le voy a poner un script para subir videos, imagenes (es en lo que estoy actualmente) y musica.

Echenme la mano porfavor no pido dudas imposibles, acabamos juntos este script y lo colgamos en descarga directa para programacionweb.net y forosdelweb.com o para la que si me ayude. Saludos!
Espero me echen la mano, muchas gracias.
Deseo terminar este script para mi novia lo mas pronto posible

Saludos!
  #2 (permalink)  
Antiguo 07/07/2009, 21:37
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Lo que te digo, es que la organización que tienes para la base de datos, en mi parecer, resulta bastante estúpido, es decir, crear una tabla cada vez que un usuario cree un album?.

Creo que una solución más profesional sería que crearas dos tablas, una con los datos sobre cada álbum, es decir: nombre, descripción, fecha, etc... claro está, que cada registro tenga su id. La segunda tabla sería tal cual la planteas en tu post con la única diferencia de que se añadiría un campo ( o columna) que le identifique con el id del álbum al que pertenece, algo como album_id, así tendrías una mejor organización y menos código basura...

Con respecto a tu pregunta, no la entiendo muy bien, intenta cambiar esto que te digo y verás como tendrás un código más maleable, luego en base a este, intenta resolver tu duda.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #3 (permalink)  
Antiguo 07/07/2009, 22:59
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

leer el siguiente por favor, mi respuesta se publico 2 veces no fue mi intecion.

Última edición por iovan; 07/07/2009 a las 23:03 Razón: Se publico 2 veces el mismo tema
  #4 (permalink)  
Antiguo 07/07/2009, 23:00
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Hola si es cierto aqui en este foro se me olvido mensionar el porque queria ocupar las tablas como albums.

Lo que pasa es que llevo 3 dias (Deverdad no exagero) Desde la mañana hasta la noche leyendo de google decenas de tutoriales sobre MySQL y PHP. Te cuento Hace 3 dias no sabia ni para lo que servia PHP, pero he estado estudiando y bueno como puedes ver esos codigos los arme yo, tomando trosos de codigos que vi en tutoriales en google.

Aun no me doy por vencido pero apenas y entiendo como funciona esto.

Hoy me di cuenta que sería vastante mas sencillo usar una base de datos asi:

Código PHP:
CREATE TABLE `imagenes` (
  `
idint(11unsigned NOT NULL auto_increment,
  `
nombrevarchar(255) default NULL,
  `
albumvarchar(255) default NULL,
  `
tipovarchar(255) default NULL,
  `
imagenlongblob NOT NULL,
  
KEY `id` (`id`)
TYPE=MyISAM DEFAULT CHARSET=latin1 

Pero me resulta un dolor de cabeza jigantesco imaginarme como le voy a hacer para crear albums y luego meterlos en una lista despegable de formulario para despues enviar la imagen al album seleccionado.

Dios no se como hacer esto y creeme ya me explorere el 90% de las paginas de habla hispana que tiene indenizadas google y que a simple vista parecia que hablarian de este tema, pero no.

Podrias ayudarme a entender con algoritmos como funcionaria del metodo que tu dice, de verdad te lo agradeseria muchismo no tienes una idea de cuanto XD

Saludos y que tengas un muy buen dia.

Edito: en este link publico una pregunta mas entendible, si puedes ayudarme por aya o por aca muchisimas gracias
http://www.programacionweb.net/foros/mensaje/?num=20101
  #5 (permalink)  
Antiguo 08/07/2009, 05:57
Avatar de Dragon_Mandarin  
Fecha de Ingreso: marzo-2005
Ubicación: Santiago de Chile
Mensajes: 231
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Hola, New!

No entiendo mucho lo que deseas hacer para tu álbum de fotos para novios, pero de tus palabras lo que deseas es crear un álbum ... ¿que despliegue fotos en columnas????

Bueno, whatever ...

Te dejo este código, a ver si te sirve:

Código PHP:
<?php
//Establezco el numero de columnas
$columns 2;
mysql_connect("localhost","usuario","password");
@
mysql_select_db("base_de_datos") or die( "Imposible seleccionar base de datos");
//Hago el correspondiente Select
$query="SELECT id_foto, Nombre, Categoria, Foto, Descripcion, Fecha FROM galeria";
$result mysql_query($query);
$num_rows mysql_num_rows($result);
echo 
"<table width=\"50%\" align=\"center\" border=\"0\" cellpadding=\"21\" cellspacing=\"3\">\n";
for(
$i 0$i $num_rows$i++) {
      
$row mysql_fetch_array($result);
      if(
$i $columns == 0) {
            
//SI NO HAY RESTO SIGNIFICA QUE INICIAMOS UNA NUEVA FILA
            
echo "<tr>\n";
}
 echo 
"<td width='5%' valign='top'><a href='fotos/$row[Foto]' ><img src='fotos/th$row[Foto]' /></a><br>$row[Fecha]<br><span class='Titulo'>$row[Nombre]</span><br>$row[Categoria]<br><span class='PieFoto'>$row[Descripcion]</span>
 <div aling='left'><b><a href='descarga.php?file=$row[Foto]'>Descargar Foto</a></b></div></td>\n"
;
     
// echo "<TD>" . $row['Foto'] . "</TD>\n";
      
if(($i $columns) == ($columns 1) || ($i 1) == $num_rows) {
            
//SI EL RESTO ES UNO
            //O SI NO HAY NADA MAS A LA IZQUIERDA
            //ES EL FINAL DE LA TABLA
            
echo "</TR>\n";
  }
}
echo 
"</table>\n";
?>
La base de datos tiene esta estructura (ah!!, por cierto, opera con categorías el susodicho sistema):

Código PHP:
 
-- 
-- --------------------------------------------------------
-- 
-- 
Estructura de tabla para la tabla `galeria`
-- 
CREATE TABLE `galeria` (
  `
id_fotoint(11unsigned NOT NULL auto_increment,
  `
Nombrevarchar(190NOT NULL,
  `
Categoriavarchar(200NOT NULL,
  `
Fotovarchar(255NOT NULL,
  `
Descripcionlongtext NOT NULL,
  `
Fechavarchar(90NOT NULL,
  
PRIMARY KEY  (`id_foto`)
ENGINE=MyISAM  DEFAULT CHARSET=latin2 AUTO_INCREMENT=13 ;
 
---------------------------------
 
 
-- 
-- 
Estructura de tabla para la tabla `categoria`
-- 
CREATE TABLE `categoria` (
  `
idint(11NOT NULL auto_increment,
  `
Categoriavarchar(200NOT NULL,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin2 AUTO_INCREMENT=;
-- 
Pruébalo y adáptalo a tu pinta,; en una de ésas es lo que buscas.

Falta crear el script que lleve a la categoría deseada, que es más o menos así:
Código PHP:
<?php
require(conexion.php');
$sqlQuery = mysql_query("SELECT * FROM categoria", $db_link)
                            or die(mysql_error);
while($row = mysql_fetch_array($sqlQuery)){
    echo "<ul class=\"sidemenu\">";
 echo "<a href='
galeria.php?Categoria=$row[Categoria]&amp;Categoria=$row[Categoria]>$row[Categoria]</a>";
 echo "
</ul><br>";
}
?>
El documento para la conexión, conexion.php

Código PHP:
<?php
$db_link 
mysql_connect('localhost''usuario''password');
if(!
$db_link){
    die(
'No se pudo conectar: ' mysql_error());
}
$db_selected mysql_select_db('base_de_datos'$db_link);
if(!
$db_selected){
    die(
'No se selecciono la BD: ' mysql_error());
}
?>
Para ver las fotos que contiene categoría se consigue mediante la línea que está más arriba ("<a href='galeria.php?Categoria=$row[Categoria]&amp;Categoria=$row[Categoria]'>$row[Categoria]</a>), pero no tiene gracia, porque en galeria.php es tema resuelto gracias al Dreamweaver y a decir verdad quiero hacerlo con código solamente, pero sigo sin poder resolver el problema. Como no lo he logrado y ya me cansé de buscar la respuesta, anduve abandonando el tema; sé que hay que hacer un select, el $_GET blablablá y todo eso, lo he intentado, pero no me resulta.

Me anduvo saturando un poco el cuento; desarmé todo y he dejado el código tal cual. A ver si alguien experto en php sabe cómo resolver el problema.

Arrivedercci Roma

Última edición por Dragon_Mandarin; 08/07/2009 a las 06:05
  #6 (permalink)  
Antiguo 08/07/2009, 16:58
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Hola amigo, muchas gracias tu codigo me parece perfecto para mi.

Tengo una ultima duda:

1.- ¿Como iría el formulario pasa subir la imagen?
Muchas gracias amigo.
  #7 (permalink)  
Antiguo 08/07/2009, 17:11
Avatar de Dragon_Mandarin  
Fecha de Ingreso: marzo-2005
Ubicación: Santiago de Chile
Mensajes: 231
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Cita:
Iniciado por New Ver Mensaje
Hola amigo, muchas gracias tu codigo me parece perfecto para mi.

Tengo una ultima duda:

1.- ¿Como iría el formulario pasa subir la imagen?
Muchas gracias amigo.
Ah, sip ... ahí necesitas un buen manejador de contenidos o CMS ... mmmm

Dame tu casilla y te envío lo que tengo por acá y te doy por ese mismo medio las instrucciones del caso. Sorry no poner acá el código, pero es mucho, son hartos archivos, entonces na que ver ...

Por cierto, si sabes cómo resolver el problema de cómo acceder desde el menú de las categorías a las fotos que has publicado (o que vayas a publicar) en c/u de las fotos de tu galería, déjame saber porque quiero resolver esto no con el Dreamweaver, sino con puro y simple código, ¿vale?

Salu2
  #8 (permalink)  
Antiguo 08/07/2009, 23:01
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Claro amigo te lo agradesco y con respecto a lo que dices ahorita ya me encuentro mas adaptado a esto del PHP y estoy haciendo un script ahora si bien ubicado de que tengo que hacer y como hacerlo para una galeria de fotos PHP y MySQL ahorita me estoy liando con las instrucciones para subir la iamgen por FTP a un directorio del servidor en lugar de almacenarla como binario en la base de datos.

Hacerca de lo que pides si creo poder resolverlo, permiteme hacer unas pruebas este viernes y te respondo vale.

GRacais amigo y si tienes algo ya echo si me lo mandas sería genial. GRacias
iovan_@ hot .... com
  #9 (permalink)  
Antiguo 08/07/2009, 23:02
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Claro amigo te lo agradesco y con respecto a lo que dices ahorita ya me encuentro mas adaptado a esto del PHP y estoy haciendo un script ahora si bien ubicado de que tengo que hacer y como hacerlo para una galeria de fotos PHP y MySQL ahorita me estoy liando con las instrucciones para subir la iamgen por FTP a un directorio del servidor en lugar de almacenarla como binario en la base de datos.

Hacerca de lo que pides si creo poder resolverlo, permiteme hacer unas pruebas este viernes y te respondo vale.

GRacais amigo y si tienes algo ya echo si me lo mandas sería genial. GRacias
iovan_@ hot .... com
  #10 (permalink)  
Antiguo 09/07/2009, 06:40
Avatar de Dragon_Mandarin  
Fecha de Ingreso: marzo-2005
Ubicación: Santiago de Chile
Mensajes: 231
Antigüedad: 19 años, 1 mes
Puntos: 14
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

Cita:
Iniciado por New Ver Mensaje
Claro amigo te lo agradesco y con respecto a lo que dices ahorita ya me encuentro mas adaptado a esto del PHP y estoy haciendo un script ahora si bien ubicado de que tengo que hacer y como hacerlo para una galeria de fotos PHP y MySQL ahorita me estoy liando con las instrucciones para subir la iamgen por FTP a un directorio del servidor en lugar de almacenarla como binario en la base de datos.

Hacerca de lo que pides si creo poder resolverlo, permiteme hacer unas pruebas este viernes y te respondo vale.

GRacais amigo y si tienes algo ya echo si me lo mandas sería genial. GRacias
iovan_@ hot .... com
Hola, New!

Te he enviado el sistema a la casilla indicada. Bueno, ojalá consigas hacer lo que te menciono más arriba. La idea es que en cada categoría seleccionada salgan las fotos publicadas bajo esa categoría y para conseguirlo -usando el mismo código que te genera las columnas de la tabla, dinámicamente-, tengo entendido que hay que adicionar el código que te permita eso, o sea, un $_GET, Select y while respectivos, cosa que yo no he logrado hacer y las veces que intenté hacerlo me arrojaba errores en las consultas sql, entre otras ... un desastre

Avísame si todo va bien.

Bye
  #11 (permalink)  
Antiguo 10/07/2009, 21:42
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: PHP y MySQL organizar tablas y mostrar su contenido

gracias amigo Dragon_Mandarin,

Voy a tratar de corregir esos errores, gracias por el código, si logro algo bueno te envio las modificaciones ok.

Muchas gracias, un saludo!
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
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 14:30.