Foros del Web » Programando para Internet » PHP »

Problema

Estas en el tema de Problema en el foro de PHP en Foros del Web. Yo tengo este codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php include ( "config/config.php" ) ; ?> <?php $c = mysqli_fetch_assoc ( mysqli_query ( $conectar ...
  #1 (permalink)  
Antiguo 28/12/2012, 11:32
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 4 meses
Puntos: 2
Problema

Yo tengo este codigo
Código PHP:
Ver original
  1. <?php
  2. include("config/config.php");
  3. ?>
  4. <?php
  5. $c = mysqli_fetch_assoc(mysqli_query($conectar, "SELECT * FROM Configuraciones WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."'"));
  6. ?>
  7. <?php
  8. function template($ruta,$array)
  9. {
  10.     /* Tomamos el archivo */
  11.     $template = file_get_contents("$ruta");
  12.  
  13.     /* Mostramos el template con los cambios realizados */
  14.     ob_start();
  15.     echo eval("?".">$template");    
  16.     $template = ob_get_contents();
  17.     ob_end_clean();
  18.  
  19.     /* Reemplazamos el contenido entre corchetes por la etiqueta PHP */
  20.     foreach ($array as $a => $b) {
  21.         $template = str_replace("{".$a."}", "$b", $template);
  22.     }
  23.     return $template;
  24. }
  25. /* Establecemos las variables */
  26. $ruta = "test.tpl";
  27. $n = mysqli_fetch_array(mysqli_query($conectar, "SELECT * FROM Noticias WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."' AND Menu = '".mysqli_real_escape_string($conectar, $_GET[n])."'"));
  28. if($n){
  29. $array = array(
  30.     "header" => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  31. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  32. <head>
  33.     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  34.     <meta name="GENERATOR" content="BlogIn">
  35.     <meta name="description" content=""/>
  36.   <meta name="keywords" content="HTML, tags, commands">
  37.     <meta name="author" content="" />
  38.     <title>{titulo}</title>
  39. </head>',
  40.     "titulo" => "$c[Titulo]",
  41.     "descripcion" => "$c[Descripcion]",
  42.     "noticiatitulo" => "$n[Titulo]",
  43.     "noticia" => "$n[Contenido]",
  44.     "fecha" => "$n[Fecha]",
  45.     "footer" => "© 2012-2013 Simple Organization. All rights Reserved. Todos los derechos reservados <a href='http://iblog.net'>iBlog</a>"
  46. );
  47. }else{
  48. $array = array(
  49.     "header" => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  50. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  51. <head>
  52.     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  53.     <meta name="GENERATOR" content="BlogIn">
  54.     <meta name="description" content=""/>
  55.   <meta name="keywords" content="HTML, tags, commands">
  56.     <meta name="author" content="" />
  57.     <title>{titulo}</title>
  58. </head>',
  59.     "titulo" => "$c[Titulo]",
  60.     "descripcion" => "$c[Descripcion]",
  61.     "noticiatitulo" => "El articulo no existe.",
  62.     "noticia" => "",
  63.     "fecha" => "",
  64.     "footer" => "© 2012-2013 Simple Organization. All rights Reserved. Todos los derechos reservados <a href='http://iblog.net'>iBlog</a>"
  65. );
  66. }
  67. /* Llamamos a la funci¨®n */
  68. echo template($ruta, $array);
  69. ?>

Y quiero añadirle este codigo
Código PHP:
Ver original
  1. $m = mysqli_query($conectar, "SELECT * FROM Noticias WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."'");
  2. while($m1 = mysqli_fetch_array($m)){
  3.     echo "$m1[Menu]";
  4. }

para poner en la plantilla {menu} y que me salgan todos los menus del usuario yo he probado a remplazar el echo "$m1[Menu]"; por
Código PHP:
Ver original
  1. "header" => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  3. <head>
  4.     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  5.     <meta name="GENERATOR" content="BlogIn">
  6.     <meta name="description" content=""/>
  7.   <meta name="keywords" content="HTML, tags, commands">
  8.     <meta name="author" content="" />
  9.     <title>{titulo}</title>
  10. </head>',
  11.     "titulo" => "$c[Titulo]",
  12.     "descripcion" => "$c[Descripcion]",
  13.     "noticiatitulo" => "El articulo no existe.",
  14.         "noticia" => "",
  15.     "fecha" => "",
  16.     "menu" => "$m1[Menu]",
  17.     "footer" => "© 2012-2013 Simple Organization. All rights Reserved. Todos los derechos reservados <a href='http://iblog.net'>iBlog</a>"
  18. );
(He añadido "menu" => "$m1[Menu]",) pero solo me sale 1 categoria del menu es como si tuviese LIMIT 1 no muestra todos las categorias del menu solo 1 ¿Porque? yo quiero que se muestren todas
  #2 (permalink)  
Antiguo 28/12/2012, 12:19
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: Problema

Yo aquí veo varias cosas, te comento como lo haría yo.

Remplazar estas apariciones $_GET[d] | $_GET[n] por $_GET['d'] | $_GET['n']

Remplazaría:

Código PHP:
Ver original
  1. function template($ruta,$array)
  2. {
  3.     /* Tomamos el archivo */
  4.     $template = file_get_contents("$ruta");
  5.  
  6.     /* Mostramos el template con los cambios realizados */
  7.     ob_start();
  8.     echo eval("?".">$template");    
  9.     $template = ob_get_contents();
  10.     ob_end_clean();
  11.  
  12.     /* Reemplazamos el contenido entre corchetes por la etiqueta PHP */
  13.     foreach ($array as $a => $b) {
  14.         $template = str_replace("{".$a."}", "$b", $template);
  15.     }
  16.     return $template;
  17. }

Por:

Código PHP:
Ver original
  1. function template($ruta,$array)
  2. {
  3.     /* Mostramos el template con los cambios realizados */
  4.     ob_start();
  5.     include $ruta;
  6.     $template = ob_get_contents();
  7.     ob_end_clean();
  8.  
  9.     /* Reemplazamos el contenido entre corchetes por la etiqueta PHP */
  10.     foreach ($array as $a => $b)
  11.     {
  12.         $template = str_replace("{".$a."}", $b, $template);
  13.     }
  14.  
  15.     return $template;
  16. }

Remplazaría:

Código PHP:
Ver original
  1. "titulo" => "$c[Titulo]",
  2. "descripcion" => "$c[Descripcion]",
  3. "noticiatitulo" => "$n[Titulo]",
  4. "noticia" => "$n[Contenido]",
  5. "fecha" => "$n[Fecha]",

Por:

Código PHP:
Ver original
  1. "titulo" => $c['Titulo'],
  2. "descripcion" => $c['Descripcion'],
  3. "noticiatitulo" => $n['Titulo'],
  4. "noticia" => $n['Contenido'],
  5. "fecha" => $n['Fecha'],

Y bueno la parte del código que añades.

Código PHP:
Ver original
  1. $m = mysqli_query($conectar, "SELECT * FROM Noticias WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."'");
  2. while($m1 = mysqli_fetch_array($m)){
  3.     echo "$m1[Menu]";
  4. }

Deberías guardar los menús en una variable y después pasarlos al array

Código PHP:
Ver original
  1. "menu" => $menus


Espero haber ayudado.

Saludos!
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #3 (permalink)  
Antiguo 28/12/2012, 12:42
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Problema

Gracias por todo peor mira ahora tengo este codigo
Código PHP:
Ver original
  1. <?php
  2. include("config/config.php");
  3. ?>
  4. <?php
  5. $c = mysqli_fetch_assoc(mysqli_query($conectar, "SELECT * FROM Configuraciones WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."'"));
  6. $n = mysqli_fetch_array(mysqli_query($conectar, "SELECT * FROM Noticias WHERE Dominio =  '".mysqli_real_escape_string($conectar, $_GET[d])."' AND Menu = '".mysqli_real_escape_string($conectar, $_GET[n])."'"));
  7. ?>
  8. <?php
  9. function template($ruta,$array)
  10. {
  11.     /* Tomamos el archivo */
  12.     $template = file_get_contents("$ruta");
  13.  
  14.     /* Mostramos el template con los cambios realizados */
  15.     ob_start();
  16.     echo eval("?".">$template");    
  17.     $template = ob_get_contents();
  18.     ob_end_clean();
  19.  
  20.     /* Reemplazamos el contenido entre corchetes por la etiqueta PHP */
  21.     foreach ($array as $a => $b) {
  22.         $template = str_replace("{".$a."}", "$b", $template);
  23.     }
  24.     return $template;
  25. }
  26. /* Establecemos las variables */
  27. $ruta = "test.tpl";
  28. $m = mysqli_query($conectar, "SELECT * FROM Noticias WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."'");
  29. while($m1 = mysqli_fetch_array($m)){
  30.     $menu = "$m1[Menu]";
  31. }
  32. $array = array(
  33.     "header" => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  34. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  35. <head>
  36.     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  37.     <meta name="GENERATOR" content="BlogIn">
  38.     <meta name="description" content=""/>
  39.   <meta name="keywords" content="HTML, tags, commands">
  40.     <meta name="author" content="" />
  41.     <title>{titulo}</title>
  42. </head>',
  43.     "titulo" => $c['Titulo'],
  44.     "descripcion" => $c['Descripcion'],
  45.     "noticiatitulo" => $n['Titulo'],
  46.     "noticia" => $n['Contenido'],
  47.     "fecha" => $n['Fecha'],
  48.     "menu" => $menu,
  49.     "footer" => "© 2012-2013 Simple Organization. All rights Reserved. Todos los derechos reservados <a href='http://iblog.net'>iBlog</a>"
  50. );
  51. /* Llamamos a la funci¨®n */
  52. echo template($ruta, $array);
  53. ?>

Y sige solo saliendome 1 categoria de las 3 que tengo (Categoria me refiero a menus)

¿O el while tendria que estar dentro del array?
  #4 (permalink)  
Antiguo 28/12/2012, 13:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema

Mas bien deberías pasarle un arreglo con todos los elementos del menú, el while() que tienes lo único que hace es sobre escribir la misma variable $menu una y otra vez.

Es por eso que sólo se queda con un sólo valor, intenta agrupar cada resultado en un array.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/12/2012, 13:01
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Problema

Cita:
Iniciado por pateketrueke Ver Mensaje
Mas bien deberías pasarle un arreglo con todos los elementos del menú, el while() que tienes lo único que hace es sobre escribir la misma variable $menu una y otra vez.

Es por eso que sólo se queda con un sólo valor, intenta agrupar cada resultado en un array.
Me podrias ayudar, Y eso como se hace? hago un array con el valor $menu y despues en el array que tengo pongo el otro array?
  #6 (permalink)  
Antiguo 28/12/2012, 13:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema

Según entiendo la clave está aquí.
Código PHP:
$menu = array();

while(
$m1 mysqli_fetch_array($m)){
    
$menu []= "$m1[Menu]";
}

var_dump($menu); 
PDTA: te sugiero consultar el manual, este tipo de cosas ya deberías saberlas hacer.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 28/12/2012, 13:13
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Problema

Código PHP:
Ver original
  1. /* Establecemos las variables */
  2. $ruta = "test.tpl";
  3. $menu = array();
  4. $m = mysqli_query($conectar, "SELECT * FROM Noticias WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."'");
  5. while($m1 = mysqli_fetch_array($m)){
  6.     $menu[] = "$m1[Menu]";
  7. }
  8. $n = mysqli_fetch_array(mysqli_query($conectar, "SELECT * FROM Noticias WHERE Dominio = '".mysqli_real_escape_string($conectar, $_GET[d])."' AND Menu = '".mysqli_real_escape_string($conectar, $_GET[n])."'"));
  9. if($n){
  10. $array = array(
  11.     "header" => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  12.  
  13. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  14. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  15. <head>
  16.     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  17.     <meta name="GENERATOR" content="BlogIn">
  18.     <meta name="description" content=""/>
  19.   <meta name="keywords" content="HTML, tags, commands">
  20.     <meta name="author" content="" />
  21.     <title>{titulo}</title>
  22. </head>',
  23.     "titulo" => $c['Titulo'],
  24.     "descripcion" => $c['Descripcion'],
  25.     "noticiatitulo" => $n['Titulo'],
  26.     "noticia" => $n['Contenido'],
  27.     "fecha" => $n['Fecha'],
  28.     "menu" => $menu,
  29.     "footer" => "© 2012-2013 Simple Organization. All rights Reserved. Todos los derechos reservados <a href='http://iblog.net'>iBlog</a>"
  30. );
  31. }else{
  32. $array = array(
  33.     "header" => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  34.  
  35. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  36. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  37. <head>
  38.     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
  39.     <meta name="GENERATOR" content="BlogIn">
  40.     <meta name="description" content=""/>
  41.   <meta name="keywords" content="HTML, tags, commands">
  42.     <meta name="author" content="" />
  43.     <title>{titulo}</title>
  44. </head>',
  45.     "titulo" => $c['Titulo'],
  46.     "descripcion" => $c['Descripcion'],
  47.     "noticiatitulo" => "El articulo no existe.",
  48.     "noticia" => "",
  49.     "fecha" => "",
  50.     "menu" => $menu,
  51.     "footer" => "© 2012-2013 Simple Organization. All rights Reserved. Todos los derechos reservados <a href='http://iblog.net'>iBlog</a>"
  52. );
  53. }
  54. /* Llamamos a la funci¨®n */

Pero me da error del else
  #8 (permalink)  
Antiguo 29/12/2012, 05:17
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Problema

Me da error en el else
  #9 (permalink)  
Antiguo 29/12/2012, 05:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema

Me imagino que hay que adivinar el mensaje de error que obtienes, ¿verdad?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 29/12/2012, 05:57
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Problema

Solucionado

Última edición por XD2XD2; 29/12/2012 a las 08:20

Etiquetas: html, mysql, sql, variables, usuarios
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 15:05.