Foros del Web » Programando para Internet » PHP »

Error de sintaxis novato total: usar una variable

Estas en el tema de Error de sintaxis novato total: usar una variable en el foro de PHP en Foros del Web. Buenas, tengo una página llamada prueba.php que calcula un array aleatorio y lo guardo en la variable $cat_aleatoria. Esto funciona correctamente: En otra página (un ...
  #1 (permalink)  
Antiguo 21/07/2011, 14:05
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 7 meses
Puntos: 0
Error de sintaxis novato total: usar una variable

Buenas,
tengo una página llamada prueba.php que calcula un array aleatorio y lo guardo en la variable $cat_aleatoria. Esto funciona correctamente:
En otra página (un módulo de prestashop) llamo a esta página con un include, y tengo esta linea:

Código PHP:
$category = new Category(6003650Configuration::get('PS_LANG_DEFAULT')); 
Lo que quiero es en vez de 6003650 que use la variable $cat_aleatoria, pero si le pongo esto

Código PHP:
$category = new Category($cat_aleatoriaConfiguration::get('PS_LANG_DEFAULT')); 
no me va.

Cómo veis soy muy novato en php y me lío mucho con la sintaxis.

Gracias y saludos
  #2 (permalink)  
Antiguo 21/07/2011, 14:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error de sintaxis novato total: usar una variable

¿Porque no funciona? Es correcta esa sintaxis, o ¿te da algún error?
  #3 (permalink)  
Antiguo 21/07/2011, 14:55
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Error de sintaxis novato total: usar una variable

Este es mi prueba.php
Código PHP:
<?php
 $mi_array 
= array("1","2","1100080","1140090","1140095","1140100","1140110","1140112","1200005","1201010");
 
$max count($mi_array)-1;
$numaleatorio rand(0,$max);
$categoria=$mi_array[$numaleatorio];
//echo $categoria
?>
y aquí es cuando lo llamo:
lo llamo al principio del otro php con
Código PHP:
include 'prova.php'
y luego lo intento usar dentro de una función:

Código PHP:
function hookHome($params)
    {
        global 
$smarty;

        
$category = new Category([B]$cat_aleatoria[/B], Configuration::get('PS_LANG_DEFAULT'));
(
aquí va más codigo que no pongo para no liar)

Si en vez de poner $cat_aleatoria pongo 1100080 por ejemplo, funciona.

¿no puedo usar la variable $car_aleatoria dentro de la función? ¿cómo lo he de hacer?

muchas gracias!!

Última edición por guillegm; 21/07/2011 a las 14:56 Razón: code
  #4 (permalink)  
Antiguo 21/07/2011, 14:57
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Error de sintaxis novato total: usar una variable

Cita:
Iniciado por guillegm Ver Mensaje
Este es mi prueba.php
Código PHP:
<?php
 $mi_array 
= array("1","2","1100080","1140090","1140095","1140100","1140110","1140112","1200005","1201010");
 
$max count($mi_array)-1;
$numaleatorio rand(0,$max);
$categoria=$mi_array[$numaleatorio];
//echo $categoria
?>
y aquí es cuando lo llamo:
lo llamo al principio del otro php con
Código PHP:
include 'prova.php'
y luego lo intento usar dentro de una función:

Código PHP:
function hookHome($params)
    {
        global 
$smarty;

        
$category = new Category([B]$cat_aleatoria[/B], Configuration::get('PS_LANG_DEFAULT'));
(
aquí va más codigo que no pongo para no liar)

Si en vez de poner $cat_aleatoria pongo 1100080 por ejemplo, funciona.

¿no puedo usar la variable $car_aleatoria dentro de la función? ¿cómo lo he de hacer?

muchas gracias!!
es $categoria en vez de $cat_aleatoria
  #5 (permalink)  
Antiguo 21/07/2011, 14:57
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 15 años, 6 meses
Puntos: 10
Respuesta: Error de sintaxis novato total: usar una variable

Copia el error que te da tal cual te aparece en el browser
  #6 (permalink)  
Antiguo 21/07/2011, 14:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error de sintaxis novato total: usar una variable

Aparte de que o lo tienes que pasar por parámetro a la función o declararlo global como la variable $smarty.

Saludos.
  #7 (permalink)  
Antiguo 21/07/2011, 15:01
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Error de sintaxis novato total: usar una variable

Cita:
Iniciado por andresdzphp Ver Mensaje
es $categoria en vez de $cat_aleatoria
Ya, lo queria editar pero como se habia contestado no podía.

En el php el nombre de la variable esta bien.


¿No me sale ningún error en el navegador... que puede estar pasando? Puede ser porque la linea

Código PHP:
 $category = new Category([B]$cat_aleatoria[/B], Configuration::get('PS_LANG_DEFAULT')); 
está dentro de una función?

Última edición por guillegm; 21/07/2011 a las 15:08
  #8 (permalink)  
Antiguo 21/07/2011, 15:28
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Error de sintaxis novato total: usar una variable

He declarado global la variable $cat_aleatoria dentro de la función y fuera, después y antes de hacer el include al prueba.php, y no funciona de ninguna de las maneras.

¿Que más puedo hacer?
  #9 (permalink)  
Antiguo 21/07/2011, 15:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error de sintaxis novato total: usar una variable

Tiene que ser dentro de la función, otra opción es que la pases por parámetro:
Código PHP:
Ver original
  1. function algo($array, $categoria) {
  2.     // aqui dentro usas $categoria;
  3. }
  4.  
  5. //o
  6. function algo($array) {
  7.        global $categoria;
  8. }

Recuerda que el nombre de la variable debe de ser igual, si tu la estas generando como $categoria asi la debes de declarar como global, y no usar $cat_aleatoria.

Saludos.
  #10 (permalink)  
Antiguo 21/07/2011, 15:58
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Error de sintaxis novato total: usar una variable

Si, así es cómo creo que lo hago, declarando la variable $cat_aleatoria global

Código PHP:
include 'prova.php';
    function 
hookHome($params)
    {
        global 
$smarty;
        global 
$cat_aleatoria;
        
$category = new Category($cat_aleatoriaConfiguration::get('PS_LANG_DEFAULT'));
        
$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
        
//afegit
        
$products $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb $nb 10), 'date_add''DESC'falsetruetrue$nb); 
        
//$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10));
        
$smarty->assign(array(
        
'products' => $products,
        
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
        
'homeSize' => Image::getSize('home')));

        return 
$this->display(__FILE__'homefeatured.tpl');
    } 
y este es el prova.php

Código PHP:
<?php
 $mi_array 
= array("8308346","8308347","8308348","8308349","8308350","8308351","8308352","8308353","8308354","8308355","8308356","8308357","8308358","8308359","8308360","8308361","8308362","8308363","8308364","8308365","8308366","8308367","8308368","8308369","8308370","8308371","8308372","8308373","8308374","8308375","8308376","8308377","8308378","8308379");
$max count($mi_array)-1;
$numaleatorio rand(0,$max);
$cat_aleatoria=$mi_array[$numaleatorio];
//echo $cat_aleatoria;
?>
estan en el mismo directorio, por lo que el include funciona... pero no se que rayos pasa que no puedo usar $cat_aleatoria!!!

Las variables se llaman igual. No se lo paso por parámetros porque no lo controlo, quizás así:
Código PHP:
include 'prova.php';
    function 
hookHome($params,$cat_aleatoria)
    {
        global 
$smarty;
        
$category = new Category($cat_aleatoriaConfiguration::get('PS_LANG_DEFAULT'));
$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
        
//afegit
        
$products $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb $nb 10), 'date_add''DESC'falsetruetrue$nb); 
        
//$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10));
        
$smarty->assign(array(
        
'products' => $products,
        
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
        
'homeSize' => Image::getSize('home')));

        return 
$this->display(__FILE__'homefeatured.tpl');
    } 
  #11 (permalink)  
Antiguo 22/07/2011, 04:22
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años
Puntos: 253
Respuesta: Error de sintaxis novato total: usar una variable

Prueba a quitarle las comillas a las categorías dentro de la declaración del array. Igual el problema es que el contructor de Category está esperando un int y le pasas un string. No me queda nada claro, pero por probar que no quede.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #12 (permalink)  
Antiguo 22/07/2011, 07:09
 
Fecha de Ingreso: agosto-2007
Mensajes: 44
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Error de sintaxis novato total: usar una variable

No creo que sea por las comillas, porque si hago un echo de $cat_aleatoria me funciona.
  #13 (permalink)  
Antiguo 22/07/2011, 07:11
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años
Puntos: 253
Respuesta: Error de sintaxis novato total: usar una variable

Ya, pero es que echo puede imprimir cualquier cosa y el constructor de Category puede que sólo permita int. No tiene nada que ver.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #14 (permalink)  
Antiguo 22/07/2011, 08:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Error de sintaxis novato total: usar una variable

Creo el problema es como dices que no tienes control de quien llama a esa función, si estas usando un prefabricado o algo por el estilo, no vas a tener ese control, es por eso que vas a tener que modificar directamente el archivo y poner la lineas que pusiste en prova.php para que se ejecuten junto con el flujo de la función.

Saludos.

Etiquetas: sintaxis, variables, totales
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 23:56.