Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

passaggio da php4 a php5: variabili non dichiarate

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun feb 21, 2011 11:43 am

Salve a tutti!
Il problema è il seguente.
Ho creato alcuni siti in Aruba con php4 su server linux, contenenti database (MySQL) molto semplici.
Ho aggiornato php da 4 a 5 in locale e quando apro le pagine dinamiche con chiamate al db, il browser (Firefox) mi dà un messaggio di errore dicendo che le variabili non sono dichiarate.
Sottolineo che gli script sono molto semplici e che il tutto funziona perfettamente con php4.

Riporto di seguito il codice che non funziona:

Codice: Seleziona tutto
         <?
            $sezione = "contemp";
            $path_img = "immagini";
         if ($IDpsopere == ""){
            print "
            <p> ...testo...
            ";
            include ("mostra_immagini.php");
         }else{
            $IDpsopere = $IDpsopere;
            include ("mostra_opera.php");
         }
         ?>


Codice: Seleziona tutto
include ("mostra_immagini.php");
funziona
Codice: Seleziona tutto
include ("mostra_opera.php");
non funziona e mi dà l'errore

tratto di mostra_immagini.php:
Codice: Seleziona tutto
   $datiOpera = mysql_query("SELECT IDpsopere, titolo FROM psopere WHERE sezione='$sezione' AND pubblicato='si' ORDER BY IDpsopere ASC LIMIT 0,7") or die ("<b>Impossibile estrarre i dati dell'opera scelta. Server non attivo. Riprova pi˘ tardi.</b>");
   /*
    [0] IDpsopere
    [1] titolo
   */

   if (mysql_num_rows($datiOpera)!=0){
      while ($riga=mysql_fetch_array($datiOpera)){
         print "<td align='center' valign='top'>
         <a href='$file.php?IDpsopere=$riga[IDpsopere]&titolo=$riga[titolo]' target='_top'>
         <img src='$path_img/$riga[IDpsopere].jpg' alt='$riga[titolo]' title='$riga[titolo]' border=no></a>
         </td>";
      }
   }else{
      print"";
   }


tratto di mostra_opera.php:
Codice: Seleziona tutto
   while ($riga=mysql_fetch_array($datiOpera)){
      print "<div id='dati'>";
         print "<img src='$path_img/$riga[IDpsopere].jpg' title='$riga[titolo]' border=no><br /><br />";
         print "ID <span class='campo_dati'>$riga[IDpsopere]</span><br />";
         if ($riga[titolo]){
            print "titolo <span class='campo_dati'>$riga[titolo]</span><br />";
         }
         if ($riga[anno]){
            print "anno di realizzazione <span class='campo_dati'>$riga[anno]</span><br />";
         }
         if ($riga[tecnica]){
            print "tecnica <span class='campo_dati'>$riga[tecnica]</span><br />";
         }
         if ($riga[dimensioneB]){
            print "dimensioni (cm) <span class='campo_dati'>$riga[dimensioneB]</span>
            x
            <span class='campo_dati'>$riga[dimensioneH]</span>
            x
            <span class='campo_dati'>$riga[dimensioneZ]</span><br />";
         }
         if ($riga[peso]){
            print "peso (kg) <span class='campo_dati'>$riga[peso]</span><br />";
         }
         if ($riga[colore]){
            print "colore <span class='campo_dati'>$riga[colore]</span><br />";
         }
         if ($riga[descrizione]){
            print "descrizione <span class='campo_dati'>$riga[descrizione]</span><br /><br />";
         }
      print "</div>"; //fine div dati


Spero sia sufficiente ciò che ho riportato.

In attesa di qualche aiuto, ringrazio in anticipo.
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda Andy94 » lun feb 21, 2011 2:31 pm

Ciao.
Per una prossima volta, le questioni legate a PHP starebbero meglio nella sezione Sviluppo Web (ma grossomodo è lo stesso).

Detto questo, ti spiace riportare anche gli errori che ti vengono forniti? Penso che la variabile non dichiarata sia $IDpsopere, ma vorrei esserne certo.
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda dararag » lun feb 21, 2011 3:37 pm

in effetti, probabilmente il fatto è che tu controlli il valore di una variabile a cui il valore non l'hai mai dato, neanche implicitamente [:)]
come fai ad avere un valore per quella variabile?
Maledette aziende produttrici, l'unico telefilm interessante degli ultimi tempi l'hanno interrotto alla decima puntata... e chi voleva sapere la fine?
Avatar utente
dararag
Silver Member
Silver Member
 
Messaggi: 1116
Iscritto il: mar gen 22, 2008 8:57 pm
Località: Casoria


Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun feb 21, 2011 8:44 pm

Grazie per la tempestività.
In effetti IDpsopere la controllo senza averci dato un valore precedentemente. Faccio una prova e vi so dire.
Quello che mi chiedo è: in php4 funziona anche senza dare un valore alla var prima di controllarla. E' una novità di php5?
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda ilNotturno » mar feb 22, 2011 10:41 am

Se non ricordo male (sono anni che non uo php4), usare una variabile senza verla inizializzata è uguale a fare una cosa del genere:

$var = "";
if($var....)

In php5 devono necessariamente essere definite perché un malintenzionato potrebbe ridefinire la variabile incriminata tramite $_GLOBAL e superare i tuoi controlli.
Avatar utente
ilNotturno
Aficionado
Aficionado
 
Messaggi: 38
Iscritto il: mer nov 25, 2009 10:04 am
Località: Roma

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda Andy94 » mar feb 22, 2011 2:55 pm

In effetti IDpsopere la controllo senza averci dato un valore precedentemente

È probabile che sia quella, infatti. [^]

La precisazione di ilNotturno è corretta, non credo che ci sia altro da dire.
Ti basterebbe anche piazzare
Codice: Seleziona tutto
$IDpsopere;

Prima dei controlli per essere a posto. Almeno la variabile, seppure NULL, è dichiarata.
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » mar feb 22, 2011 5:12 pm

Ragazzi che team!
Grazie mille!
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda Andy94 » mar feb 22, 2011 6:15 pm

Hai risolto quindi?
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda dararag » mar feb 22, 2011 8:58 pm

Che team [bleh]
apriamo il centro assistenza? [:D]
comunque, se ha funzionato, buon per te [^]
Maledette aziende produttrici, l'unico telefilm interessante degli ultimi tempi l'hanno interrotto alla decima puntata... e chi voleva sapere la fine?
Avatar utente
dararag
Silver Member
Silver Member
 
Messaggi: 1116
Iscritto il: mar gen 22, 2008 8:57 pm
Località: Casoria

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda ilNotturno » mar feb 22, 2011 9:09 pm

Mi chiedevo: visto che lavoro come webdesigner, se a qualcuno interessa potrei scrivere o postarvi gli articoli che reputo più interessanti... Sto iniziando a studiare un framework piuttosto noto, uscito da poco, e magari potrei aiutare qualcuno.
Avatar utente
ilNotturno
Aficionado
Aficionado
 
Messaggi: 38
Iscritto il: mer nov 25, 2009 10:04 am
Località: Roma

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda Andy94 » mar feb 22, 2011 9:57 pm

Liberissimo di farlo, e benvenuto: siamo sempre alla ricerca di nuove persone che scrivono.
Come regole generali, sappi solamente che quanto scriverai nel portale (accedendo direttamente alla pagina di scrittura con /nuovoarticolo) dovrà essere in esclusiva e non scopiazzato da altri siti web.

Per ogni chiarimento in merito all'attività editoriale ed al funzionamento del CMS non esitare a porci qualunque domanda nella sezione "Benvenuto in MegaLab.it", dove qualcuno dello Staff sarà subito pronto a risponderti! [^]

[ciao]
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun apr 18, 2011 9:20 am

dararag ha scritto:comunque, se ha funzionato, buon per te [^]


Invece no [V] (e scusate se non mi sono più fatto vivo).

Il punto è che online con PHP 5.2.17 funziona (http://www.paoloscarpa.it), mentre in locale con PHP 5.3.2 no.

In locale ho installato MAMP (ho un iMac). La connessione al db funziona per la pagina mostra_immagini.php ma non per la pagina mostra_opera.php.
Non so più dove andare a guardare [boh].

Vi chiedo nuovamente e umilmente aiuto.

grazie mille
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun apr 18, 2011 12:22 pm

non posso mettere $IDpsopere prima di questo codice:
Codice: Seleziona tutto
         <?
            $sezione = "contemp";
            $path_img = "immagini";
         if ($IDpsopere == ""){
            print "
            <p> ...testo...
            ";
            include ("mostra_immagini.php");
         }else{
            $IDpsopere = $IDpsopere;
            include ("mostra_opera.php");
         }
         ?>

perché altrimenti me lo dà sempre NULL; invece la prima volta che accedo al file contemporanea.php dev'essere NULL, ma poi ha un valore dato da:

Codice: Seleziona tutto
      while ($riga=mysql_fetch_array($datiOpera)){
         print "<td align='center' valign='top'>
         [color=#00FF00]<a href='$file.php?IDpsopere=$riga[IDpsopere]&titolo=$riga[titolo][/color]' target='_top'>
         <img src='$path_img/$riga[IDpsopere].jpg' alt='$riga[titolo]' title='$riga[titolo]' border=no></a>
         </td>";

del file mostra_immagini.php che è incluso in contemporanea.php.

[b]Cerco di spiegarmi meglio.[/b]
Il file principale è contemporanea.php nel quale ci sono due include:
- il primo (mostra_immagini.php), che viene caricato se $IDpsopere è NULL, presenta le miniature
- il secondo (mostra_opera.php), che viene caricato se $IDpsopere è diverso da NULL, presenta gli ingrandimenti della miniatura cliccata

Quindi, quando accedo a contemporanea.php la prima volta, $IDpsopere è NULL e consente l'apertura di mostra_immagini.php con le miniature.
Quandi vi accedo la seconda volta, $IDpsopere ha valore diverso da NULL e consente l'apertura di mostra_opera.php con gli ingrandimenti della miniatura cliccata.

Sottolineo che online (Aruba con PHP 5.2.17 http://www.paoloscarpa.it/) tutto funziona, mentre in locale ( con PHP 5.3.2) no.
Se fosse un problema di parametri del db non si aprirebbe nemmeno mostra_immagini.php.
Se al'inizio di mostra_opera.php inserisco un valore per $IDpsopere, il file viene chiamato e mostra i dati corretti. Se invece lo chiamo tramite il link di mostra_immagini.php, rimane la schermata di quest'ultimo, come se non venisse passato il valore di $IDpsopere.

non so che pesci pigliare

ringrazio per ogni suggerimento
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda Andy94 » lun apr 18, 2011 1:20 pm

Non ho capito proprio bene quello che intendi, ti chiedo di scusarmi [^]
Potresti postare un screenshot degli errori rilevati in locale, cortesemente?
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun apr 18, 2011 2:57 pm

http://www.retesonora.net/screen-01.jpg
http://www.retesonora.net/screen-02.jpg
http://www.retesonora.net/screen-03.jpg

se non è sufficiente, sono qui

grazie

PS se vuoi ti posto il link ad una cartella zip coi php
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun apr 18, 2011 3:13 pm

Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun apr 18, 2011 3:45 pm

Sto provando vari siti e con nessuno riesco ad entrare al secondo livello di db.
Esempio: ho tre files: A, B e C.
Il file A linka al file B passandogli il valore della variabile x.
Il file B visualizza correttamente la chiamata al db secondo il valore di x.
Il file B linka al file C passandogli il valore della var y.
Il file C NON visualizza il risultato della chiamata al db secondo il valore di y.

Questo accade con tutti i siti che provo in locale, mentre funzionano online.

Che sia un'impostazione di MySql? E se sì, quale?
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda Andy94 » lun apr 18, 2011 4:08 pm

Hai fatto un buon lavoro nel riportarmi le immagini, ma non era quello che avevo chiesto.
Ciò che voglio capire è se PHP dà errori (fatal, notice, parse, ecc).

Per farlo, devi controllare la direttiva ERROR_REPORTING nel file php.ini nella directory di PHP.
Tieni altresì conto che alcune cose sono cambiate da PHP 5.2 alla versione 5.3: è probabile che si riscontrino errori come questi, bisogna investigare e capire dove il codice causa queste anomalie.

MODIFICA:
Mi rendo conto di una cosa però... La variabile IDpsopere fa parte della querystring: tu non la prendi mai con $_GET...

Il suo valore lo devi controllare con $_GET['IDpsopere'], e di conseguenza se non è presente nell'url non sarà settata (controlla con la funzione isset(var)), altrimenti sarà isset e avrà un valore.

[ciao]
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda pivello in gondola » lun apr 18, 2011 4:47 pm

Ti ringrazio moltissimo per la risposta.

- ERROR_REPORTING riporta 30719 (e non so che significa)

- per il resto capisco circa 1/3 di quello che mi scrivi. Provo a studiarmi $_GET e vedo che succede

- ho provato col PHP 5.2.13 su MAMP, ma senza successo

[grazie] [grazie]
Avatar utente
pivello in gondola
Aficionado
Aficionado
 
Messaggi: 42
Iscritto il: mer feb 28, 2007 12:54 pm
Località: VENEZIA

Re: passaggio da php4 a php5: variabili non dichiarate

Messaggioda Andy94 » lun apr 18, 2011 4:59 pm

Il discorso è questo: se tu devi prendere delle informazioni dalla querystring (parte dell'URL, nel tuo caso IDpsopere), non hai altro modo se non con $_GET.

Quando devi controllare qual è l'ID dell'opera selezionata, devi per forza recuperarlo con $_GET['IDpsopere'], che ti restituisce NULL se non c'è niente (usa la funzione isset($_GET['IDpsopere']) che torna false in quel caso) e quindi vuol dire che non è nemmeno scritto nell'indirizzo. Altrimenti, ti ritorna il numero dell'opera che hai selezionato, da usare anche nelle query al database.
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising