Comunidad de diseño web y desarrollo en internet online

Consulta sobre Programación y Tablas en MySql.

Citar            
MensajeEscrito el 28 Feb 2014 09:43 pm
Muchachos. Estoy quitándome dudas respecto a lo especificado en el título, porque recién estoy comenzando a programar en PHP y Mysql, como les dije, y lo que quiero es, saber como debo hacer para que un usuario que se registre en mi web, pueda publicar un artículo, y figure como autor del mismo.

Ej: "Si yo creo un sitio para que usuarios suban imágenes, con registro, login, scripts para subirla, descripción, etc. ¿basta con una tabla para imágenes y una para usuarios que estén relacionadas? o ¿debo crear una para usuarios e imágenes todo junto?"

Lo que pude hacer, aunque no quedé conforme, es que cada vez que el usuario suba una imagen, a través de un menú con valores dinámicos de la tabla usuario, una ves registrado y loggeado, pueda elegir el suyo al publicar y que así apareciese en la imagen que subió (admito que es una animalidad, es inconcebible presentar algo así a un público). Había pensado en que en la tabla imagen, exista un campo llamado "publicante", por ejemplo, relacionada con el campo "nombre" de la tabla de usuarios, ¿podría funcionar?.

Imagen:



Lo que quiero, básicamente es que con haberse loggeado y publicado algo, su usuario ya aparezca como autor de la imagen. Dejo una imagen de lo que pensé unas líneas mas arriba.

¡Gracias!

Por Cramlet

13 de clabLevel



 

Diseñador Gráfico.

chrome
Citar            
MensajeEscrito el 28 Feb 2014 11:33 pm
Acabo de probar algo similar en otros sitios de prueba que hice y me funcionó. Una auto-resolución a mi planteo aparentemente funciona:

Cramlet escribió:

Había pensado en que en la tabla imagen, exista un campo llamado "publicante", por ejemplo, relacionada con el campo "nombre" de la tabla de usuarios, ¿podría funcionar?.

Imagen:




Relacioné tal y como dice la imagen los campos de ambas tablas en una BD nueva que cree para la prueba, y el campo oculto que cree llamado "publicante" como en la BD, relacionado con el campo "usuario" de la bd, en el archivo del sitio detecta al usuario loggeado que sube la imagen. Estoy en duda si yo desde mi usuario, cuando publican una imagen, veré mi nombre o el de quien publicó el archivo.

Les dejo el código por si lo quieren analizar:

gestionimagen.php

Código PHP :

<?php require_once('Connections/pruebavo.php'); ?>

<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1")) {
   $nombre_archivo = $_FILES['userfile']['name'];

move_uploaded_file($_FILES['userfile']['tmp_name'], "imagenes/asd/".$nombre_archivo);

?>
<script>
   opener.document.form1.imagen.value="<?php echo $nombre_archivo; ?>";
self.close();
</script>

<?php

}
else{?>
<form action="gestionimagen.php" method="post" enctype="multipart/form-data" id="form1">
  <div align="center">
    <p>
      <input name="userfile" type="file" />
    </p>
    <p>
      <input type="submit" name="button" id="button" value="Subir Imagen" />
    </p>
    <p><input type="hidden" name="enviado" value="form1" /></p>
  </div>
</form>
<?php }?>



subirimagen.php:

Código PHP :

<?php require_once('Connections/pruebavo.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO tblimagen (imagen, SEO, publicante) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['imagen'], "text"),
                       GetSQLValueString($_POST['SEO'], "text"),
                       GetSQLValueString($_POST['publicante'], "text"));

  mysql_select_db($database_pruebavo, $pruebavo);
  $Result1 = mysql_query($insertSQL, $pruebavo) or die(mysql_error());

  $insertGoTo = "index.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_pruebavo, $pruebavo);
$query_Recordset1 = "SELECT * FROM tblimagen ORDER BY tblimagen.publicante";
$Recordset1 = mysql_query($query_Recordset1, $pruebavo) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

mysql_select_db($database_pruebavo, $pruebavo);
$query_Recordset2 = "SELECT * FROM tblusuario ORDER BY tblusuario.usuario";
$Recordset2 = mysql_query($query_Recordset2, $pruebavo) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);
?>

<script>
function subirimg(){
   self.name = 'opener';
   remote = open('gestionimagen.php', 'remote',
'width=400,height=350,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes,fullscreen=no, status=yes');
   remote.focus();

}
</script>

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Imagen:</td>
      <td><input type="text" name="imagen" value="" size="15">
      <input type="button" name="button" id="button" value="examinar" onclick="javascript:subirimg()"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">SEO:</td>
      <td><input type="text" name="SEO" value="" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Publicante:</td>
      <td><input type="hidden" name="publicante" value="" size="32"><?php echo $row_Recordset2['usuario']; ?></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input type="submit" value="Insertar registro"></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
<?php
mysql_free_result($Recordset1);

mysql_free_result($Recordset2);
?>


Si se fijan en esta captura, el código detecta quién es el conectado en la cuenta y quién es el que sube la imagen:


Como ya les dije: Mi duda ahora es si yo desde mi usuario, cuando alguien publica una imagen, veré mi nombre de usuario o el de quien publicó el archivo.

Por Cramlet

13 de clabLevel



 

Diseñador Gráfico.

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.