Visualizzazione risultati 1 fino 8 di 8

Discussione: Chiamata mysqli non funzionante

  1. #1
    Guest

    Predefinito Chiamata mysqli non funzionante

    Salve a tutti,
    premetto che sono "nuovo" nel form. Qualche (forse anche molti) mese fa avevo caricato nello spazio dell'alter-sito una serie di pagine php che, tramite mysqli, facevano chiamate al database e funzionavano.
    Ora, a distanza di molto tempo, ho pronto un "upgrade" per il sito e ho cancellato tramite filezilla i fine contenuti nel sito e tramite phpmyadmin ho cancellato tutte le tabelle del database. Dopo aver "pulito" lo spazio ho caricato tutti i file e il dump del database aggiornato sul sito web. Quando però accedo al sito l'index.php mi esce bianco.
    Ho provato ad inserire dei print nel codice php per vedere se lo esegue e a quanto pare i print li esegue (solo quelli inseriti dall'editor di altervista).

    Ho due script fondamentali: il primo che ritorna lo stato del sito (0=online, 1=offline, 2=messaggio) che riporto qua sotto:

    Codice PHP:
    <?php
    $con
    = new mysqli($host, $user, $pswd, $db);

    if (
    $con->connect_error)
    header("location: error/mysql.php");

    $sql = "SELECT val FROM siteInfo WHERE keyval='status'";
    $rslt = $con->query($sql);
    if(
    $rslt->num_rows > 0) {
    $rslt = $rslt->fetch_array(MYSQLI_ASSOC);
    $val = $rslt["val"];
    }
    ?>
    ed il secondo che stampa il contenuto della pagina:

    Codice PHP:
    <?php

    if($val == 2){
    print(
    '<div class="TITLE_ANNOUNCE">');

    $con = new mysqli($host, $user, $pswd, $db);

    if (
    $con->connect_error)
    header("location: ../error/mysql.php");

    $sql = 'SELECT val FROM siteinfo WHERE keyval="TITLE_ANNOUNCE" AND lang="'. $lang . '"';
    $rslt = $con->query($sql);

    if(
    $rslt->num_rows > 0) {
    $rslt = $rslt->fetch_array(MYSQLI_ASSOC);
    $title_announce = $rslt["val"];
    }

    $con->close();

    print(
    $title_announce);
    print(
    '</div>');

    print(
    '<div class="PHOTO" style="left: -24.5vw">');

    $con = new mysqli($host, $user, $pswd, $db);

    if (
    $con->connect_error)
    header("location: ../error/mysql.php");

    $sql = 'SELECT val FROM siteinfo WHERE keyval="PHOTO"';
    $rslt = $con->query($sql);

    if(
    $rslt->num_rows > 0) {
    $rslt = $rslt->fetch_array(MYSQLI_ASSOC);
    $PHOTO = $rslt["val"];
    }

    $con->close();

    print(
    '<img src="../img/'. $PHOTO .'" />');
    print(
    '</div>');

    print(
    '<div class="PARAGRAPH" style="top: 8.5vw; left: 35vw;">');

    $con = new mysqli($host, $user, $pswd, $db);

    if (
    $con->connect_error)
    header("location: ../error/mysql.php");

    $sql = 'SELECT val FROM siteinfo WHERE keyval="PARAGRAPH" AND lang="'. $lang . '"';
    $rslt = $con->query($sql);

    if(
    $rslt->num_rows > 0) {
    $rslt = $rslt->fetch_array(MYSQLI_ASSOC);
    $Paragraph = $rslt["val"];
    }

    $con->close();

    print(
    $Paragraph);

    print(
    '</div>');

    }

    ?>
    mettendo come costante $val a 2 lo script php funziona ma stampa tutte quelle parti che non hanno a che fare con la chiama mysqli: il titolo della pagina dovrebbe stampare OASISWORLD - (qui la traduzione di attenzione nella lingua dell'utente e se la va a prendere dal database).
    Non so più cosa fare
    Il sito web funziona perché su xampp (programma per avere un web server con php e mysql senza doverli installare singolarmente)funziona ottenendo l'effetto desiderato mentre su Altervista no.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,673

    Predefinito

    Ma i dati nel database ci sono? Li vedi da phpMyAdmin?

    Se sì, i parametri di connessione al db sono corretti? $rslt cosa vale dopo aver eseguito la query?

    Ciao!

  3. #3
    Guest

    Predefinito

    Ciao, allora i dati nel database li vedo. All'improvviso anche tutta la pagina si è messa a funzionare correttamente tranne per il primo(quello dove ottengo $val). In quel caso facendo un print_r($rslt) non stampa nulla e non stampa nemmeno il classico errore di tentativo di conversione da array a string se faccio print($rslt).

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ciao @oasisworld benvenuto, la sezione corretta per MySQL/php in futuro la trovi qui
    1)Verifica che i dati corrispondano esattamente come descritto qui l'unico dato fondamentale è il parametro database my_oasisworld
    2)Impara a gestire gli errori di MySQL come da esempio
    3)Usa
    Codice PHP:
    var_dump($sql);
    in questo esempio si presuppone che $sql sia una variabile con il valore ritornato dalla query che verrà effettuata a MySQL e che in caso di errore sarà come booleano false.
    4)Altresì da phpmyadmin controlla di aver importato correttamente il dump del database.
    5)Per vedere subito le modifiche del tuo sito devi vuotare la cache del browser e/o di terzi servizi come CloudFlare Come svuotare la cache
    Bene con tutti questi elementi adesso sei in grado di fornire qui sul forum l'errore che leggi, poiché il semplice "non funziona" non è di aiuto per i problemi che riscontri.
    Edit: 6)Da phpmyadmin dopo aver selezionato il database my_oasisworld verifica che la query funzioni.
    Buona domenica.
    Ultima modifica di darbula : 11-11-2018 alle ore 20.27.29 Motivo: Aggiunto var_dump per visualizzare i booleani

  5. #5
    Guest

    Predefinito

    Ciao @darbula, anzitutto grazie mille :)
    1) In teoria avevo cliccato su apri discussione mentre ero nella sezione MYSQL, ma forse ho sbagliato...
    2) Si, i dati corrispondono perché ora che magicamente una parte della pagina a preso a funzionare ottengo i dati dal MYSQL
    3) L'errore l'ho gestito con un header per creare una pagina apposta che possa, qualora si verifichi, un'errore avvisarmi tramite mail
    4) il risultato di print_r è nullo se l'ho utilizzo nella quando chiedo al database di ottenere val (1° listato) anzi, come scritto sopra, se utilizzo print() non mi genera nemmeno la scritta di errore
    5) ho abilitato la modalità sviluppatore di CloudFlare quindi per tre ore sono a posto (anche se ho svuotato le cache per sicurezza dopo)

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Utilizza var_dump($sql); sorry.
    Prova la query da phpmyadmin dopo aver selezionato my_oasisworld in altervista e vedi se lì funziona.
    Ultima modifica di darbula : 11-11-2018 alle ore 19.56.18

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,673

    Predefinito

    Se esegui la query da phpMyAdmin, ricevi dei dati?
    Hai guardato cosa vale $rslt dopo aver eseguito la prima query? Ad esempio così:
    Codice PHP:
    var_dump($rslt);
    Ciao!

  8. #8
    Guest

    Predefinito

    @alemoppo @darbula grazie mille per l'aiuto. ho provato con var_dump($rslt); e non mi restituiva niente, così ho provato a mandare la query. Il risultato è che la tabella siteInfo non esisteva perché nel dump ha il nome tutto minuscolo (maledetto Case-Sensitive) Chiedo scusa per i problemi causati.
    Grazie ancora per l'aiuto :)

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •