Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: viher en 20 Agosto 2010, 21:46 pm



Título: página dinamica atraves de una consulta mysql
Publicado por: viher en 20 Agosto 2010, 21:46 pm
hola,tengo el siguiente codigo para hacer una web modular

Código
  1. <?
  2. include ("config.php");
  3. $id = $_GET['id'];
  4. $sql = "select * from categorias";
  5. $squery = mysql_query($sql);
  6. while($row = mysql_fetch_array($squery)){
  7. $categoria = $row['id']; }
  8.  
  9. switch ($_GET["sección"]){
  10. case '$categoria';
  11.    $incluir = '$categoria.php';
  12. $descripcion = '$categoria';
  13.    $titulo = '$categoria';
  14.    break;
  15. default:
  16.  
  17.    $incluir = 'categorias.php';
  18.    $titulo = 'titulo';
  19. $descripcion = 'descripcion';
  20. }
  21. ?>
  22.  

al principio del codigo lo que intento es que en categorias.php que hace una consulta saque la id y la ponga en el include,pero no me funciona,algo estoy haciendo mal pero no se el que,aver si me podeis ayudar,gracias.

me da este error y me sale la misma pagina siempre

Código:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Archivos de Programa\appserv\www\2\index.php on line 10

gracias y un saludo!


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: ~ Yoya ~ en 20 Agosto 2010, 22:44 pm
El error debe estar en:
  • La conexión hacia la Base De Datos
  • La selección de la base de datos
  • La consulta SQL

Trata de usar la función mysql_error() (http://www.php-es.com/function.mysql-error.html), para que sepas donde se encuentra el error.


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: Shell Root en 20 Agosto 2010, 22:57 pm
jojojo se me adelanto Yoya
Código
  1.  include('config.php');
  2.  #$sID = $_GET['id']; # Esto para qué?
  3.  $sSql = 'SELECT * FROM categorias';
  4.  $sQuery = mysql_query($sSql);
  5.  if(!$sQuery){
  6.    die('Invalid query: ' . mysql_error());
  7.  }
  8.  
  9.  while($sRow = mysql_fetch_array($sQuery)){
  10.    $sCategoria = $sRow['id'];
  11.  }
  12.  
  13.  switch ($_GET['sección']){
  14.    case 1: # Verificar tú caso, creo que es mejor usar un IF
  15.      $incluir = $sCategoria.'.php';
  16.      $descripcion = $sCategoria;
  17.      $titulo = $sCategoria;
  18.      break;
  19.    default:
  20.      $incluir = 'categorias.php';
  21.      $titulo = 'titulo';
  22.      $descripcion = 'descripcion';
  23.  }


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: viher en 21 Agosto 2010, 02:59 am
Código:
Invalid query: 

eso es lo que pasa si uso tu codigo Shell Root


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: Shell Root en 21 Agosto 2010, 03:02 am
jojojojo cambia la siguiente linea,
Código
  1.  include('config.php');
  2.  #$sID = $_GET['id']; # Esto para qué?
  3.  $sSql = 'SELECT * FROM categorias';
  4.  $sQuery = mysql_query($sSql);
  5.  if(!$sQuery){
  6.    die('Invalid query: ' . mysql_error());
  7.  }
  8.  
  9.  while($sRow = mysql_fetch_array($sQuery)){
  10.    $sCategoria = $sRow['id'];
  11.  }
  12.  
  13.  switch ($_GET['sección']){
  14.    case 1: # Verificar tú caso, creo que es mejor usar un IF
  15.      $incluir = $sCategoria.'.php';
  16.      $descripcion = $sCategoria;
  17.      $titulo = $sCategoria;
  18.      break;
  19.    default:
  20.      $incluir = 'categorias.php';
  21.      $titulo = 'titulo';
  22.      $descripcion = 'descripcion';
  23.  }


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: viher en 21 Agosto 2010, 03:29 am
tengo un problema,resulta que esto solo me funciona con el ultimo registro de la tabla,es decir si tengo 3 registros en la tabla y pincho en el tercero me habre bien la url,pero si pincho en el 1 o en el 2 se me queda en la misma página aunque la url cambie por index.php?sección=ID

porque pasa esto?

Código
  1. <?
  2. include('config.php');
  3.  $sSql = 'SELECT * FROM categorias';
  4.  $sQuery = mysql_query($sSql);
  5. if(!$sQuery){
  6.    die('Invalid query: ' . mysql_error());
  7.  }
  8.  
  9.  while($sRow = mysql_fetch_array($sQuery)){
  10.    $sCategoria = $sRow['id'];
  11.  }
  12.  
  13.  switch ($_GET['sección']){
  14.    case $sCategoria; # Verificar tú caso, creo que es mejor usar un IF
  15.      $incluir = $sCategoria.'.php';
  16.      $descripcion = $sCategoria;
  17.      $titulo = $sCategoria;
  18.      break;
  19.  
  20.    default:
  21.      $incluir = 'categorias.php';
  22.      $titulo = 'titulo';
  23.      $descripcion = 'descripcion';
  24.  }
  25. ?>

gracias


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: Shell Root en 21 Agosto 2010, 04:04 am
Obvio, tenes que realizar un WHERE (Condición) en la query, es decir,
Código
  1. SELECT * FROM categorias WHERE (ID = "$_GET['id']");

En php, sería algo así,
Código
  1.  include('config.php');
  2.  $sID = $_GET['id'];
  3.  $sSql = 'SELECT * FROM categorias WHERE (ID ='.$sID.');';
  4.  $sQuery = mysql_query($sSql);
  5. if(!$sQuery){
  6.    die('Invalid query: ' . mysql_error());
  7.  }
  8.  
  9.  while($sRow = mysql_fetch_array($sQuery)){
  10.    $sCategoria = $sRow['id'];
  11.  }
  12.  
  13.  switch ($_GET['sección']){
  14.    case $sCategoria: # Verificar tú caso, creo que es mejor usar un IF
  15.      $incluir = $sCategoria.'.php';
  16.      $descripcion = $sCategoria;
  17.      $titulo = $sCategoria;
  18.      break;
  19.    default:
  20.      $incluir = 'categorias.php';
  21.      $titulo = 'titulo';
  22.      $descripcion = 'descripcion';
  23.  }

Sigo pensando en que, no deberías de emplear el SWITCH, sino un simple IF-ELSE

Código
  1.  $sSeccion = $_GET['sección'];
  2.  if(!empty($sSeccion)){
  3.    # Acciones a realizar
  4.  }else{
  5.    # Acciones neutras
  6.  }


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: viher en 21 Agosto 2010, 04:29 am
me da este error:

Código:
Invalid query: 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 ')' at line 1

y puse el codigo que me diste

Código
  1.  include('config.php');
  2.  $sID = $_GET['id'];
  3. $sSql = 'SELECT * FROM categorias WHERE (ID ='.$sID.');';
  4.  $sQuery = mysql_query($sSql);
  5. if(!$sQuery){
  6.    die('Invalid query: ' . mysql_error());
  7.  }
  8.  
  9.  while($sRow = mysql_fetch_array($sQuery)){
  10.    $sCategoria = $sRow['id'];
  11.  }
  12.  
  13.  switch ($_GET['sección']){
  14.    case $sCategoria: # Verificar tú caso, creo que es mejor usar un IF
  15.      $incluir = $sCategoria.'.php';
  16.      $descripcion = $sCategoria;
  17.      $titulo = $sCategoria;
  18.      break;
  19.    default:
  20.      $incluir = 'categorias.php';
  21.      $titulo = 'titulo';
  22.      $descripcion = 'descripcion';
  23.  }

y si uso un If como sería

Código
  1. $sSeccion = $_GET['sección'];
  2.  if(!empty($sSeccion)){
  3.      case $sCategoria: # Verificar tú caso, creo que es mejor usar un IF
  4.      $incluir = $sCategoria.'.php';
  5.      $descripcion = $sCategoria;
  6.      $titulo = $sCategoria;
  7.  }else{
  8.    echo "nada";
  9.  }

asi? gracias


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: ~ Yoya ~ en 21 Agosto 2010, 04:31 am
Bueno, ando en mi macbook y es un poco incomodo responder esto tipos de temas, prefiero hacerlo en Linux, ya que testeo directamente....

Citar
tengo un problema,resulta que esto solo me funciona con el ultimo registro de la tabla
Código
  1.  while($sRow = mysql_fetch_array($sQuery)){
  2.    $sCategoria = $sRow['id'];
  3.  }

Ese es tu problema, se ejecuta el primer ciclo del bucle while(), y a la variable $sCategoria se le da el valor del primer registro de la columna id de la tabla Categorias, luego entra el segundo ciclo y se le da el valor a la variable $sCategoria el valor del segundo registro del campo id, osea el valor anterior se cambia por este nuevo y al final la variable $sCategoria contendra un solo valor, que seria el ultimo registro.

Lo que puedes hacer es almacenar todos los valores en un Array, asi que cada registro sera parte del array.

Ejemplo de lo que haces, aver si entiendes:
Código
  1. <?php
  2. for($i=0;$i<=10;$i++){
  3. $valor = $i;
  4. }
  5. echo $valor;
  6. ?>
Salida:
Código:
10

Código
  1.      $incluir = $sCategoria.'.php';
Esto me acordó a Null Byte Injection, es vulnerable a LFI, pero seria necesario ingresar el PATH del archivo a la columna ID xD.


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: viher en 21 Agosto 2010, 04:35 am
y como podria solucionarlo Yoya? porque con los arrays no me entero muy bien,si puedes enseñarme un ejemplo o algo parecido que pueda adaptar a mi codigo... gracias por la ayuda


Título: Re: página dinamica atraves de una consulta mysql
Publicado por: ~ Yoya ~ en 21 Agosto 2010, 04:40 am
Ejemplo:

Código
  1. <?php
  2. for($i=0;$i<=10;$i++){
  3. $valor[] = $i;
  4. }
  5. foreach($valor as $result){
  6. echo $result;
  7. }
  8. ?>
Salida:
Código:
012345678910
Lee sobre Arrays en PHP, es mejor saber lo que haces para no liarte mas....