Foros del Web » Programando para Internet » PHP »

Amigos Ayuda con este sistema de comentario

Estas en el tema de Amigos Ayuda con este sistema de comentario en el foro de PHP en Foros del Web. estoy haciendo una web a la cual pueden subir fotos y todo marcha bien las fotos estan paginadas el problema es que quiero ayuda con ...
  #1 (permalink)  
Antiguo 08/06/2010, 09:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 13 años, 10 meses
Puntos: 1
Amigos Ayuda con este sistema de comentario

estoy haciendo una web a la cual pueden subir fotos y todo marcha bien las fotos estan paginadas el problema es que quiero ayuda con un script que automaticamente al subir una foto a la base de datos debajo de ella me aparesca un sistema de comentario! es decir que cada vez que suban una nueva abajo aparesca un sistema de comentario asi como facebook!

ya el sistema de comentarios esta hecho lo que no se es como lograr que aparesca debajo de cada foto automaticamente:

las tablas estan relacionadas, comentario tiene el id de la foto (fotos_ID) y el ID de los usuarios (registro_ID), como debo hacer para hacer lo que quiero con los comentarios?

este es el script que muestra las fotos paginadas!

Código PHP:
<?php
session_start
();
?>

<?php

require_once 'PHPPaging.lib.php';

$paging = new PHPPaging


   
// Abrimos la conexión al servidor MySQL
$link mysql_connect('localhost''root''12345);
mysql_select_db('
xtremebook', $link);


// Instanciamos, indicando el recurso de conexión
$paging = new PHPPaging($link);


$q = "SELECT * FROM fotos ORDER BY id DESC";

// Y se usa la función agregarConsulta() (Ver documentación)
$paging->agregarConsulta($q);  

$paging->ejecutar();

  while($datos = $paging->fetchResultado()) { 
    // En cada ciclo, la variable $datos se convierte en un arreglo
    // que contiene los datos de la fila que corresponde
    echo "<img src =\"ver.php?ID=".$datos['
ID']."\"width='500' height='500'><br>";
    echo "Nombre:" . $datos['
NOMBRE'] . "<br />";
    echo "Apellidos:" . $datos['
TIPO'] . "<br />";
    echo "País:" . $datos['
PESO] . "<br />";
    echo 
"<br />";
}

//Una cadena conteniendo el codigo HTML de la barra de 
//navagación es generada y guardada en la variable $links.
$links $paging->fetchNavegacion();

echo 
$links;
    
    
?>
Gracias de antemano mis amigos! :D

Última edición por L4NS; 08/06/2010 a las 15:35
  #2 (permalink)  
Antiguo 08/06/2010, 09:44
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años
Puntos: 0
Respuesta: Amigos Ayuda con este sistema de comentario

Para ir agregando uno por uno:

Dentro del While, al final de todo, debes colocar un html con un formulario algo asi:

Código HTML:
<form action="agregar_comentario.php" method="post">
   <textarea name="comentario"></textarea><br>
   <input type="submit" vale="Enviar comentario">
   <input type="hidden" name="id_foto" value="<?php echo $datos['ID']; ?>">
</form> 
=====================================

Para agregar todos juntos con un solo boton:

(Te lo explico, no voy a hacer el codigo)
Fuera del While colocas los <form action="agregar_comentario.php" method="post"></form> y dentro del while, al final, colocas este html:

Código HTML:
<textarea name="comentario[<?php echo $datos['ID']; ?>]"></textarea> 
Esto lo que hace es crearte un array llamado comentario, en donde sus indices son los ID de las fotos y el valor es el comentario.
Lo que debes hacer en agregar_comentario.php es recorrer ese array con un foreach extrayendo el indice y el valor y usarlo para insertarlo en la DB.

Espero se haya entendido la teoria ;) Sino avisame y me doy maña y escribo el codigo. :D
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #3 (permalink)  
Antiguo 08/06/2010, 10:06
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Amigos Ayuda con este sistema de comentario

men este es mi formulario de mi comentariooo (comentario.php)!

Código PHP:
<?php
session_start
();
?>
<?php 
//Conectamos a la Base de datos
require_once('Connections/xtremebook.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']);
}

//seleccionamos la BD

mysql_select_db($database_xtreme_book$xtremebook);
$query_Recordset1 "SELECT  NOMBRE, APELLIDO FROM registro";
$Recordset1 mysql_query($query_Recordset1$xtremebook) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);

$maxRows_tabla_alumnos 10;
$pageNum_tabla_alumnos 0;
if (isset(
$_GET['pageNum_tabla_alumnos'])) {
  
$pageNum_tabla_alumnos $_GET['pageNum_tabla_alumnos'];
}
$startRow_tabla_alumnos $pageNum_tabla_alumnos $maxRows_tabla_alumnos;

mysql_select_db($database_xtreme_book$xtremebook);
$query_tabla_alumnos "SELECT  NOMBRE, APELLIDO, NOMBREUSUARIO, CONTRASENA, EMAIL, SEXO FROM registro";
$query_limit_tabla_alumnos sprintf("%s LIMIT %d, %d"$query_tabla_alumnos$startRow_tabla_alumnos$maxRows_tabla_alumnos);
$tabla_alumnos mysql_query($query_limit_tabla_alumnos$xtremebook) or die(mysql_error());
$row_tabla_alumnos mysql_fetch_assoc($tabla_alumnos);

if (isset(
$_GET['totalRows_tabla_alumnos'])) {
  
$totalRows_tabla_alumnos $_GET['totalRows_tabla_alumnos'];
} else {
  
$all_tabla_alumnos mysql_query($query_tabla_alumnos);
  
$totalRows_tabla_alumnos mysql_num_rows($all_tabla_alumnos);
}
$totalPages_tabla_alumnos ceil($totalRows_tabla_alumnos/$maxRows_tabla_alumnos)-1;
?>
<form id="form1" name="form1" method="post" action="Ecomentario.php" onSubmit="return verifica()">
  <table width="300" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#FFFFFF">
    <tr>
      <td bgcolor="#33CCFF"colspan="2"><div align="center" class="style30 style44"><b>Comentarios</b></div></td>
    </tr>
    <tr>
      <td bgcolor="#D8EFFA" width="71"><? 
        
include('login.php');
echo 
"<b><font color='#3399FF'>".$_SESSION['MM_Username'];
?></b>
        dice:</td>
      <td bgcolor="#D8EFFA" width="161"><span class="style29">
        <label></label>
        <textarea name="COMENTARIO"  cols="30" id="COMENTARIO"></textarea>
      </span></td>
    </tr>
    <tr>
      <td bgcolor="#D8EFFA" colspan="2"><b>
        <div align="right">
          <input     style="background-color:#33CCFF; font:bold;  "type="submit" name="Submit" value="Comentar" />
        </div>
      </b></td>
    </tr>
  </table>
</form>
<br /><table align="center" bgcolor="#D8EFFA" width="300" border="0" cellspacing="5">
  <tr>
    <th scope="row"><div align="left"><?php
    mysql_connect
("localhost","root","pop100594") or die ("no se ha podido conectar a la BD");

    
mysql_select_db("xtremebook") or die ("no se ha podido seleccionar la BD");

    
$sql "SELECT ID,COMENTARIO,FECHA,HORA FROM comentarios WHERE fotos_ID=".$registrofoto['ID'].";";
    
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta");

    While (
$registro=mysql_fetch_assoc($consulta)){
        echo 
"<br><br> Comentario: ".$registro['COMENTARIO']."<BR>hecho el:<br>".$registro['FECHA']."<BR> a las ".$registro['HORA'];
    }

?> </div></th>
  </tr>
  <tr>
    <th scope="row"><div align="left">
     </div></th>
  </tr>
</table>
y para insertar los comentarios uso este codigo (Ecomentario.php)

Código PHP:

<?php
/*
                                ________________________________________________________________________
                                |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
                                |:::PROGRAMACION DEL SISTEMA INSERTAR DATOS EN BD  POR L4NS:::|  
                                |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::|
                                -------------------------------------------------------------------------
*/
    // Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
    
$fecha=date("j-n-Y");
    
$hora=date("h:i:s");
    if(isset(
$_POST['COMENTARIO']) && !empty($_POST['COMENTARIO'])) {

        
// Si entramos es que todo se ha realizado correctamente

        
$link mysql_connect("localhost","root","12345");
        
mysql_select_db("xtremebook",$link);

        
// Con esta sentencia SQL insertaremos los datos en la base de datos
        
mysql_query("INSERT INTO comentarios (COMENTARIO,FECHA,HORA)
        VALUES ('{$_POST['COMENTARIO']}','$fecha','$hora')"
,$link);

        
// Ahora comprobaremos que todo ha ido correctamente
        
$my_error mysql_error($link);

        if(!empty(
$my_error)) {

            echo 
"Ha habido un error al insertar los valores. $my_error";

        } else {

           echo 
"<script type=\"text/javascript\">alert('Se Ha Registrado Exitosamente');
        location.href='javascript:history.go(-1)'; </script>"
;

        }

    } else {

        echo 
"<script type=\"text/javascript\">alert('Ocurrio Un Error Usted No Introdujo Todos Los Datos Debe Volver Atras');
        location.href='javascript:history.go(-1)'; </script>"
;

    }

?>

</body>
</html>
men podrias explicarme un poco mejor lo q me dijiste al final?ayuda de verdad son un poco novato en esto de php pero le estoy hechando bolas por que me gusta programar!

ayudaa brooo gracias si me ayudas con el codigo te agradeceria mucho men!!

Última edición por L4NS; 08/06/2010 a las 15:35
  #4 (permalink)  
Antiguo 09/06/2010, 06:16
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años
Puntos: 0
Respuesta: Amigos Ayuda con este sistema de comentario

Hola,

Te lo explico con un ejemplo y luego lo ajustas a tu codigo:

Tu WHILE donde muestras las fotos te quedaria asi:

Código PHP:
<?php
echo '<form action="agregar_comentario.php" method="post">';
while(
$datos $paging->fetchResultado()) { 
    
// En cada ciclo, la variable $datos se convierte en un arreglo
    // que contiene los datos de la fila que corresponde
    
echo "<img src =\"ver.php?ID=".$datos['ID']."\"width='500' height='500'><br>";
    echo 
"Nombre:" $datos['NOMBRE'] . "<br />";
    echo 
"Apellidos:" $datos['TIPO'] . "<br />";
    echo 
"País:" $datos['PESO'] . "<br />";
    echo 
"<br />";
    
?>
    <textarea name="comentarios[<?php echo $datos['ID']; ?>]"></textarea>
    <?php
}
echo 
'<input type="submit" value="agregar comentarios" />';
echo 
'</form>';
?>
y el agregar_comentario.php quedaria asi:

Código PHP:
<?php
//Lo definimos como array por las dudas que venga vacio y nos pinche el foreach
$comentarios = array();
//Tomamos todos los valores del campo textarea anterior.
$comentarios $_POST["comentarios"];

//Por cada elemento del array, lo descompongo en Indice => Valor. Donde Indice es el ID de la foto y el Valor es lo que escribieron en el textarea.
foreach($comentarios as $id_foto => $comentario){
    
mysql_query("insert into tablaComentarios (id_foto,comentario) values ('$id_foto','$comentario')");
}
?>
Espero que se entienda. Cualquier cosa aqui estamos.
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #5 (permalink)  
Antiguo 09/06/2010, 10:25
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Amigos Ayuda con este sistema de comentario

gracias amigo ya lo probare! men y para mostrar los comentarios de ese id lo haria asi con este echo?

Código PHP:
<table align="center" bgcolor="#D8EFFA" width="300" border="0" cellspacing="5">
      <tr>
        <th scope="row"><div align="left">
          <?php
    mysql_connect
("localhost","root","1234") or die ("no se ha podido conectar a la BD");

    
mysql_select_db("xtremebook") or die ("no se ha podido seleccionar la BD");

    
$sql "SELECT ID,COMENTARIO,FECHA,HORA FROM comentarios";
    
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta");

    While (
$registro=mysql_fetch_assoc($consulta)){
        echo 
"<br><br> Comentario: ".$registro['COMENTARIO']."<BR>hecho el:<br>".$registro['FECHA']."<BR> a las ".$registro['HORA'];
    }

?>
        </div></th>
      </tr>
      <tr>
        <th scope="row"><div align="left"> </div></th>
      </tr>
    </table>
    <p>&nbsp; </p>
es decir lo que han comentado en esa foto ?
  #6 (permalink)  
Antiguo 09/06/2010, 11:17
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años
Puntos: 0
Respuesta: Amigos Ayuda con este sistema de comentario

Claro, seria como tu dices. Lo unico es que no se cual es la diferencia entre mysql_fetch_assoc y mysql_fetch_array. Yo siempre use este ultimo.
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #7 (permalink)  
Antiguo 09/06/2010, 19:54
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Amigos Ayuda con este sistema de comentario

amigo muy bien todo va perfecto ya se guarda el comentario con ID de la fotoo solo me falta una cosa, no me quiere mostrar en cada foto solo los comentarios de la foto es decir aun me muestra los de todos pero ya se guarda el comentario con id_foto correctamente el problema debe de estar en la programacion de mi sentencia echo no?

aki te la muestro:
Código PHP:
<table align="center" bgcolor="#D8EFFA" width="300" border="0" cellspacing="5">
      <tr>
        <th scope="row"><div align="left">
          <?php
    mysql_connect
("localhost","root","1234") or die ("no se ha podido conectar a la BD");

    
mysql_select_db("xtremebook") or die ("no se ha podido seleccionar la BD");

    
$sql "SELECT ID,COMENTARIO,FECHA,HORA,fotos_ID FROM comentarios";
    
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta");

    While (
$registro=mysql_fetch_array($consulta)){
        echo 
"<br><br> Comentario: ".$registro['COMENTARIO']."<BR>hecho el:<br>".$registro['FECHA']."<BR> a las ".$registro['HORA'];
    }

?>
        </div></th>
      </tr>
      <tr>
        <th scope="row"><div align="left"> </div></th>
      </tr>
    </table>
  #8 (permalink)  
Antiguo 09/06/2010, 19:59
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años
Puntos: 0
Respuesta: Amigos Ayuda con este sistema de comentario

En el SQL te falto filtrar por el ID de la foto:

Código PHP:
SELECT ID,COMENTARIO,FECHA,HORA,fotos_ID FROM comentarios WHERE fotos_ID '$foto_id' 
Donde $foto_id es el ID de la foto que quieres ver los comentarios
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #9 (permalink)  
Antiguo 09/06/2010, 20:06
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Amigos Ayuda con este sistema de comentario

me queda una sola duda! pongo ese codigo que me dijiste pero no me aparecen los comentarios :(

Código PHP:
<?php
session_start
();
?>

<?php

require_once 'PHPPaging.lib.php';

$paging = new PHPPaging


   
// Abrimos la conexión al servidor MySQL
$link mysql_connect('localhost''root''1234');
mysql_select_db('xtremebook'$link);


// Instanciamos, indicando el recurso de conexión
$paging = new PHPPaging($link);


$q "SELECT * FROM fotos ORDER BY id DESC";

// Y se usa la función agregarConsulta() (Ver documentación)
$paging->agregarConsulta($q);  

$paging->ejecutar();
?>

<?php
echo '<form action="Ecomentario.php" method="post">';
while(
$datos $paging->fetchResultado()) { 
    
// En cada ciclo, la variable $datos se convierte en un arreglo
    // que contiene los datos de la fila que corresponde
    
echo "<img src =\"ver.php?ID=".$datos['ID']."\"width='500' height='500'><br>";
    echo 
"Nombre:" $datos['NOMBRE'] . "<br />";
    echo 
"Apellidos:" $datos['TIPO'] . "<br />";
    echo 
"País:" $datos['PESO'] . "<br />";
    echo 
"<br />";
    
?>
    <p>
      <textarea name="COMENTARIO[<?php echo $datos['ID']; ?>]"></textarea>
      <?php
}
echo 
'<input type="submit" value="agregar comentarios" />';
echo 
'</form>';
?> 
      
      <?php //Una cadena conteniendo el codigo HTML de la barra de 
//navagación es generada y guardada en la variable $links.
$links $paging->fetchNavegacion();

echo 
$links;
?>
    </p>
    <p>&nbsp;</p>
    <table align="center" bgcolor="#D8EFFA" width="300" border="0" cellspacing="5">
      <tr>
        <th scope="row"><div align="left">
          <?php
    mysql_connect
("localhost","root","1234") or die ("no se ha podido conectar a la BD");

    
mysql_select_db("xtremebook") or die ("no se ha podido seleccionar la BD");


    
$sql "SELECT ID,COMENTARIO,FECHA,HORA,fotos_ID FROM comentarios WHERE fotos_ID = '$foto_id' " ;
    
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta");
 
    While (
$registro=mysql_fetch_array($consulta)){
        echo 
" <br><br> Comentario: ".$registro['COMENTARIO']."<BR>hecho el:<br>".$registro['FECHA']."<BR> a las ".$registro['HORA'];
    }

?>
        </div></th>
      </tr>
      <tr>
        <th scope="row"><div align="left"> </div></th>
      </tr>
    </table>
    <p>&nbsp; </p>

Última edición por L4NS; 09/06/2010 a las 20:53
  #10 (permalink)  
Antiguo 10/06/2010, 18:29
 
Fecha de Ingreso: mayo-2010
Mensajes: 99
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Amigos Ayuda con este sistema de comentario

listoo amigoo gracias por tu ayudaaaa! :D ya lo logre me di cuenta que me faltaba declarar la variable! :D gracias

Etiquetas: comentario, sitemap
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 06:17.