AYUDA EN SISTEMA DE APROBAR COMENTARIOS

Iniciado por Cerdo, 14 Agosto 2008, 13:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Cerdo

Buenas, tengo el siguiente codigo que hice con la finalidad de generar un sistema de comentarios con sistema de aprobarlos o rechazarlos desde un panel de administracion "Administrando_comments.php" y despues mostrarlos en otro lugar sea pues por ejemplo "Mostrar_comments.php" pero tengo un problema al momento de mostrar los datos de la base de datos valga la redundancia ya que por ejemplo tenemos que el formulario escribe los siguientes datos en la base de datos


<form action="2.php" method="POST">
Nombre: <input type="text" name="nombre">
Telefono: <input type="text" name="telefono">&nbsp;
<input type="submit" value="Enviar" name="B1">



Hasta ahi todo bien, escribe los datos de forma correcta haciendo uso del codigo de "2.php" pero a la hora de pasarme al area "Administrando_comments.php" me doy cuenta que los datos de la base de datos no se muestran ahi...pero en la tabla del mysql si estan escritos, ok pero permitanme terminar de explicar esto a detalle...el problema no radica ahi, el problema es que cuando haces una entrada por segunda ocasion en el formulario, pues ya aparece en "Aprobar_comments.php" y luego, cuando le das "aprobar comentario" se tendria que ir a la parte de "Mostrar_comentarios.php" pero esto no sucede...es decir no los muestra, pero otra vez se repite el error, haces una tercera llamada a "Aprobar comentario" y entonces ya se muestran los datos...es un error algo raro y no se si me explique bien, en resumen el codigo funciona sin problemas, hace lo que deberia hacer, pero tiene ese pequeño detalle o inconveniente o error, lo que sea, QUE SE SALTA LA PRIMERA ENTRADA QUE UNO INGRESA o_O

Sea pues que pones por ejemplo

Nombre: pepe
Telefono: 333333

Enviar

y nos devuelve, ENVIADO CORRECTAMENTE !!  ( y en efecto se escriben los datos en la tabla en el mysql)


te vas a "aprobar_comentarios.php" y no aparecen los datos...

Entonces te regresas a la pagina de "Comentarios.html" vuelves a meter

Nombre: pepe_numero2
Telefono: 4444444

y nos devuelve, ENVIADO CORRECTAMENTE !!  ( y en efecto se escriben los datos en la tabla en el mysql)

te vas a "aprobar_comentarios.php" y ya aparecen los datos o_o


Osea se salto la primer linea de los datos en la tabla de la base de datos y empezo a mostrarme los datos a partir de la segunda linea con los datos de la tabla, esto esta muy raro, es normal ? xD no creo pero esque no se donde este mi error.... pego aqui el codigo que estoy utilizando en "Aprobar_comments.php" pues ese es el que se encarga de mostrar los datos de la tabla en la base de datos y puede que ahi este mi error...

======= Aprobar_comments.php =========


<?php
//conexion a la base de datos

require_once('conexion.php');

//Creamos una consulta para filtrar los datos y un bucle para mostrarlos todos:
$select = "SELECT * FROM tabla WHERE Aprobado = '0'";
$query = mysql_query($select) or die(mysql_error());
$row = mysql_fetch_assoc($query);

while ($row = mysql_fetch_assoc($query)) {
echo $row['Nombre']."<br>";
echo $row['Telefono']."<br>";
echo '<a href="aprobar.php?ID='.$row['ID'].'">Aprobar</a><br>';
echo '<a href="rechazar.php?ID='.$row['ID'].'">Rechazar</a><br><br>';
}
?>





y este es el codigo del archivo "2.php" que se encarga de escribir los datos en la tabla


<?php

include('conexion.php');

//Conexion a la base de datos
require_once('conexion.php');

//Insertamos los datos:
$insert = "INSERT INTO tabla (Nombre, Telefono, Aprobado) VALUES ('".mysql_real_escape_string($_POST['nombre'])."', '".mysql_real_escape_string($_POST['telefono'])."', '0')";
$result = mysql_query($insert) or die(mysql_error());

if(!$result) 
{
echo "Los datos no pudieron ser insertados";
}
else {
//Datos insertados correctamente, si quieres puedes mostrar un mensaje o redireccionar con Header
header("Location: sistema.html");
}
?>



Ojala ustedes puedan ayudarme a encontrar el porque pasa esto y como solucionarlo, gracias !

kmykc

Que hay brother, pues mira, despues de hacer pruebas con los dos codigos que posteaste, lamento decir que efectivamente no imprime el primer registro de la DB.

Pero lo hice de otra manera con la cual tuve resultados muy buenos, y si imprime el primer registro, te posteare el codigo con mis modificaciones y algunas de tus lineas las dejo comentariadas, espero no te confundas.

El problema obviamente esta en el archivo "Aprobar_comments.php"


<?php
//conexion a la base de datos

require_once('conexion.php'); 

//Creamos una consulta para filtrar los datos y un bucle para mostrarlos todos:
$select "SELECT * FROM tabla WHERE aprobado = '0'";
$query mysql_query($select) or die(mysql_error());
//$row = mysql_fetch_assoc($query);     //REMOVIDO
$num=mysql_num_rows($query); //Obtener el numero de filas

$i=0;     //AGREGADO
while ($i $num) {     //AGREGADO
          //while ($row = mysql_fetch_assoc($query)) {     //REMOVIDO
          
$nombre=mysql_result($query,$i,"nombre");     //AGREGADO
          
$telefono=mysql_result($query,$i,"telefono");     //AGREGADO
          
$id=mysql_result($result,$i,"id");     //AGREGADO
          
echo $nombre."<br>";     //AGREGADO
          
echo $telefono."<br>";     //AGREGADO
          
echo '<a href="aprobar.php?ID='.$id.'">Aprobar</a><br>';
          echo 
'<a href="rechazar.php?ID='.$id.'">Rechazar</a><br><br>';

          
//TODO ESTO TAMBIEN REMOVIDO
  /*echo $num['nombre']."<br>";
     echo $row['nelefono']."<br>";
     echo '<a href="aprobar.php?ID='.$row['aprobado'].'">Aprobar</a>         <br>';
     echo '<a href="rechazar.php?ID='.$row['aprobado'].'">Rechazar</a>  <br><br>';*/

          
$i+=1;     //AGREGADO
}
?>



De esa forma a mi me funciono, espero que te aya servido de algo brother.



Saludos...

Cerdo

#2
Que tal kmykc muchas gracias por ayudarme ! eh colocado el codigo que me hiciste favor de pasar y la verdad que funciona bien a la hora de mostrarme los datos de la tabla, ahora si ya se muestra la primera =D , pero pasa 1 cosa


Que al darle "Aprobar" a un comentario, ya no lo aprueba xD es decir ya no sirve ese sistema...eh mirado tu codigo y todo parece estar en orden  tu k opinas =S

kmykc

Que tal Cerdo, que bueno que te aya funcionado bien.

Sobre el enlace para aprobar creo que el problema ya estaria en el codigo que tienes en tu archivo "aprobar.hp", postea tu codigo para verlo y haber que podemos hacer.


Saludos...

Cerdo

hola que onda kmykc mira este es el codigo de aprobar.php



<?php
require_once('conexion.php');

if(isset($_GET['ID']))
{
$update = "UPDATE tabla SET Aprobado = 1 WHERE ID = '".$_GET['ID']."'";
if(mysql_query($update))
{
//echo "Comentario agregado satisfactoriamente.";
header("Location: aprobar_comments.php");
}
else {
echo "El comentario no pudo ser aprobado o el ID suministrado es incorrecto.";
}
}
else {
echo "No especifico ningun ID.";
}
?>




y este es el de rechazar.php





<?php
require_once('conexion.php');

if(isset($_GET['ID']))
{
$update = "DELETE * FROM tabla WHERE ID = '".$_GET['ID']."'";
if(mysql_query($update))
{
//echo "Comentario agregado satisfactoriamente.";
header("Location: aprobar_comments.php");
}
else {
echo "El comentario no pudo ser rechazado o el ID suministrado es incorrecto.";
}
}
else {
echo "No especifico ningun ID.";
}
?>




Creo que requieren un par de modificaciones pero me esta dando un par de errores.

kmykc

Que hay cerdo.

Bueno mira, vamonos por partes, ya cheque tus dos codigos y me lanzaron algunos errorsillos pero nada fuerte, empecemos con el primero.

Pero antes que todo, quiero saber si en tu tabla, tienes:

1.- Un campo que se llame ID, si lo tienes no hay problema
2.- Si ese campo es autoincrement por que si no lo es, no asignara el indice de cada registro que agregues y por eso te mandaria un error ya que el argumento que le pasarias llegaria como NULL, si no tienes ese problema, sigamos, pero si lo tienes deberás solucionarlo.

----------"aprobar.php"---------------
OJO, pondre con comentarios (// ERROR) el error y lo explicare despues del code


<?php
require_once('conexion.php'); 

if(isset(
$_GET['ID']))
{
$update "UPDATE tabla SET Aprobado = 1 WHERE ID = '".$_GET['ID']."'";
if(mysql_query($update))
{
echo "Comentario agregado satisfactoriamente.<br><br>";
//header("Location: aprobar_comments.php");  // ERROR 1
include_once("aprobar_comments.php");
}
else {
echo "El comentario no pudo ser aprobado o el ID suministrado es incorrecto.";
}
}
else {
echo "No especifico ningun ID.";
}
mysql_close($con);
?>



ERROR 1: Estas haciendo un redireccionamiento, al parecer ilegal, lo que hice fue mejor incluir una sola vez la pagina "aprobar_comments.php", pero de hay en fuera todo tu code esta bien.

Vamos con el otro

-----------rechazar.php----------
OJO, pondre con comentarios (// ERROR) el error y lo explicare despues del code


<?php
require_once('conexion.php'); 

if(isset(
$_GET['ID']))
{
        
// ERROR 1
        //$update = "DELETE * FROM tabla WHERE ID = '".$_GET['ID']."'";
        
$update "DELETE FROM tabla WHERE ID = '".$_GET['ID']."'";
if(mysql_query($update))
{
echo "Comentario rechazado satisfactoriamente.";
//header("Location: aprobar_comments.php"); // ERROR 2
include_once("aprobar_comments.php");
}
else {
echo "El comentario no pudo ser rechazado o el ID suministrado es incorrecto.";
}
}
else {
echo "No especifico ningun ID.";
}
mysql_close($con);
?>



ERROR 1: En esta parte si tuviste un error en la consulta, si te das cuenta el error era minimo, el "asterisco" despues de "DELETE" no se coloca, por lo tanto, solo bastaba con quitarlo.

ERROR 2: Este tiene la misma explicacion que el de el primer codigo.

Eso es todo, yo hice las pruebas y de esa manera me corrio sin ningun error, PERO QUE NO SE TE OLVIDE REVISAR SI TU CAMPO "ID" EN TU TALBA ES "AUTOINCREMENT".

Espero que te aya ayudado brother, cualquier cosa solo postea.

Tengo un tutorial que hice sobre el manejo de MySQL sobre la consola, esta hecho en PDF, si quieres hecharle un vistaso a qui te dejo el enlace de descarga directa, no es gran cosa, pero te puede servir para algo.

TUTORIAL -->  http://blendarchivos.net76.net/tutos/batchMysql.rar



Saludos...


Cerdo

Muchas gracias kmykc gracias a tu ayuda pude terminar el sistema de aprobar comentarios, eres genial, una vez mas Gracias  :D

kmykc

No hay de que brother para eso estamos.

"Hoy por ti, mañana por mi"


Saludos...