Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Passaggio a PHP 5 pianta una classe

    Con il php 4.2 di Ubuntu 5.04 avevo una classe che paginava i risultati delle select che funziona; ieri ho aggiornato al PHP 5 e becco un errore che è

    Fatal error: Non-static method paging::number() cannot be called statically in /var/www/Cobetto/classi/paging_class.php on line 158

    con la linea 158 che è

    $print_link .= "".number($this->page,$this->number)."\n";

    Non capisco cosa voglia dire.... Non so se la riga basti o se biosgna editare tutto il file
    Ciao e grazie

  2. #2
    hai chiamato number come metodo statico quando nn e' dichiarato static in class paging. posta un po' di codice relativo a quella classe, cosi' si capisce un po' meglio ^^
    Gabriele B. - http://9thcircle.it

  3. #3
    Non è tutta (ho tolto alcune funzioni...L'errore lo da nella funzione print_link(). Grazie
    <?php

    class paging
    {
    var $koneksi; var $p; var $page; var $q; var $query; var $next; var $prev; var $number;

    function paging($baris=5, $langkah=5, $prev="[prec.]", $next="[succ.]", $number="[%%number%%]")
    {
    $this->next=$next;
    $this->prev=$prev;
    $this->number=$number;
    $this->p["baris"]=$baris;
    $this->p["langkah"]=$langkah;
    $_SERVER["QUERY_STRING"]=preg_replace("/&page=[0-9]*/","",$_SERVER["QUERY_STRING"]);
    if (empty($_GET["page"])) {
    $this->page=1;
    } else {
    $this->page=$_GET["page"];
    }
    }

    function db($host,$username,$password,$dbname)
    {
    $this->koneksi=mysql_connect($host, $username, $password) or die("Connection Error");
    //$this->koneksi=mysql_pconnect($host, $username, $password) or die("Connection Error");
    mysql_select_db($dbname);
    return $this->koneksi;
    }

    function print_link()
    {
    //generate template
    function number($i,$number)
    {
    return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$nu mber);
    }
    $print_link = false;

    if ($this->p["count"]>$this->p["baris"]) {
    $print_link="pag. ";
    // print prev
    if ($this->page>1)
    $print_link .= "<a href=\"".$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"]."&page=".($this->page-1)."\">".$this->prev."</a>\n";

    // set number
    $this->p["bawah"]=$this->page-$this->p["langkah"];
    if ($this->p["bawah"]<1) $this->p["bawah"]=1;

    $this->p["atas"]=$this->page+$this->p["langkah"];
    if ($this->p["atas"]>$this->p["total_page"]) $this->p["atas"]=$this->p["total_page"];

    // print start
    if ($this->page<>1)
    {
    for ($i=$this->p["bawah"];$i<=$this->page-1;$i++)
    $print_link .="<a href=\"".$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"]."&page=$i\">".number($i,$this->number)."</a>\n";
    }
    // print active
    if ($this->p["total_page"]>1)
    $print_link .= "".number($this->page,$this->number)."\n";

    // print end
    for ($i=$this->page+1;$i<=$this->p["atas"];$i++)
    $print_link .= "<a href=\"".$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"]."&page=$i\">".number($i,$this->number)."</a>\n";

    // print next
    if ($this->page<$this->p["total_page"])
    $print_link .= "<a href=\"".$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"]."&page=".($this->page+1)."\">".$this->next."</a>\n";

    return $print_link;
    }
    }
    }

    ?>

  4. #4
    è normale ^^

    devi mettere static davanti al function nella riga che contiene il nome della funzione

    oppure prova ad abilitare lo zend 1 compatibility engine

  5. #5

  6. #6
    Cambia l'errore:
    Fatal error: Using $this when not in object context in /var/www/Cobetto/classi/paging_class.php on line 121

    dove la riga è

    if ($this->p["count"]>$this->p["baris"]) {

    è possibile risolvere il tutto mantenendo la compatibilità sia con PHP4 sia con PHP5? Grazie

  7. #7
    sirei che è + che normale

    allora un'oggetto statico non può utilizzare variabili non statiche all'interno di una classe ... infatti le variabili non statiche fanno parte dell'oggetto instanziato e non della classe e quindi se prima nn viene instanziato l'oggetto non le puoi usare

    se ti serve farlo ti consiglio di usare il cosidetto Singleton che ti permette tramite un metodo statico di avere una sola instanziazione della classe e quindi facendo una cosa tipo

    $Classe::GetSingleton()->nomemetodo(parametri)

    puoi fare ciò che ti serve

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.