Función PHP/MySQL

  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Agosto 1st, 2011, 1:00 pm

Hola,

Estoy tratando de seleccionar todas las filas de datos de una tabla, contarlos y salida un valor numérico, basada en el actual usuario conectado. El problema que tengo es seleccionar los datos según el usuario. Si utilizo la función que he escrito sin especificar un usuario, se seleccione los datos y total las filas correctamente, por lo que sé que está trabajando la parte de la función.

PHP Código: [ Select ]
function totalComments() {
   $result = mysql_query("SELECT * FROM comments WHERE name = '" . $forum_user['username'] . "'")
   or die(mysql_error());
   $num_rows = mysql_num_rows($result);
   
   echo "$num_rows";
}
 
  1. function totalComments() {
  2.    $result = mysql_query("SELECT * FROM comments WHERE name = '" . $forum_user['username'] . "'")
  3.    or die(mysql_error());
  4.    $num_rows = mysql_num_rows($result);
  5.    
  6.    echo "$num_rows";
  7. }
  8.  


Rompiendo el código:

$forum_user ["usuario"] generará el nombre de usuario del usuario actualmente conectado.
Comentarios se introducen en la base de datos por nombre de usuario.
Cada comentario se da un identificador único.

Cualquier ayuda que consiste en saber lo que estoy haciendo mal se agradece.
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Agosto 1st, 2011, 1:00 pm

  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6130
  • Loc: Seattle, WA
  • Status: Offline

Nota Agosto 1st, 2011, 1:54 pm

Dos cosas:

1) Cuando se comparan las cadenas en una consulta SQL, que desea utilizar "Como" no =:

SQL Código: [ Select ]
SELECT * FROM TABLE WHERE name LIKE 'value'; --


2) Theres necesidad de seleccionar y devolver todas las filas si todo lo que desean no es un recuento de filas; utilizar SELECT COUNT(*) FROM tabla:

SQL Código: [ Select ]
SELECT COUNT(*) FROM TABLE WHERE name LIKE 'value'; --
The Beer Monocle. Classy.
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Agosto 1st, 2011, 2:59 pm

Hola spork, gracias por los comentarios.

Traté de cambiar como se sugirió como en lugar de = y usando COUNT(*). También traté de cambiar la consulta para:

PHP Código: [ Select ]
$result = mysql_query("SELECT COUNT(*) FROM comments WHERE name LIKE '{$forum_user['username']}'")
 
  1. $result = mysql_query("SELECT COUNT(*) FROM comments WHERE name LIKE '{$forum_user['username']}'")
  2.  


Ambos siguen a un valor de 0. También traté de cambiar de mysql_result a un mysql_fetch. También como resultado un valor de 0.

¿Cualquier otro sugiriendo que tiene?

Gracias
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Agosto 1st, 2011, 9:55 pm

Solución de algunos problemas.

En lugar de:
PHP Código: [ Select ]
$result = mysql_query("SELECT COUNT(*) FROM comments WHERE name LIKE '{$forum_user['username']}'")

Intente:
PHP Código: [ Select ]
$result = mysql_query("SELECT COUNT(*) FROM comments WHERE name LIKE 'Mike'")

Donde "MIKE" es un nombre que se encuentra en los resultados de base de datos y ve si trae resultados. Si lo hace el problema es con la variable. Si no trae ningún resultado, entonces el problema es con el "WHERE name como..." (ya hay resultados si no se especifica un "que").

También, intente:
PHP Código: [ Select ]
$result = mysql_query("SELECT * FROM comments WHERE name LIKE {$forum_user['username']}")
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Agosto 2nd, 2011, 12:31 pm

Bogey escribió:
Solución de algunos problemas.

En lugar de:
Código: [ Select ]
$result = mysql_query("SELECT COUNT(*) FROM comments WHERE name LIKE '{$forum_user['username']}'")

Intente:
Código: [ Select ]
$result = mysql_query("SELECT COUNT(*) FROM comments WHERE name LIKE 'Mike'")

Donde "MIKE" es un nombre que se encuentra en los resultados de base de datos y ve si trae resultados. Si lo hace el problema es con la variable. Si no trae ningún resultado, entonces el problema es con el "WHERE name como..." (ya hay resultados si no se especifica un "que").

Esto funciona correctamente y genera un valor de 5, que es correcta.


Bogey escribió:
También, intente:
Código: [ Select ]
$result = mysql_query("SELECT * FROM comments WHERE name LIKE {$forum_user['username']}")

Causas a la página para detener la carga cuando llega a la función. Ningún error no es salida.

Esto parece como si el error es con la variable. ¿Cualquier sugerencia sobre lo que puedo hacer?
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Agosto 2nd, 2011, 1:24 pm

Averiguar qué $forum_user ["usuario"] produce colocando: antes de la $ resultado variable y si existe ese valor en la fila/columna de "nombre".
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Agosto 2nd, 2011, 3:08 pm

OK, ahora creo que comenzaban a llegar al problema.

Cuando echo dentro de la función y, a continuación, llamar a la función, no genera nada. Sin embargo, si lo hago
PHP Código: [ Select ]
echo $forum_user['username'];
en cualquier lugar de la página, salida el nombre de usuario correcto. Desde mi entender, no debe ningún problema con la manera en que estoy haciendo, como $forum_user se basa en el actual período de sesiones, que es lo primero en la página. Así que en cualquier momento después de eso que llamamos $forum_user debería funcionar.

¿Los pensamientos?
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Agosto 3rd, 2011, 12:53 pm

PHP Código: [ Select ]
function totalComments($username) {
   $result = mysql_query("SELECT * FROM comments WHERE name = '" . $username . "'")
   or die(mysql_error());
   $num_rows = mysql_num_rows($result);
   
   echo "$num_rows";
}
 
// Calling it...
totalComments($forum_user['username']);
  1. function totalComments($username) {
  2.    $result = mysql_query("SELECT * FROM comments WHERE name = '" . $username . "'")
  3.    or die(mysql_error());
  4.    $num_rows = mysql_num_rows($result);
  5.    
  6.    echo "$num_rows";
  7. }
  8.  
  9. // Calling it...
  10. totalComments($forum_user['username']);

Debe trabajar
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Agosto 3rd, 2011, 3:37 pm

Funciono perfecto. Eres un genio, buen sir. Muy apreciado.
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Agosto 3rd, 2011, 8:48 pm

Sí no hay problema...pequeñas cosas como que frena el progreso en la programación.

He utilizado el código primero registrada en su post original..., pero sería mejor si utiliza sus sugerencia y utilizar el COUNT(*) en lugar de la forma en lo publicados.

SQL Código: [ Select ]
SELECT COUNT(*) FROM TABLE WHERE name LIKE 'value'; --
"Bring forth therefore fruits meet for repentance:" Matthew 3:8

Publicar Información

  • Total de mensajes en este tema: 10 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 178 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC