Chiamo ma non risponde!.

Jus_eppe

Nuovo Utente
2 Feb 2012
4
0
0
Buona sera a tutti, sono nuovo del Forum, ma lettore assiduo e pertanto motivato ed autorizzato a farvi i complimenti.
Ho cercato invano di capire il modo corretto di scrivere le chiamate di funzioni contenute in altri files.
Ho già inutilmente provato i vari include e require; forse sono validi, ma quando li uso (sarà perchè non riesco a ben descrivere il percorso completo - sarà che le funzioni di wordpress e dei vari plugins non sono mai da sole ma spesso ne richiamano altre) mai e dico mai che mi riuscisse di veder qualcosa girare se non ... E mi avete capito!.
Potrei avere disponibile un'anima gentile, che ha voglia di spiegarmi passo passo cosa e come fare?.
Grazie mille!.
Jus

PS. Ma proprio passo passo, in modo molto elementare, tipo apri il file pippo.php, scrivici "ta...ta...ta...", apri un altro file peppa.php e scrivi "to...to...to..."
Insomma, spero di essermi spiegato, altrimenti sarei al punto di partenza.
 
ciao
benvenuto nel forum
non è una cosa difficile.
apri un file e lo chiami (es) funzioni.php e al suo interno costrisci le varie funioni che ti servono.

funzioni.php
PHP:
<?php
function solo_stampa(){
	echo "questa è la prima funzione<br>";
}
function questa_somma($a,$b){
	return $a+$b;
}
//eccetera.........
?>
poi fai un altro file (es) esegui.php dove per prima includi il file funzioni.php che poi potrai usare dove ti servono
esegui.php
PHP:
<?php
//.....
//puoi usare require require_once include o include_once
//l'uso di uno o dell'altra è simile
//quindi includi
require_once "funzioni.php";
/*
se il file funzioni.php si trova in una carella diversa
devi indicare anche il percorso es.i
require_once "cartella/funzioni.php";
require_once "../cartella/funzioni.php";
*/
//......
//e dove ti serve richiami le funzioni, anche più volte
solo_stampa();//avrai solo un output con scritto: questa è la prima funzione
//....
$uno=7;
$due=3;
$somma=questa_somma($uno,$due);
echo "$somma<br>";//output 10
//....
echo questa_somma(99,1);//output 100
//...
?>
spero di essere stato chiaro, casomai siamo qui
 
ciao
scusa, dimenticavo una cosa importante per i percorsi.
devi tenere presente che quando includi è come se facessi un copy/paste del codice del file incluso dentro il file che chiama.
quindi se il file incluso richiama a sua volta un file il percorso della chiamata NON è il percorso tra i due file inclusi ma relativo al principale.
esempio
nella root hai il file che include funzioni.php
in carlella "prima" hai il file funzioni.php che a sia volta include funzioni_due.php che è in un'altra cartella "seconda", es

Codice:
root
   esegui.php
   /prima
        funzioni.php
   /seconda
        funzioni_due.php
in esegui includi funzioni.php con
include_once "prima/funzioni.php";

dentro funzioni.php, l'inclusione NON deve essere
include_once "../seconda/funzioni.php";
cioè il percorso tra funzioni.php e funzioni_due.php perchè il codice di funzioni.php è stato "incollato" in esegui quindi in funzioni.php l'inclusione deve essere
include_once "seconda/funzioni_due.php";
cioe sempre il percorso relativo a esegui.php
 
Grazie "Borgo" sei stato gentilissimo a rispondere, buon giorno!.
La spiegazione del tuo codice è davvero chiara, inclusa quindi anche la procedura descritta.
Mio e tuo malgrado (suppongo), la dettagliata descrizione non elimina l'errore.
Forse è più chiaro (almeno per te, perchè per me resta mistero) se posto corposamente la questione.
Tutto nasce dalla voglia di veder aggiornato a tempo il numero dei visitatori al sito. Il conteggio lo effettua un Plugin di nome Stapress. Stò usando wordpress versione 2.9.2 (quando sarà mi deciderò ad aggiornarlo, per il momento mi trovo bene con questa versione).

Il codice seguente è contenuto in un widget di testo che accetta php e serve a creare il refresh del Div "loaddiv", che a sua volta contiene il numero di visitatori attualmente online:

Codice:
<script src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script>
var auto_refresh = setInterval(
function()
{
$('#loaddiv').fadeOut('slow').load('/wp-content/plugins/statpress/reload.php').fadeIn("slow");
}, 10000);
$(document).ready(function(){
$('#loaddiv').load('/wp-content/plugins/statpress/reload.php')
})
</script>
<div id="loaddiv"></div>
-------------------------------
Codice del file reload.php nella cartella wp-content/plugins/statpress/

Codice:
<center><font size=2>Attualmente siamo in &nbsp;</font><font color=#000 size=3>
<?php
include_once "statpress.php";
StatPress_Print("%totalvisits%");
?>
</font>
</center>

Da tener presente che il file statpress.php si trova nella stessa root del file reload.php
-------------------------------
E qui nasce l'inghippo, poichè il codice di statpress.php appena richiamato visualizza il seguente errore:
Attualmente siamo in
Fatal error: Call to undefined function plugin_basename() in /web/htdocs/nome del sito/home/wp-content/plugins/statpress/statpress.php on line 14

la riga 14 contiene il seguente codice:

Codice:
include ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/includes/charts.php';
--------------------------------
e qui finisce la mia avventura ed inizia la mia sventura!.

Mi aiuti a mitigarla, per favore?.
 
Ultima modifica:
ciao
cercherò di darti alcune indicazioni, anche perchè non utilizzo i "precotti" (con precotti intendo wordpress, joomilia, ecc.. e che mi sembra tu utilizzi) gli unici sono dei script js linguaggio di cui non sono molto ferrato, ma faccio tutto manina-manina.
questo perchè i precotti sono fatti per soddisfare (o almeno in parte) le esigenze di tutti (che servano o no) quindi composti di files su files.
quindi, come detto, posso darti solo alcune indicazioni.

considerato l'errore che ti da:
Fatal error: Call to undefined function plugin_basename() in /web/htdocs/nome del sito/home/wp-content/plugins/statpress/statpress.php on line 14
significa che non trova la function plugin_basename(), quindi devi cercare, in mezzo agli innumerevoli file che penso tu abbia, dove tale function è definita.
in qualche script dovrebbe esserci qualcosa del genere
PHP:
//...
function plugin_basename($pinco){
	//corpo della funzione
}
//....
quindi devi verificare che nello script che ti da errore ci sia un qualche include/require che include il file con tale funzione e che il percorso sia giusto (anche se credo che se non fosse così ti avrebbe dato file non trovato).
se non c'è devi aggiungere tu l'inclusione di tale file
oppure copy/paste la funzione nel file che da errore (prima che la funzione venga chiamata)
 
Ciao.
Intuisco che il mio non è proprio il caso che faccia innamorare chi il codice se lo suda, ma pazienza, non siamo tutti capaci di arrivare allo stesso livello; sarà anche per questo che, umilmente, si chiede aiuto.
Le tue perplessità hanno fondatezza. Ma le stesse sarebbero evaporate se ti avessi scritto (come ora scrivo) che il file statpress.php ovviamente funzionava e funziona quando "lavora" da solo. Ripeto che è un plugin da cui, con un widget posto su una sidebar, si ricavano tutti i dati di frequenza di un sito.
Credo dunque che il motivo per cui si genera l'errore, sia da ricercare, appunto, nel codice che io tento invano di applicare.
Forse ho sbagliato indirizzo a cui chiedere ausilio. Forse meglio avrei fatto a chiedere direttamente sulle pagine del forum di WordPress. Invece ho pensato che, chi il codice lo mastica in continuazione, avesse più rapida soluzione da proporre, proprio perchè "legge e ben interpreta" la salute del codice.
Sei stato molto gentile ad interessarti già inizialmente a darmi una mano, non posso fare altro se non ringraziarti e sperare che qualcun altro legga il mio appello.
 
ciao
...Intuisco che il mio non è proprio il caso che faccia innamorare chi il codice se lo suda...
non era per sminuire chi usa i precotti, ma solo per dirti che io non li conosco e quindi non li so usare.
prova a postare il tuo problema qui in mrwm nella sez. dedicata a wordpress
 
Ciao
Ho dato un'occhiata dall'altra parte, seguendo il tuo consiglio.
Credo, senza presunzione, che di là non bazzichino egregi programmatori. Risposte così così e per lo più inevase.
Bèh, che dire?. Fine di una speranza!.
Non sarà certo per questo che avverrà la fine del mondo... piuttosto... diciamolo... avrà contribuito con almeno l'85%.
Scherzi a parte, ti ringrazio per la buona predisposizione ad aiutare gli altri.
 

Discussioni simili