FAQ
hola chicas y chicos, tengo una gran duda con el manejo de clases y
funciones, tengo el siguiente código:

un archivo php con una clase y funciones dentro de ella:

class newCentre{

var $idiomasTable = "cnai_idiomas";
//mas variables
//ahora funciones y podré solo la que necesito
unction getProgramsname($p_id_centro, $active=null){

$DB =& PEAR_dbConnect::connect("select");
$DB->setFetchMode(DB_FETCHMODE_ASSOC);

$aPrograms = array();

if($active!=null){
if($active == 1){
$sqlExtra = " AND
ikasbide_programas.activo = ".$DB->quoteSmart(1)."";
}
elseif($active == 0){
$sqlExtra = " AND
ikasbide_programas.activo = ".$DB->quoteSmart(0)."";
}
}
else{
$sqlExtra = "";
}

$sql = "SELECT ikasbide_programas.id,
ikasbide_programas.programa, ikasbide_programas.name,
ikasbide_programas.id_encrypted
FROM ikasbide_programas
INNER JOIN cnai_centros_programas ON
cnai_centros_programas.id_programa = ikasbide_programas.id
WHERE id_centro = ".$DB->quoteSmart
($p_id_centro)."".$sqlExtra." ORDER BY name ASC";

$result = $DB->getAll($sql);

foreach($result as $row){

$aPrograms[$row['id']]['id']= $row['id'];
$aPrograms[$row['id']]['name'] = $row['name'];
}

return $aPrograms;

}
}

Ahora bien, necesito utilizar esta función en otra página php pero no
consigo como hacerlo, siempre me da error

Os pongo parte del script donde hago la llamada a la función

require_once(INCLUDEALLPATH."/clases/new_class_centre.php");


$area=getProgramsname("1");
//$area=mkSelectFromQuery($sqlQuery,"areas","seleccione el área");
//echo $area;
//$area=array($rowQuery['name']);
//fin select manual
require_once(INCLUDEALLPATH."/clases/new_class_display_form.php");

$form =& displayForm::select("Seleccione el
área","area",$area,"selected");

Podría alguien ayudarme con esto??
Si me lo ponen en el código mucho mejor.
Muchas Gracias
Irantzu

--

Search Discussions

  • Satyam at Dec 11, 2006 at 2:49 pm
    Tu llamada a getProgramsName no hace referencia a la clase en que está
    contenida. La función no existe dentro de la tabla de símbolos global, o
    sea, no es una función cuyo nombre aparezca globalmente y pueda ser llamada
    sin preceder su nombre con el de la clase a que pertenece.

    Partiendo del supuesto que realmente necesitaras la clase, tienes dos
    opciones:

    a) primero creas una instancia de la clase newCentre (que, de paso, me
    parece un mal nombre al usar 'new' como prefijo, como podrás ver por el
    ejemplo siguiente) y haces referencia a la función que buscas precedida del
    nombre del objeto instanciado o

    $centre = new newCentre();
    $area = $centre->getProgramsname("1");

    b) haces la función estática dentro de la clase y la llamas precediendo su
    nombre con el de la clase,

    newCentre::getProgramsname

    No me he puesto a analizar el código para ver cuál de las opciones es la que
    mejor te funcionaría, ni siquiera si justifica el uso de objetos.

    Satyam

    ----- Original Message -----
    From: "Irantzu Leunda Biskarret" <irantzu@dosalcubo.net>
    To: <php-es@lists.php.net>
    Sent: Monday, December 11, 2006 1:59 PM
    Subject: [PHP-ES] ayuda con clases y funciones

    hola chicas y chicos, tengo una gran duda con el manejo de clases y
    funciones, tengo el siguiente código:

    un archivo php con una clase y funciones dentro de ella:

    class newCentre{

    var $idiomasTable = "cnai_idiomas";
    //mas variables
    //ahora funciones y podré solo la que necesito
    unction getProgramsname($p_id_centro, $active=null){

    $DB =& PEAR_dbConnect::connect("select");
    $DB->setFetchMode(DB_FETCHMODE_ASSOC);

    $aPrograms = array();

    if($active!=null){
    if($active == 1){
    $sqlExtra = " AND
    ikasbide_programas.activo = ".$DB->quoteSmart(1)."";
    }
    elseif($active == 0){
    $sqlExtra = " AND
    ikasbide_programas.activo = ".$DB->quoteSmart(0)."";
    }
    }
    else{
    $sqlExtra = "";
    }

    $sql = "SELECT ikasbide_programas.id,
    ikasbide_programas.programa, ikasbide_programas.name,
    ikasbide_programas.id_encrypted
    FROM ikasbide_programas
    INNER JOIN cnai_centros_programas ON
    cnai_centros_programas.id_programa = ikasbide_programas.id
    WHERE id_centro = ".$DB->quoteSmart
    ($p_id_centro)."".$sqlExtra." ORDER BY name ASC";

    $result = $DB->getAll($sql);

    foreach($result as $row){

    $aPrograms[$row['id']]['id']= $row['id'];
    $aPrograms[$row['id']]['name'] = $row['name'];
    }

    return $aPrograms;

    }
    }

    Ahora bien, necesito utilizar esta función en otra página php pero no
    consigo como hacerlo, siempre me da error

    Os pongo parte del script donde hago la llamada a la función

    require_once(INCLUDEALLPATH."/clases/new_class_centre.php");


    $area=getProgramsname("1");
    //$area=mkSelectFromQuery($sqlQuery,"areas","seleccione el área");
    //echo $area;
    //$area=array($rowQuery['name']);
    //fin select manual
    require_once(INCLUDEALLPATH."/clases/new_class_display_form.php");

    $form =& displayForm::select("Seleccione el
    área","area",$area,"selected");

    Podría alguien ayudarme con esto??
    Si me lo ponen en el código mucho mejor.
    Muchas Gracias
    Irantzu

    --

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedDec 11, '06 at 1:00p
activeDec 11, '06 at 2:49p
posts2
users2
websitephp.net

People

Translate

site design / logo © 2022 Grokbase