Problema aggiornamento PHP

di il
3 risposte

Problema aggiornamento PHP

Salve a tutti, sono iscritto da un pò sul forum ma è la prima volta che scrivo.
Ho un problema con il PHP 7 che mi sta causando non pochi problemi. Avevo un codice semplice scritto nel lontano 2003 che serviva a caricare alcuni elenchi in csv e formattarli per mandarli sul sito aziendale.
Ora per vari motivi non ho più potuto mantenere la versione 5 del PHP sul server e quindi son dovuto passare alla 7. Ovviamente non funziona più il codice, mi son messo li con il manuale cercando di aggiustare le cose (non sono un programmatore ma ahime la direzione aziendale affida a me queste cose), e diciamo che son riuscito a farlo funzionare di nuovo, ho solo un ultimo problema che mi blocca da 4 giorni.
In pratica ho questo php che mi prende un csv e lo inserisce in MySQL, e un altro file serve per fare la ricerca in queste tabelle e mostrarle a video. Son riuscito ad aggiustare il procedimento di caricamento, mentre per la visualizzazione ho un solo problema. Riesco a vedere tutti i dati tranne alcuni dati che sono messi in alcune tabelle sotto forma di numeri, che poi dovrebbero essere trasformati in lettere.

In pratica ho il file function.php con il seguente codice

<?php
function accr($accr) {
	$sql = "SELECT nome FROM sett WHERE id='$accr'";
	$arr = mysqli_fetch_array(mysqli_query($foffo, $sql));
	return $arr['nome'];
}
ecc. ecc.
poi ho il file sql.php che contiene i dati per l'accesso al database SQL ($foffo)
e infine ho il file find.php che serve appunto per la ricerca, in questo file ho

//Codice che serve a trasformare i numeri ID in nome così come nelle tabelle create nel DB
$accr = accr($nome);
Ed è qui che riscontro i problemi, se nascondo il codice del find.php mi appare nella ricerca il numero (quindi significa che il function.php riesce a prendere i dati dal mysql) ma appena metto visibile quel $accr = accr($nome); ricevo un errore e non visualizzo niente nella riga dell'"ACCR".

Scusate se mi sono dilungato, spero di aver reso l'idea dell'errore e spero che qualcuno abbia la pazienza di aiutarmi.

3 Risposte

  • Re: Problema aggiornamento PHP

    Ciao benvenuto.
    
    $nome = '10'; //tipo stringa ma in realtà mi occorre un numero intero
    $accr = accr($nome);
    
    Poiché la funzione accr necessita argomento di tipo intero che è un id... Però $foffo non ha visibilità globale dentro la funzione il che si traduce nel valore NULL (però non è sicuro ma solo una prassi);

    Senza dati sensibili che tipo di errore è?
    Dentro la funzione accr per visibilità globale
    global $foffo;
    //Commento, ricorda ho scritto dentro la funzione accr
    Se non esiste id 10 ritorna NULL e errore Warnings o NOTICE che non è definita nome (cambia da versione a versione php).
    $arr['nome'] significa (l'elemento o indice o key per il tipo intero) nome contenuto in un'involucro array.
  • Re: Problema aggiornamento PHP

    Ciao Hormus, grazie per la risposta.
    Mi sono dimenticato di scrivere che non sono molto ferrato in materia, quindi diciamo che non ho capito proprio tutto di ciò che hai scritto. Ho però provveduto ad inserire il global sul file function.php, e quindi ora ho:
    
    function accr($accr) {
    	global $foffo;
    	$sql = "SELECT nome FROM accr WHERE id='$accr'";
    	$arr = mysqli_fetch_array(mysqli_query($foffo, $sql));
    return $arr['nome'];
    }
    
    Facendo così mi generava ancora errore, quindi ho riletto per l'ennesima volta la parte del PHP relativo al mysqli fetch, e alla fine ho modificato in
    function accr($accr) {
    global $foffo;
    $sql = mysqli_query($foffo,"SELECT nome FROM accr WHERE id='$accr'");
    $arr = mysqli_fetch_array($sql);
    return $arr['nome'];
    e ora sembra funzionare tutto, ho provveduto per ogni singolo campo e questo problema l'ho risolto.
    Grazie mille
  • Re: Problema aggiornamento PHP

    Semplicemente guarda questo codice https://3v4l.org/H3T2 e $arr solo se esiste l'ID della query ritorna array altrimenti non è array e sarà NULL;
    function accr($accr) {
    	global $foffo;
    	$sql = 'SELECT nome FROM accr WHERE id=104568';
    	$arr = mysqli_fetch_array(mysqli_query($foffo, $sql));
    return $arr['nome'];
    }
    sto provando direttamente con un valore che non esiste.
Devi accedere o registrarti per scrivere nel forum
3 risposte