Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Downgrade Codice php!

  1. #1

    Downgrade Codice php!

    Salve a tutti!

    E' da molto che non programmo e sinceramente mi trovo bloccato in un problema abbastanza fastidioso.

    Ho creato un sito, sono solo 2 pagine che si interfacciano con un database.
    Ora, il problema è che il sito in locale funziona... ma quando lo metto su altervista smette di funzionare...
    In pratica ho capito che il problema è che altervista non supporta il nuovo codice "mysqli"

    visto che ho provato a caricare un codice molto piu semplice che semplicemente si connetta al database e stampi un campo e non fa nulla.
    Invece con un vecchio codice senza mysqli. Funziona perfettamente.

    Ora il problema quale sarebbe...

    Se provo il codice in locale (quindi con server, database e tutto) funziona.

    Premetto che il database è completamente identico a quello che ho su altervista, quindi stessa password stesso nome, stessi dati.

    Su altervista semplicemente non carica i dati. cioè la pagina parte... ma è come se non trovasse nulla.

    Scusate se mi sono prolungato ma vorrei essere il più chiaro possibile.

    Ora il problema reale è che se uso il codice mysqli


    <?php
    // connessione a MySQL con l'estensione MySQLi
    $mysqli = new mysqli("localhost", "xxxx", "xxxxxx", "xxxxx");

    // verifica dell'avvenuta connessione
    if (mysqli_connect_errno()) {
    // notifica in caso di errore
    echo "Errore in connessione al DBMS: ".mysqli_connect_error();
    // interruzione delle esecuzioni i caso di errore
    exit();

    }




    # estrarre risultati con il metodo mysqli_result::fetch_array
    // query argomento del metodo query()
    $query = " SELECT * FROM xxxx ORDER BY data DESC LIMIT 3 ";


    // esecuzione della query
    $result = $mysqli->query($query);




    ?>


    e a questo aggiungo un ciclo foreach che mi permette di stampare i dati in una tabella.



    <?php if (count($result) > 0): ?>
    <table summary="" border="1" align="center" >

    <tbody>
    <?php foreach ($result as $row): array_map('htmlentities', $row); ?>
    <tr>
    <td valign="top" width="200">
    <img alt="Immagine <?php echo $row["nome"]; ?>" src="<?php echo $row["cognome"]; ?>" height="250" width="200"/>
    </td>
    <td valign="top" width="500" height="250">
    <font color="#1560BD" size="4"><?php echo $row["nome"]; ?></font>
    </br>
    </br>
    <font color="black" size="2">
    <?php
    $maxCaratteri = 770;
    $caratteri = strlen($row["storia"]);
    if ($caratteri > $maxCaratteri) { echo substr($row["trama"], 0, $maxCaratteri)."(Continua a leggere...)"; }
    else { echo $row["storia"]; }
    ?>


    e fino ad ora testando il tutto in locale funziona perfettamente!

    Se carico questo codice però non funziona su altervista.

    Quindi ho provato a fare un downgrade e riportare tutto a prima di Mysqli ma comincia a darmi errori e davvero non riesco a capire come uscirne.

    In pratica mi servirebbe sapere come posso fare a collegarmi al database e quindi fare la query e poi stamparla in una tabella (usando per esempio quel ciclo foreach) ma senza usare Mysqli.

    Grazie a tutti in anticipo!

    Ovviamente se servono ulteriori chiarimenti per capire il problema, contattatemi senza esitare!

  2. #2
    Prova a cambiare la prima parte così:

    codice:
    <?php
    // connessione a MySQL 
    $mysqli =  mysql_connect(nomehost,user,password);
    
    // verifica dell'avvenuta connessione
    if(!$mysqli){
        die ("non sei connesso".  mysql_error());
    }
    $tab=mysql_query("use nometabella",$mysqli);
    
    if(!$tab){
        die ("tabella db sbagliata".  mysql_error());
    }
    
    
    
    
    
    # estrarre risultati con il metodo mysqli_result::fetch_array
    // query argomento del metodo query()
    $query = " SELECT * FROM xxxx ORDER BY data DESC LIMIT 3 ";
    
    
    // esecuzione della query
    $result =mysql_query($query,$mysqli);
    ?>
    Ovviamente cambia i parametri nomehost,user,password e nometabella

    La seconda parte dovrebbe andare bene lo stesso

  3. #3
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Prova a cambiare la prima parte così:

    codice:
    <?php
    // connessione a MySQL 
    $mysqli =  mysql_connect(nomehost,user,password);
    
    // verifica dell'avvenuta connessione
    if(!$mysqli){
        die ("non sei connesso".  mysql_error());
    }
    $tab=mysql_query("use nometabella",$mysqli);
    
    if(!$tab){
        die ("tabella db sbagliata".  mysql_error());
    }
    
    
    
    
    
    # estrarre risultati con il metodo mysqli_result::fetch_array
    // query argomento del metodo query()
    $query = " SELECT * FROM xxxx ORDER BY data DESC LIMIT 3 ";
    
    
    // esecuzione della query
    $result =mysql_query($query,$mysqli);
    ?>
    Ovviamente cambia i parametri nomehost,user,password e nometabella

    La seconda parte dovrebbe andare bene lo stesso


    Grazie per la risposta!

    Allora ho fatto la prova iniettando il tuo codice, ovviamente ho modificato i dati di accesso etc.

    Il problema c'è ancora, solo che questa volta mi da un errore diverso.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ERRORE 1

    Intanto se al posto di nome tabella metto "il nome del database" Ho inserito questo visto che nel tuo codice non c'è la selezione del database.

    $tab=mysql_query("use NOME_DATABASE",$mysqli);


    if(!$tab){
    die ("tabella db sbagliata". mysql_error());
    }

    usando il codice così, mi da questo errore.

    Fatal error: Call to a member function close() on a non-object in /membri/NOMESITO/test1.php on line 150

    La linea 150 del codice è la seguente,

    <?php
    endforeach;
    // liberazione delle risorse occupate dal risultato
    $result->close();
    ?>

    Quindi non altro che la chiusura del foreach.

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ERRORE 2

    Se invece al posto del nome database uso il nome della tabella come da te specificato mi ritrovo con questo errore.

    tabella db sbagliataAccess denied for user 'Username'@'localhost' to database 'NOMETABELLA'

    $tab=mysql_query("use NOME_TABELLA",$mysqli);


    if(!$tab){
    die ("tabella db sbagliata". mysql_error());
    }



    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    ERRORE 3

    nel caso usassi al posto di "use nometabella" Solo il nome della tabella quindi togliendo anche "USE"

    $tab=mysql_query("NOME_TABELLA",$mysqli);


    if(!$tab){
    die ("tabella db sbagliata". mysql_error());
    }


    L'errore è questo.

    tabella db sbagliataYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOME_TABELLA' at line 1
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Scusa per la pignoleria nello spiegarmi, ma cerco di essere il più chiaro possibile.

    Sapresti quindi dirmi come mai mi da questi errori?

    E sopratutto quale sarebbe la forma giusta da usare?

    Io penso il primo sia quello giusto visto che cmq mi carica la pagina, ma non saprei in quale altro modo terminare il foreach...

    Grazie ancora per la risposta!

  4. #4
    Quote Originariamente inviata da klcibones Visualizza il messaggio
    Grazie per la risposta!

    Allora ho fatto la prova iniettando il tuo codice, ovviamente ho modificato i dati di accesso etc.

    Il problema c'è ancora, solo che questa volta mi da un errore diverso.
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ERRORE 1

    Intanto se al posto di nome tabella metto "il nome del database" Ho inserito questo visto che nel tuo codice non c'è la selezione del database.

    $tab=mysql_query("use NOME_DATABASE",$mysqli);


    if(!$tab){
    die ("tabella db sbagliata". mysql_error());
    }

    usando il codice così, mi da questo errore.

    Fatal error: Call to a member function close() on a non-object in /membri/NOMESITO/test1.php on line 150

    La linea 150 del codice è la seguente,

    <?php
    endforeach;
    // liberazione delle risorse occupate dal risultato
    $result->close();
    ?>

    Quindi non altro che la chiusura del foreach.

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ERRORE 2

    Se invece al posto del nome database uso il nome della tabella come da te specificato mi ritrovo con questo errore.

    tabella db sbagliataAccess denied for user 'Username'@'localhost' to database 'NOMETABELLA'

    $tab=mysql_query("use NOME_TABELLA",$mysqli);


    if(!$tab){
    die ("tabella db sbagliata". mysql_error());
    }



    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    ERRORE 3

    nel caso usassi al posto di "use nometabella" Solo il nome della tabella quindi togliendo anche "USE"

    $tab=mysql_query("NOME_TABELLA",$mysqli);


    if(!$tab){
    die ("tabella db sbagliata". mysql_error());
    }


    L'errore è questo.

    tabella db sbagliataYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOME_TABELLA' at line 1
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Scusa per la pignoleria nello spiegarmi, ma cerco di essere il più chiaro possibile.

    Sapresti quindi dirmi come mai mi da questi errori?

    E sopratutto quale sarebbe la forma giusta da usare?

    Io penso il primo sia quello giusto visto che cmq mi carica la pagina, ma non saprei in quale altro modo terminare il foreach...

    Grazie ancora per la risposta!

    Nel primo errore, cioè usando

    $tab=mysql_query("use NOME_DATABASE",$mysqli);


    if(!$tab){
    die ("tabella db sbagliata". mysql_error());
    }


    Ho riletto bene l'errore

    Fatal error: Call to a member function close() on a non-object in /membri/NOMESITO/test1.php on line 150

    Il problema è la chiusura della funzione non la chiusura del foreach

    $result->close();

    L'ho quindi esclusa, e mi ha dato un'altro errore uguale ma con la chiusura di un'altra variabile.

    //$mysqli->close();


    Come vedi l'ho esclusa di nuovo.

    Questa volta carica la pagina, e non da nessun errore... però non mi trova nessun dato nella tabella il risultato è un piccolo cuadrato al centro dove in teoria dovrebbe esserci la tabella.

    E sono punto è a capo... in pratica è lo stesso errore che riscontravo all'inizio.

  5. #5
    $result->close non è necessario se utilizzi mysql_connect.Dimmi che errore ti da e a che punto .

  6. #6
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    $result->close non è necessario se utilizzi mysql_connect.Dimmi che errore ti da e a che punto .
    http://freefilms.altervista.org/test1.php

    Se vai sul sito lo vedi, ecco l'errore ... in pratica è come se non trovasse nessun tipo di dati, non carica la tabella, ma carica la pagina.

    Come se non ci fossero errori nel codice ma comunque non riesce a trovare i dati nel database.

    Come ho scritto prima, se però utilizzo lo stesso codice in locale, con un database identico a quello su altervista, funziona tutto perfettamente.

  7. #7
    Quote Originariamente inviata da klcibones Visualizza il messaggio
    http://freefilms.altervista.org/test1.php

    Se vai sul sito lo vedi, ecco l'errore ... in pratica è come se non trovasse nessun tipo di dati, non carica la tabella, ma carica la pagina.

    Come se non ci fossero errori nel codice ma comunque non riesce a trovare i dati nel database.

    Come ho scritto prima, se però utilizzo lo stesso codice in locale, con un database identico a quello su altervista, funziona tutto perfettamente.
    L'ho provato anche in locale e mi da lo stesso errore, Mi carica la pagina e nel posto dove dovrebbe esserci la tabella c'è solo un puntino.

    Forse il problema è il ciclo foeach ? :|

  8. #8
    Puoi darmi un db sql (anche molto ridotto) e il codice per fare delle prove.

  9. #9
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Puoi darmi un db sql (anche molto ridotto) e il codice per fare delle prove.
    Ti ho mandato un messaggio privato

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.