Visualizzazione risultati 1 fino 30 di 30
Like Tree5Likes
  • 1 Post By mzanella
  • 1 Post By alemoppo
  • 1 Post By mzanella
  • 2 Post By darbula

Discussione: php select sum minore o maggiore con messaggio

  1. #1
    Guest

    Predefinito php select sum minore o maggiore con messaggio

    sempre io adesso vorrei chiedervi una cortesia, devo visualizzare un messaggio in base ad i punti sommati

    esempio

    pippo nel mio negozio ha speso 10 euro quindi ha guadagno 2 punti e così via, adesso pippo ritorna in negozio e ad oggi ha totalizzato 7 punti, quindi decide di scalare 10 punti per avere un buono sconto avendo solo 7 punti questo non può essere fatto ma posso saperlo solo io che sono il titolare del negozio ma non l'impiegata, come posso fare per dirgli che quando apre la sua scheda il campo per selezionare il buono non è attivo e quindi mostrargli un messaggio " non ci sono abbastanza punti per richiedere questo buono " ?.

    dovrei fare una cosa del genere

    select sum(punti) se minore di 10 non attivo se maggiore di 10 attivo
    Ultima modifica di puntifedelta : 28-05-2021 alle ore 19.11.29

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

    Predefinito

    Non ho capito bene il problema, cioè quando apre la scheda, estrai i punti e con un if() in PHP decidi se il buono è ottenibile o meno.

    Ciao!
    puntifedelta likes this.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Non ho capito bene il problema, cioè quando apre la scheda, estrai i punti e con un if() in PHP decidi se il buono è ottenibile o meno.

    Ciao!
    si esatto

    ho fatto questa

    Codice PHP:
    <?php
    require_once("../config/db.php");
    $db_handle = new DBController();
    $result = $db_handle->runQuery("SELECT sum(punti) punti from punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    $punti = 'punti';
    if (
    $punti >= "10") {
    echo
    "buono";
    }
    if (
    $punti < "10"){
    echo
    "brutto";
    }
    ?>
    ma non capisco come fare a disattivare o attivare il campo se è ottenibile o meno scusa ma sono uno studente
    Ultima modifica di puntifedelta : 28-05-2021 alle ore 19.57.37

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Concettualmente è semplice: devi leggere da $result la somma dei punti ottenuta grazie alla query. Come fare dipende dalla libreria che hai scelto di usare. Se fosse PDO sarebbe qualcosa come
    Codice PHP:
    $result = dbh->query("...");
    $row = $result->fetch();
    $punti = $row['punti'];
    ma tu stai usando un "DBController" che non è materiale standard.

    Tra l'altro nella query c'è un errore, manca un "AS":
    Codice:
    SELECT sum(punti) AS punti FROM punti WHERE id_cliente='...'
    Infine, con quel codice sei vulnerabile ad attacchi SQL Injection. Dovresti usare dei prepared statement, o fare qualcosa per sanificare l'input. Con PDO o mysqli sarebbe semplice, ma senza sapere chi è questo DBController non possiamo dire niente.

    I suggerimenti che do più spesso:


  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Concettualmente è semplice: devi leggere da $result la somma dei punti ottenuta grazie alla query. Come fare dipende dalla libreria che hai scelto di usare. Se fosse PDO sarebbe qualcosa come
    Codice PHP:
    $result = dbh->query("...");
    $row = $result->fetch();
    $punti = $row['punti'];
    ma tu stai usando un "DBController" che non è materiale standard.

    Tra l'altro nella query c'è un errore, manca un "AS":
    Codice:
    SELECT sum(punti) AS punti FROM punti WHERE id_cliente='...'
    Infine, con quel codice sei vulnerabile ad attacchi SQL Injection. Dovresti usare dei prepared statement, o fare qualcosa per sanificare l'input. Con PDO o mysqli sarebbe semplice, ma senza sapere chi è questo DBController non possiamo dire niente.
    Buongiorno e grazie della risposta

    il dbcontroller è un mysqli_connect per quanto riguarda il codice ho utilizzato il tutto in questo modo

    Codice PHP:
    $result = $db_handle->runQuery("SELECT sum(punti) as punti from punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    $punti = $row['punti'];
    if ($punti >= "10") {
    echo "seleziona il Buono Acquisto";
    }
    if ($punti < "10"){
    echo "non ci sono abbastanza punti per poter ottenere un Buono Acquisto.";
    }
    ?>
    <span><?php echo $row["punti"]; ?></span>
    <div class="form-group">
    <label for="punti">Punti:</label>
    <input class="form-control" type="text" id='punti_scalo' name="punti_scalo" required/>
    </div>
    ed in questo modo grazie al tuo intervento riesco a visualizzare il risultato ma come faccio adesso a disabilitare l'input di punti_scalo ?

    questo è un programmino che ci stanno facendo fare a scuola ma credimi capisco più con voi ed il forum che il professore

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ti manca un pezzo, stai cercando di leggere "punti" dalla variabile $row, ma questa non esiste. Devi prima invocare fetch_row su $result:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT sum(punti) AS punti FROM punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    $row = $result->fetch_row();
    $punti = $row['punti'];
    Il resto del codice è quasi corretto. Negli if devi però confrontare numeri, non stringhe:
    Codice PHP:
    if ($punti >= 10) {
    echo
    "seleziona il Buono Acquisto";
    }
    if (
    $punti < 10) {
    echo
    "non ci sono abbastanza punti per poter ottenere un Buono Acquisto.";
    }
    E, giusto per migliorare ulteriormente, quando hai due if consecutivi le cui condizioni sono una la negazione dell'altra, puoi usare un else:
    Codice PHP:
    if ($punti >= 10) {
    echo
    "seleziona il Buono Acquisto";
    }
    else {
    echo
    "non ci sono abbastanza punti per poter ottenere un Buono Acquisto.";
    }

    I suggerimenti che do più spesso:


  7. #7
    Guest

    Predefinito

    grazie molto gentile per la risposta ma non ho capito come disabilitare questo

    <div class="form-group">
    <label for="punti">Punti:</label>
    <input class="form-control" type="text" id='punti_scalo' name="punti_scalo" required/>
    </div>

    quando non ha abbastanza punti

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    grazie molto gentile per la risposta ma non ho capito come disabilitare questo
    Puoi metterlo dentro a un altro if:
    Codice PHP:
    <?php if ($punti >= 10) { ?>
    <div class="form-group">
    <label for="punti">Punti:</label>
    <input class="form-control" type="text" id='punti_scalo' name="punti_scalo" required/>
    </div>
    <?php } ?>

    questo è un programmino che ci stanno facendo fare a scuola ma credimi capisco più con voi ed il forum che il professore
    Purtroppo capita spesso
    puntifedelta likes this.

    I suggerimenti che do più spesso:


  9. #9
    Guest

    Predefinito

    non saprei proprio come ringraziarti ho aggiunto anche if ed else lanciando un messaggio in caso non ci siano abbastanza punti e funziona perfettamente (almeno credo), adesso lo testo e per adesso veramente grazie

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Figurati, anzi, se hai bisogno di altro chiedi pure.
    puntifedelta likes this.

    I suggerimenti che do più spesso:


  11. #11
    Guest

    Predefinito

    purtroppo (per me) devo riaprire questo topic perchè non funziona più nulla il professore mi ha fatto notare che ok funziona quando un cliente ha meno di 10 punti ma se ne ha di più ? non funziona lo stesso credo di aver fatto tutto il giusto ma chiedo il vostro aiuto questo è il codice

    Codice PHP:
    $db_handle = new DBController();
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti
    WHERE id_cliente='" . $_GET["id_cliente"] . "' GROUP BY id_cliente");
    $restanti = $row['restanti'];
    ?>
    <?php if ($restanti >= 10) {
    echo
    "seleziona il Buono Acquisto";
    ?>
    <div class="form-group">
    <label for="punti">Punti:</label>
    <input class="form-control" type="text" id='punti_scalo' name="punti_scalo" required/>
    </div>
    <div class="form-group">
    <label for="giorno">Data:</label>
    <input class="form-control" type="date" id='data_scalo' value="<?php echo date('Y-m-d'); ?>" name="data_scalo" required/>
    </div>
    <input type="submit" name="submitscalo" id="btnAddAction" value="Salva" class="btn btn-dark"/>
    </form>
    <?php }
    else {
    echo
    "<div style='font-size:16px;text-align:center;'>
    non ci sono abbastanza punti per poter ottenere un Buono Acquisto.</div>"
    ;
    }
    ?>

  12. #12
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Il caso in cui "se ne ha di più [di 10]" mi sembra correttamente gestito da questo blocco di codice che hai mostrato:
    Codice PHP:
    <?php if ($restanti >= 10) {
    echo
    "seleziona il Buono Acquisto";
    ?>
    <div class="form-group">
    <label for="punti">Punti:</label>
    <input class="form-control" type="text" id='punti_scalo' name="punti_scalo" required/>
    </div>
    <div class="form-group">
    <label for="giorno">Data:</label>
    <input class="form-control" type="date" id='data_scalo' value="<?php echo date('Y-m-d'); ?>" name="data_scalo" required/>
    </div>
    <input type="submit" name="submitscalo" id="btnAddAction" value="Salva" class="btn btn-dark"/>
    </form>
    <?php }
    in cui viene mostrato un form da compilare. Non mi è chiaro quale sia il problema esattamente, ti sono state date indicazioni più chiare? Ti è stato fatto un esempio di un caso in cui succede (o non succede) qualcosa che non dovrebbe (o dovrebbe) invece succedere?

    I suggerimenti che do più spesso:


  13. #13
    Guest

    Predefinito

    allora il problema è questo ho un (esempio) cliente che ha 1 punto e giustamente il form non viene visualizzato, mentre un'altro ha 30 punti di cui 10 già scalati ed il form non si vede un'altro ancora ne ha 11 ed il form non viene visto mi ha detto solo rileggi il libro sul funzionamento del php ed il tuo codice il segreto e la risposta è al suo interno non ti dico la mia risposta.

    ho fatto anche un echo per vedere se mi stampa i punti totali e li stampa

  14. #14
    Guest

    Predefinito

    ti manderei tutto il codice se fosse per me ma sentirmi dare delle risposte del genere da un prof

  15. #15
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,345

    Predefinito

    Salve,
    come menzionato da mzanella, il problema non è in quella parte di codice. E' probabile che ci sia un qualche errore nella gestione di $restanti per cui il valore risulta minore di 10 anche quando è superiore.

    Dovrebbe controllare se $restanti viene calclato, aggiornato/salvato e recuperato correttamente. Ovviamente senza vedere il resto del codice si può solo darle dei suggerimenti.

    Citazione Originalmente inviato da puntifedelta Visualizza messaggio
    ti manderei tutto il codice se fosse per me ma sentirmi dare delle risposte del genere da un prof
    Sì così non le è molto di aiuto, ma sicuramente lo fa per fare in modo che ci ragioni su così da rendersi conto di dov'è il problema da solo.

    Non è sbagliato chiedere aiuto e ricerverlo, però in ambito di programmazione, bisogna anche imparare a risolvere gli errori e trovare le soluzioni a problemi anche di altro genere. Se al minonmo intoppo senza un aiuto ci si blocca, non si fa strada in questo campo.

    Comunque la teoria è solo la base per la partenza, ma le competenze le si ottengono poi dedicando molto tempo alla pratica, quindi ragiondo anche per risolvere eventuali problemi. Con ciò intendo dire che lei non ci stia ragionando sul problema, però non può aspettarsi di trovare la soluzione in modo spiccio.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 08-06-2021 alle ore 17.42.22

  16. #16
    Guest

    Predefinito

    condivido pienamente alla sua risposta ma ogni tanto (non voi) ci si aspetta anche un supporto un aiuto da parte del prof per capirne la causa la maggior parte del codice l'ho fatto da solo ed il resto con il vostro aiuto non sono affranto per il mancato supporto del forum ci mancherebbe ma dal mio prof, sto guardando e riguardando il codice tutto e spero di capirne la causa credo che le basi ci siano ma ogni tanto con una parola in più non ci si lascia allo sbaraglio.

    ricontrollo il codice lo inserisco anche qui tutto in caso ed eventualmente qualcuno si accorga ciò che io non vedo.

  17. #17
    Guest

    Predefinito

    ripeto non vorrei sembrare un approfittatore che aspetta che voi risolviate i miei problemi. Ma come ho sempre detto grazie se mi potete far notare i miei errori.

    questo è il codice che utilizzo

    Codice PHP:
    <?php
    require_once ("../config/db.php");
    $db_handle = new DBController();
    if(!empty(
    $_POST["submitscalo"])) {
    $query = "INSERT INTO scalo_punti (punti_scalo, data_scalo, premio, id_cliente)
    VALUES('"
    .$_POST["punti_scalo"]."','".$_POST["data_scalo"]."', '".$_POST["premio"]."', '".$_GET["id_cliente"]."')";
    $result = $db_handle->executeQuery($query);
    if(!
    $result){
    $message="Problem in Adding to database. Please Retry.";
    } else {
    header("Location:clienteprofilo.php");
    }
    }
    ?>
    <!-- Button to Open the Modal -->
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#scalaModal">
    Scala Punti
    </button>
    <!-- The Modal -->
    <div class="modal" id="scalaModal"> <div class="modal-dialog">
    <div class="modal-content">
    <!-- Modal Header -->
    <div class="modal-header">
    <h4 class="modal-title"></h4>
    <button type="button" class="close" data-dismiss="modal">&times;</button>
    </div>
    <!-- Modal body -->
    <div class="modal-body">
    <?php
    require_once("../config/db.php");
    $db_handle = new DBController();
    $result = $db_handle->runQuery("SELECT * FROM cliente WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    ?>
    <form method="post" action="">
    <div class="form-group">
    <label for="cliente">Nome:</label>
    <input class="form-control" type="nome" name="nome" id="nome" disabled="disabled" placeholder="<?php echo $result[0]["nome"]; ?>" />
    </div>
    <div class="form-group">
    <label for="cognome">Cognome:</label>
    <input class="form-control" type="text" name="cognome" id="cognome" disabled="disabled" placeholder="<?php echo $result[0]["cognome"]; ?>"/>
    </div>
    <div class="form-group">
    <label for="tessera">Numero Tessera:</label>
    <input class="form-control" type="text" name="tessera" id="tessera" disabled="disabled" placeholder="<?php echo $result[0]["tessera"]; ?>"/>
    </div>
    <?php
    include_once('../config/pdo.php');
    $pdo->query('SET CHARACTER SET utf8');
    $sql = "SELECT premio FROM premi";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $users = $stmt->fetchAll();
    ?>
    <div class="form-group row">
    <label class="col-form-label col-md-3 col-sm-3 label-align">Premio</label>
    <div class="col-md-6 col-sm-6">
    <select class="form-control" name="premio" required>
    <option>Seleziona Premio</option>
    <?php foreach($users as $user): ?>
    <option value="<?= $user['premio']; ?>"> <?= $user['premio']; ?></option>
    <?php endforeach; ?>
    </select>
    </div>
    </div>
    <?php
    require_once("../config/db.php");
    $db_handle = new DBController();
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti
    WHERE id_cliente='"
    . $_GET["id_cliente"] . "' GROUP BY id_cliente");
    $restanti = $row['restanti'];
    ?>
    <?php
    if ($restanti >= 10) {
    echo
    "seleziona il Buono Acquisto";
    ?>
    <div class="form-group">
    <label for="punti">Punti:</label>
    <input class="form-control" type="text" id='punti_scalo' name="punti_scalo" required/>
    </div>
    <div class="form-group">
    <label for="giorno">Data:</label>
    <input class="form-control" type="date" id='data_scalo' value="<?php echo date('Y-m-d'); ?>" name="data_scalo" required/>
    </div>
    <input type="submit" name="submitscalo" id="btnAddAction" value="Salva" class="btn btn-dark"/>
    </form>
    <?php }
    else {
    echo
    "<div style='font-size:16px;text-align:center;'>
    non ci sono abbastanza punti per poter ottenere un Buono Acquisto.</div>"
    ;
    }
    ?>
    <p><?php echo $result[0]["restanti"]; ?>ccccc</p>
    </div>
    <!-- Modal footer -->
    <div class="modal-footer">
    <button type="button" class="btn btn-danger" data-dismiss="modal">Annulla</button>
    </div>
    </div>
    </div>
    </div>
    Ultima modifica di puntifedelta : 09-06-2021 alle ore 11.26.38

  18. #18
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,345

    Predefinito

    Agggiunga dei var_dump() per verificare:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti WHERE id_cliente='" . $_GET["id_cliente"] . "' GROUP BY id_cliente");
    var_dump($result);
    $restanti = $row['restanti'];
    var_dump($restanti);
    Cosa le risulta con un valore maggiore di 10?

    Cordiali saluti.

  19. #19
    Guest

    Predefinito

    Buongiorno e grazie della risposta questo è quello che mi risulta

    Cliente con 1 punto:
    array(1) { [0]=> array(2) { ["id_cliente"]=> string(1) "3" ["restanti"]=> string(1) "1" } } NULL

    Cliente con 30 punti:
    array(1) { [0]=> array(2) { ["id_cliente"]=> string(1) "1" ["restanti"]=> string(2) "30" } } NULL

  20. #20
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,345

    Predefinito

    Provi modificando la query così:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti GROUP BY id_cliente");
    Cordiali saluti.

  21. #21
    Guest

    Predefinito

    purtroppo niente le ho provate tutte anche a fare una nuova più semplice come questa

    Codice PHP:
    <?php
    require_once("../config/db.php");
    $db_handle = new DBController();
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti GROUP BY id_cliente");
    $restanti = $row['restanti'];
    ?>
    <?php
    if ($restanti >= 10) {
    echo
    "seleziona il Buono Acquisto";
    ?>
    <p><?php echo $result[0]["restanti"]; ?> somma punti totale</p>
    <?php }
    else {
    echo
    "<div style='font-size:16px;text-align:center;'>
    non ci sono abbastanza punti per poter ottenere un Buono Acquisto.</div>"
    ;
    }
    ?>
    ma niente non so più cosa fare

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

    Predefinito

    mysqli_query nel caso di SELECT funzionante ritorna un oggetto mysql, quindi se la variabile si chiama $result esiste $result['restanti']
    mzanella and GraphOGLRisorse like this.

  23. #23
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Effettivamente, guardandoci bene, manca una fetch. C'era in uno dei messaggi precedenti su un argomento simile, ma non lo vedo nel codice attuale.

    Direi inoltre che è meglio usare WHERE id_cliente = ... piuttosto che GROUP BY, poiché quest'ultima restituirebbe l'elenco dei punti restanti a ciascun cliente (per ogni cliente), qui mi sembra che il conteggio sia invece d'interesse per un singolo cliente. Si potrebbero usare contemporaneamente WHERE e GROUP BY, ma il secondo risulterebbe ridondante, quindi tanto vale non metterlo.

    Concretamente, anziché così:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti GROUP BY id_cliente");
    $restanti = $row['restanti'];
    deve essere così:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    $row = $result->fetch_row();
    $restanti = $row['restanti'];

    I suggerimenti che do più spesso:


  24. #24
    Guest

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    mysqli_query nel caso di SELECT funzionante ritorna un oggetto mysql, quindi se la variabile si chiama $result esiste $result['restanti']
    ti ringrazio molto per la tua risposta ho provato a modificarlo ma il risultato non cambia non mostra nulla naturalmente viene visto solo se lo porto da >=10 a >= 0

  25. #25
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Effettivamente, guardandoci bene, manca una fetch. C'era in uno dei messaggi precedenti su un argomento simile, ma non lo vedo nel codice attuale.

    Direi inoltre che è meglio usare WHERE id_cliente = ... piuttosto che GROUP BY, poiché quest'ultima restituirebbe l'elenco dei punti restanti a ciascun cliente (per ogni cliente), qui mi sembra che il conteggio sia invece d'interesse per un singolo cliente. Si potrebbero usare contemporaneamente WHERE e GROUP BY, ma il secondo risulterebbe ridondante, quindi tanto vale non metterlo.

    Concretamente, anziché così:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti GROUP BY id_cliente");
    $restanti = $row['restanti'];
    deve essere così:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    $row = $result->fetch_row();
    $restanti = $row['restanti'];
    ho questo errore se inserisco il codice
    Call to a member function fetch_row()

  26. #26
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Qua dipende da come hai definito runQuery. Perché non usi funzioni standard anziché creare classi senza un reale incapsulamento? Oppure potresti creare un data mapper.

    Comunque, guardando il resto del codice sembra che runQuery restituisca un vettore, quindi il codice dovrebbe essere così:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    $row = $result[0];
    $restanti = $row['restanti'];

    I suggerimenti che do più spesso:


  27. #27
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Qua dipende da come hai definito runQuery. Perché non usi funzioni standard anziché creare classi senza un reale incapsulamento? Oppure potresti creare un data mapper.

    Comunque, guardando il resto del codice sembra che runQuery restituisca un vettore, quindi il codice dovrebbe essere così:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    $row = $result[0];
    $restanti = $row['restanti'];
    non voglio sembrare un ragazzo debole ma sto piangendo dalla gioia credetemi siete così gentili a sopportare le mie richieste che non saprei proprio come ringraziarvi se non con un abbraccio a tutti voi

    funziona perfettamente adesso

    grazie di cuore e spero un giorno di poter ricambiare

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

    Predefinito

    Non so come gestisce l'errore runQuery ma sembra che nel caso di esito positivo ritorna un vettore, ecco un pseudo codice che mostra come verificare altrimenti dal momento che usi una variabile esterna potrebbe anche non esistere quel id.
    Codice PHP:
    error_reporting(-1);
    ini_set('track_errors', false);
    ini_set('display_startup_errors', true);
    ini_set('display_startup', true);

    $null = null;
    $stringa = 'ab';
    $vettore = array(array());
    $vettore = array(array('restanti' => 1));
    if(isset(
    $vettore[0]['restanti'])) {
    echo
    'preverifica esistenza vettore e restanti: ' . $vettore[0]['restanti'];
    } else {
    echo
    'errore';
    }
    var_dump($null[0], $stringa[0], $vettore[0]);
    Ultima modifica di darbula : 09-06-2021 alle ore 20.19.40

  29. #29
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    non voglio sembrare un ragazzo debole ma sto piangendo dalla gioia credetemi siete così gentili a sopportare le mie richieste che non saprei proprio come ringraziarvi se non con un abbraccio a tutti voi
    Sono stato studente anche io. So cosa si prova completa solidarietà!

    Non so come gestisce l'errore runQuery ma sembra che nel caso di esito positivo ritorna un vettore, ecco un pseudo codice che mostra come verificare altrimenti dal momento che usi una variabile esterna potrebbe anche non esistere quel id.
    La classe DBcontroller l'hai realizzata tu, o ti è stata data e devi tenerla così com'è? Sarebbe utile sapere esattamente come si comporta in modo da capire come gestire gli errori.

    Vista il contesto, in questo caso specifico si può pensare di segnalare un errore se il vettore restituito è vuoto. Con riferimento al codice di prima:
    Codice PHP:
    $result = $db_handle->runQuery("SELECT id_cliente, SUM(punti) AS restanti FROM punti WHERE id_cliente='" . $_GET["id_cliente"] . "'");
    if (empty(
    $result)) {
    echo
    "Nessun cliente con l'id richiesto, gestione dell'errore";
    }
    else {
    $row = $result[0];
    $restanti = $row['restanti'];
    ...
    }
    Ma questo è solo uno dei modi possibili, probabilmente il più semplice.

    I suggerimenti che do più spesso:


  30. #30
    Guest

    Predefinito

    non sono un fenomeno non sarò mai il più grande programmatore del mondo ma cerco di impegnarmi per dare soddisfazioni a me stesso ma anche ad i miei genitori la classe dbcontroller mi è stata data dal prof spiegandoci che è tra quelle sicure ma che poi dobbiamo lavorarci sopra per bloccare eventuali attacchi sto limando la grafica ed inserire un modale anche nella ricerca perchè il prof mi ha indicato che vuole tutto su una schermata (almeno se ricordo bene, poi parlo sempre al singolare ma siamo in 3 a farlo io, il mio compagno di progetto e voi che con il vostro supporto ci avete aiutato davvero tanto, avrei molte cose che vorrei fare su questo progetto espanderlo migliorarlo sempre di più ma prima devo rivedere tutto il codice e lavorare al meglio
    Ultima modifica di puntifedelta : 10-06-2021 alle ore 07.57.19

Regole di scrittura

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