Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2019
    Messaggi
    5

    Aiuto per php7 e mysqli

    Un caro saluto a tutti.
    Sono nuova del forum anche se l'ho sempre seguito dall'esterno, mi sono registrata perchè da principiante mi trovo davanti ad un muro dovendo far funzionare uno script con php7 e mysqli
    Con le precedenti versioni me la cavavo decentemente, anche seguendo le vostre discussioni,
    ma adesso nonostante una settimana di ricerche su google, di prove e controprove non riesco
    proprio a risolvere quanto vi espongo sotto.
    Ringrazio da subito chiunque vorrà dedicarmi un po di tempo per aiutarmi.


    - Il primo problema è questo:
    Notice: Undefined variable: db in C:\xampp\htdocs\web\mailer\adminmail\home.php on line 25
    function nomeCron() {
    $cronj = mysqli_query($db,"SELECT * FROM cronjob"); // questa è la riga 25
    while ($row_cronj = mysqli_fetch_array( $cronj )) {
    $cronN = mysqli_query($db,"SELECT * FROM cron WHERE id_cron = '".$row_cronj['cron']."' ");
    while ($row_cronN = mysqli_fetch_array( $cronN )) {
    return $row_cronN['nome_query'];
    }
    }
    }
    questa è la connessione al db
    $dbhost = "localhost";
    $dbuser = "miouser";
    $dbpass = "miapassword";
    $dbbase = "miodb";
    $db = mysqli_connect($dbhost, $dbuser, $dbpass, $dbbase)
    or die("Connessione non riuscita " . mysqli_connect_error());


    - il secondo problema è questo:
    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\web\mailer\adminmail\query2.php on line 50
    <?php
    $email = mysqli_query($db,"SELECT * FROM ".$_SESSION['lista']." WHERE blacklist='0'");
    while($row_email = mysqli_fetch_array($email)) { // questa è la riga 50
    if(controlloBlacklist($row_email['email']) == 0) {
    echo $row_email['email']."<br />";
    scriviCron($_POST['nome_query'], $row_email['email']);
    if(isset($_SESSION['contatore'])) {
    $_SESSION['contatore'] = $_SESSION['contatore'] + 1;}
    }
    }
    mysqli_query($db,"INSERT INTO cron (nome_query, sito) VALUES ('".$_POST['nome_query']."', '".$_SESSION['lista']."') ")or die(mysqli_error());
    ?>


    - il terzo problema è questo: (sempre nello stesso file e probabilmente collegato al precedente)
    Notice: Undefined index: lista in C:\xampp\htdocs\web\mailer\adminmail\query2.php on line 5
    if(isset($_SESSION['lista'])) {$_SESSION['lista'] = $_POST['lista'];} // questa è la riga 5
    ho provato anche cosi ma non va
    $_SESSION['lista'] = $_SESSION['lista'];


    e probabilmente c'è un errore anche qui
    if(isset($_SESSION['contatore'])) {$_SESSION['contatore'] = $_SESSION['contatore'] + 1;}

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    1) La variabile $db dentro la funzione non è la stessa di quella fuori quindi ti risulta indefinita perché dentro la funzione non è stata inizializzata.
    Se vuoi che funzioni, devi passare $db come parametro a nomeCron().
    Per maggiori informazioni fa una ricerca sullo scope delle variabili.

    2) Evidentemente la query fallisce e quindi $email non contiene il risultato della query, ma FALSE, da cui il messaggio ti dice che stai passando un booleano.
    Stampa a video la query con un echo invece di eseguirla e vedi se la sintassi è corretta, se ancora non capisci il problema della query, copiala e usala direttamente sul db, per esempio usando phpMyAdmin, lì riceverai maggiori informazioni riguardo a cosa succede

    3) secondo me isset() lo devi usare su $_POST['lista'] e non su $_SESSION['lista'], stai ricevendo dei dati da un form giusto? Quindi li trovi in $_POST non in $_SESSION

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2019
    Messaggi
    5
    Non riesco a capire cosa intendi al punto 1, come non sono riuscita a capire le variabili nonostante una settimana di ricerche su google, non riesco a scrivere il codice giusto.
    Mi potete fare degli esempi partendo dal codice che ho postato io?
    1) La variabile $db dentro la funzione non � la stessa di quella fuori quindi ti risulta indefinita perch� dentro la funzione non � stata inizializzata.

    Se vuoi che funzioni, devi passare $db come parametro a nomeCron().
    Per maggiori informazioni fa una ricerca sullo scope delle variabili.



  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    74
    Cara tisana, scordati qui che ti facciano degli esempi, qui ci sono solo "professori" che dall'alto del loro presunto sapere ti scrivono "fai una ricerca" perchè, per loro, abbassarsi a crearti un esempio o una stringa di codice è troppo. Sono talmente tronfi da non comprendere che imparare qualcosa, molto spesso, non è studiarsi un manuale intero ma partire da un esempio che viene dato e comprenderne le regole che stanno alla base. Anche perchè è inutile studiarsi tomi su tomi quando ciò che serve riguarda un argomento specifico e niente più.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da volodos Visualizza il messaggio
    Cara tisana, scordati qui che ti facciano degli esempi, qui ci sono solo "professori" che dall'alto del loro presunto sapere ti scrivono "fai una ricerca" perchè, per loro, abbassarsi a crearti un esempio o una stringa di codice è troppo. Sono talmente tronfi da non comprendere che imparare qualcosa, molto spesso, non è studiarsi un manuale intero ma partire da un esempio che viene dato e comprenderne le regole che stanno alla base. Anche perchè è inutile studiarsi tomi su tomi quando ciò che serve riguarda un argomento specifico e niente più.
    "Fai una ricerca" significa che l'argomento è bello lungo da spiegare e se si cerca "scope delle variabili in PHP" come suggerito si trovano subito mille articoli ben fatti, serve riscriverne uno nuovo ora?
    Per le altre cose la spiegazione era veloce e gliel'ho scritta, quindi vedi di farla finita solo perché la tua discussione è stata chiusa.
    Se hai qualcosa di cui lamentarti, mandami un messaggio privato e chiariamo, non rovinare le discussioni altrui.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da tisana Visualizza il messaggio
    Non riesco a capire cosa intendi al punto 1, come non sono riuscita a capire le variabili nonostante una settimana di ricerche su google, non riesco a scrivere il codice giusto.
    Mi potete fare degli esempi partendo dal codice che ho postato io?
    1) La variabile $db dentro la funzione non � la stessa di quella fuori quindi ti risulta indefinita perch� dentro la funzione non � stata inizializzata.

    Se vuoi che funzioni, devi passare $db come parametro a nomeCron().
    Per maggiori informazioni fa una ricerca sullo scope delle variabili.


    La possibilità di usare una variabile in posti diversi dipende da diverse cose, tipo da dove è stata dichiarata e dove vuoi usarla, nel tuo caso la variabile $db dove effettui la connessione al database non è visibile all'interno di una funzione perché... ne sta al di fuori, devi quindi portarla dentro la funzione e per farlo devi passare tale variabile come parametro alla funzione nomeCron().
    Per farlo devi prevedere un parametro per tale funzione, per esempio
    Codice PHP:
    // qui la variabile puoi chiamarla come vuoi, non necessariamente $db
    // basta che dentro la funzione poi usi lo stesso nome
    function nomeCron($db) { ... } 
    e poi usare la variabile creata al momento della connessione al db per chiamarla
    Codice PHP:
    nomeCron($db); 
    L'effettivo funzionamento di ciò però dipende da dove sta la chiamata a tale funzione, bisogna vedere se in quel posto $db è visibile o no.

    Questo meccanismo è chiamato "scope delle variabili" se fai una ricerca troverai degli articoli che spiegano di cosa si tratta.
    In due righe non è possibile spiegarlo esaustivamente.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2019
    Messaggi
    5
    Non riesco proprio a capire.
    $db l'ho messo cosi
    Codice PHP:
    function nomeCron($db) {...} 
    e mi da un errore peggiore, messo davanti a select
    Codice PHP:
    function nomeCron() {$cronj mysqli_query($db,"SELECT * FROM cronjob");while ($row_cronj mysqli_fetch_array($cronj)) {$cronN mysqli_query($db,"SELECT * FROM cron WHERE id_cron = '".$row_cronj['cron']."' ");while ($row_cronN mysqli_fetch_array($cronN)) {return $row_cronN['nome_query'];}}} 
    da sempre lo stesso errore.
    Probabilmente sono proprio io che mentalmente non ci arrivo

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Codice PHP:
    function nomeCron($db)
    {
        ....

    va bene.

    Poi dove chiami questa funzione?
    Adesso la chiamerai con
    Codice PHP:
    nomeCron(); 
    giusto?
    Ora devi modificare la chiamata in
    Codice PHP:
    nomeCron($db); 
    Se non funziona vuol dire che si trova in un posto in cui la variabile $db non è visibile, ma senza vedere il codice è impossibile dartene conferma.
    Per capire dove e come le variabili sono visibili devi documentarti sullo scope delle variabili, che come ti ripeto non è un argomento che si possa spiegare qui in un post.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2019
    Messaggi
    5
    Il codice l'ho postato
    Codice PHP:
    $cronj mysqli_query($db,"SELECT * FROM cronjob"); // questa è la riga 25
    while ($row_cronj mysqli_fetch_array$cronj )) {
    $cronN mysqli_query($db,"SELECT * FROM cron WHERE id_cron = '".$row_cronj['cron']."' ");
    while (
    $row_cronN mysqli_fetch_array$cronN )) {
    return 
    $row_cronN['nome_query'];
    }
    }
    }
    questa è la connessione al db
    $dbhost 
    "localhost";
    $dbuser "miouser";
    $dbpass "miapassword";
    $dbbase "miodb";
    $db mysqli_connect($dbhost$dbuser$dbpass$dbbase)
    or die(
    "Connessione non riuscita " mysqli_connect_error()); 
    $db è al connessione al database

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    In questo codice però da nessuna parte chiami la funzione nomeCron() quindi non sapendo dove sta la chiamata, non ti si può dire perché hai problemi.

    Comunque, hai già provato a fare le modifiche che ti ho proposto nell'ultimo post?

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.