Foros del Web » Programando para Internet » PHP »

Problemilla con PHP y MySQL (script mensajería)

Estas en el tema de Problemilla con PHP y MySQL (script mensajería) en el foro de PHP en Foros del Web. Buenas a todos. Se me ocurrió desarrollar un 'sistema de mensajería privada' entre usuarios para un proyecto de clase. El caso es que no consigo ...
  #1 (permalink)  
Antiguo 16/03/2010, 04:38
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 14 años, 9 meses
Puntos: 0
Problemilla con PHP y MySQL (script mensajería)

Buenas a todos.

Se me ocurrió desarrollar un 'sistema de mensajería privada' entre usuarios para un proyecto de clase.

El caso es que no consigo hacer que funcione.

Código PHP:
if ($usuario) {
                        
$informacion conexion("SELECT * FROM mensajes WHERE destinatario = '$usuario'");
                        
$datos mysql_fetch_array($informacion);
                        echo 
"<div id=\"mensaje\">";
                        echo 
"<p><b>Remitente:</b> ".$datos['remitente']."</p>";
                        echo 
"<p><b>Fecha:</b> ".$datos['fecha']."</p>";
                        echo 
"<p><b>Asunto:</b> ".$datos['asunto']."</p>";
                        echo 
"<p><b>Contenido:</b> ".$datos['mensaje']."</p>";
                        echo 
"</div>";
                    } 
Ese es el código que en teoría me debería sacar en la página todos los mensajes de un determinado destinatario, pero sólo me saca el primer registro y no logro saber por qué.

Y el segundo error que me da es al enviar un mensaje. Me dejó enviar un mensaje, pero ahora me dice error en la sintaxis de la consulta. Este es el código que debería enviar mensaje:
Código PHP:
$insertar conexion("INSERT INTO mensajes (remitente, destinatario, asunto, mensaje, fecha) VALUES('$remitente','$destinatario','$asunto','$contenido',NOW() )");
            echo 
"<div id=\"contentf\">";
            echo 
"<p style=\"color: #0A0A0A; background-color: #008510; font-weight:bold; width: 820px; margin: 0 auto;\">".$_SESSION['nombre_usuario'].", el mensaje ha sido enviado</p>";
            echo 
"</div>"
Por si acaso os dejo también el código de la función conexion, aunque tengo otras muchas consultas y ninguna dan error:

Código PHP:
$sql mysql_connect(server,user,pass);
    
function 
conexion($sql) {
    
    if ( ! 
$link mysql_connect(server,user,pass) ) {
        echo (
"Datos de conexion incorrectos.");
        return 
false;
    }
    if ( ! 
mysql_select_db(bd,$link) ) {
        echo (
"Error al seleccionar la base de datos.");
        return 
false;
    }
    if ( ! 
$consulta mysql_query($sql,$link) ) {
        echo (
"Error de sintaxis en la consulta.");
        return 
false;
    }
    return 
$consulta;

Gracias de antemano,

Un saludo!
  #2 (permalink)  
Antiguo 16/03/2010, 04:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problemilla con PHP y MySQL (script mensajería)

por lo de tu primer error no es tal, vamos... si son varios resultados debes ciclar el puntero de dichos resultados...

ya que de la forma en la que lo haces solo obtienes el primer resultado del puntero... ;)

segundo, si no escapas tus variables antes de insertarlas en la BD eso genera posibles errores de sintaxis...

¿cual es dicho mensaje de error??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/03/2010, 04:49
 
Fecha de Ingreso: septiembre-2005
Mensajes: 14
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problemilla con PHP y MySQL (script mensajería)

La primera parte solo te saca un registro porque no los recorres todos. Lo solucionas asi:

$informacion = conexion("SELECT * FROM mensajes WHERE destinatario = '$usuario'");
while( $datos = mysql_fetch_array($informacion)){

echo "<div id=\"mensaje\">";
echo "<p><b>Remitente:</b> ".$datos['remitente']."</p>";
echo "<p><b>Fecha:</b> ".$datos['fecha']."</p>";
echo "<p><b>Asunto:</b> ".$datos['asunto']."</p>";
echo "<p><b>Contenido:</b> ".$datos['mensaje']."</p>";
echo "</div>";
}
  #4 (permalink)  
Antiguo 16/03/2010, 05:22
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemilla con PHP y MySQL (script mensajería)

Gracias por vuestras respuestas.

El error que me genera la consulta de enviar mensaje es simplemente un: "Error de sintaxis en la consulta."


jordinogue, he probado eso, y me sigue sin sacar todos los registros, es más, ahora no me saca ni el primero... :S
  #5 (permalink)  
Antiguo 16/03/2010, 05:26
 
Fecha de Ingreso: septiembre-2005
Mensajes: 14
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problemilla con PHP y MySQL (script mensajería)

Perdon, faltaba el query ;)
$informacion = conexion("SELECT * FROM mensajes WHERE destinatario = '$usuario'");
$resultado=mysql_query($informacion) or die (mysql_error())
while( $datos = mysql_fetch_array($resultado,MYSQL_ASSOC)){

echo "<div id=\"mensaje\">";
echo "<p><b>Remitente:</b> ".$datos['remitente']."</p>";
echo "<p><b>Fecha:</b> ".$datos['fecha']."</p>";
echo "<p><b>Asunto:</b> ".$datos['asunto']."</p>";
echo "<p><b>Contenido:</b> ".$datos['mensaje']."</p>";
echo "</div>";
}
  #6 (permalink)  
Antiguo 16/03/2010, 05:53
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemilla con PHP y MySQL (script mensajería)

Esto:
Código PHP:
$informacion conexion("SELECT * FROM mensajes WHERE destinatario = '$usuario'"); 
$resultado=mysql_query($informacion) or die (mysql_error());
while( 
$datos mysql_fetch_array($resultado,MYSQL_ASSOC)){

echo 
"<div id=\"mensaje\">"
echo 
"<p><b>Remitente:</b> ".$datos['remitente']."</p>"
echo 
"<p><b>Fecha:</b> ".$datos['fecha']."</p>"
echo 
"<p><b>Asunto:</b> ".$datos['asunto']."</p>"
echo 
"<p><b>Contenido:</b> ".$datos['mensaje']."</p>"
echo 
"</div>"

Me devuelve el siguiente error:
Código:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #8' at line 1
No sé ni de donde sale 'Resource id #8' :S
  #7 (permalink)  
Antiguo 16/03/2010, 05:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problemilla con PHP y MySQL (script mensajería)

lo que sucede es que tu función conexion() devuelve un #resource

y si analizas con calma, después de la primer linea estas ejecutando dicho valor como una consulta mas...

de verdad, ¿no te has dado cuenta??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 16/03/2010, 06:02
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemilla con PHP y MySQL (script mensajería)

Esque usé un tutorial para la conexión con la base de datos, y la verdad que no presté mucha atención a esa función U_U... buscaré otra forma de conectar con la base de datos

Gracias por vuestras respuestas!
  #9 (permalink)  
Antiguo 16/03/2010, 06:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problemilla con PHP y MySQL (script mensajería)

bueno, no digo que la función esté mal.... si reflexionas, y lees el manual...

mysql_query() devuelve precisamente eso, un puntero a los resultados... que es lo mismo que devuelve tu función, que al caso es la versión resumida de todo el proceso...

lo que si esta errada es la segunda consulta fuera de tu función, y sobre todo el uso de las variables relacionadas al puntero... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 16/03/2010, 06:13
 
Fecha de Ingreso: marzo-2010
Mensajes: 15
Antigüedad: 14 años
Puntos: 0
Respuesta: Problemilla con PHP y MySQL (script mensajería)

el sesgundo error lo puedes sacar haciendo un echo de el string que envias a mysql ya que por lo que veo unas de las variables es una funcion asi que date cuenta que es lo que realmente guarda ese select

Etiquetas: mysql
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 20:15.