Aiuto - Variabili PHP

di il
6 risposte

Aiuto - Variabili PHP

Buongiorno, ho bisogno di un consiglio, premetto che non sono una programmatrice ma una ragazza che sta cercando di capire come funziona php a "tastoni" o meglio per lodica, non l'ho mai studiato, cercherò quindi di essere più chiara possibile:
Allora da quanto ho capito il prefisso $ indica una variabile.. nel mio caso ho bisogno di sistemare una variabile che secondo me ha qualcosa che non va. Nel mio sistema (tipo planning) ci sono 12 gruppi di lavoro che confermano ogni mattina tramite una "validazione" la presenza di tutti i componenti del gruppo. In questo caso la validazione è segnalata in php come variabile $valida ad ogni conferma di presenza mi trovo la formula $valida=$valida+1 in modo che se tutti i gruppi confermano la presenza la variabile sarà uguale a 12. Quindi nel menù generale del capo c'è una formula che fa apparire un avviso "Non tutti i gruppi hanno confermato la presenza" se la variabile è inferiore a 12. La formula riportata in php è: <?php if ($valida<12). Il problema è che questo messaggio appare sempre! Quindi la formula $valida=$valida+1 non sta funzionando, infatti se modifico la formula "if" con ($valida=0) oppure ($valida>0) l'avviso non appare quindi non riesco a capire.. spero di essermi spiegata e scusatemi il linguaggio poco professionale ma quasi non so di cosa parlo.. aiuto esperti!

6 Risposte

  • Re: Aiuto - Variabili PHP

    Ciao benvenuta.
    Le forme di espressione più elementari sono le costanti e le variabili. Quando digiti "$a = 5", assegni "5" a $a . '5', ovviamente, ha valore 5, o in altre parole '5' è un'espressione con valore 5 (in questo caso, '5' è una costante intera).

    Dopo questo compito, ti aspetteresti che anche il valore di $a fosse 5, quindi se scrivessi $b = $a , ti aspetteresti che si comporti come se avessi scritto $b = 5. In altre parole, $a è anche un'espressione con valore 5. Se tutto funziona bene, questo è esattamente ciò che accadrà.

    Nel tuo codice avrai dunque una variabile con stato globale visibile ovunque nel tuo script.
    $valida = 0; //una sola volta per script
    $bool = true; // Validazione manuale
    if($bool) { //Verifico se attivare l'incremento
    $valida = $valida + (1);
    }
    echo $valida;
    Tieni a mente che se lo script termina non c'è alcuna variabile poiché finisce il suo ciclo di vita, per affrontare questo problema si usa sessioni, cookie o qualcosa dove memorizzare il dato anche nel database.
  • Re: Aiuto - Variabili PHP

    Hormus ha scritto:


    Ciao benvenuta.
    Le forme di espressione più elementari sono le costanti e le variabili. Quando digiti "$a = 5", assegni "5" a $a . '5', ovviamente, ha valore 5, o in altre parole '5' è un'espressione con valore 5 (in questo caso, '5' è una costante intera).
    Dopo questo compito, ti aspetteresti che anche il valore di $a fosse 5, quindi se scrivessi $b = $a , ti aspetteresti che si comporti come se avessi scritto $b = 5. In altre parole, $a è anche un'espressione con valore 5. Se tutto funziona bene, questo è esattamente ciò che accadrà.
    Nel tuo codice avrai dunque una variabile con stato globale visibile ovunque nel tuo script.
    $valida = 0; //una sola volta per script
    $bool = true; // Validazione manuale
    if($bool) { //Verifico se attivare l'incremento
    $valida = $valida + (1);
    }
    echo $valida;
    Tieni a mente che se lo script termina non c'è alcuna variabile poiché finisce il suo ciclo di vita, per affrontare questo problema si usa sessioni, cookie o qualcosa dove memorizzare il dato anche nel database.
    Si infatti il php inizia con $valida=$_REQUEST[valida].. quest'ultimo "valida" sarebbe un database da cui attinge?
    E altra cosa.. nel mio codice "$valida = $valida + (1);" il numero 1 non è tra parentesi.. può essere quello il problema!?
    Ho dimenticato forse un dettaglio importante.. prima i gruppi di lavoro erano 15 e funzionava tutto, da quando sono passati a dodici, li ho eliminati nel php e ho cambiato "if $valuta<15" ovviamente con "if $valuta<12" e non va più!
  • Re: Aiuto - Variabili PHP

    Non è un database $_REQUEST è una richiesta da url o form dal tuo browser.
    È consuetudine applicare parentesi al secondo numero per non confonderlo nel caso sia un valore negativo, $num = 1 + (-1); // Risulta 0.
    Se prima funzionava spero che le variabili hanno ancora la stessa sintassi dopo la tua modifica, eccetto per if($valida < 12). Puoi anche farne a meno nel tuo codice.
    Con così poche informazioni non so come aiutare.
    Generalmente una richiesta dal browser è singola cioè http://example.com/index.php?valida= non tiene in memoria tutti i gruppi ma solo l'attuale. Dunque lo script termina e $valida = $_REQUEST['valida']; cesserà d'esistere.
    Quindi puoi postare il codice (privo di dati privati, niente user, password o token) tra i tag code (i tag code hanno il simbolo </> in alto da dove stai scrivendo)?
  • Re: Aiuto - Variabili PHP

    Mi hanno appena detto che anche prima, quando erano 15 non funzionava! Quindi credo che abbiano sbagliato proprio qualcosa, lascio i codici.
    SUL DOCUMENTO PHP "INDEX" CHE DOVREBBE AGGIUNGERE +1 ALLA $VALIDA:
    Inizio:
    <?php require_once('Connections/SITO.php');

    ini_set('max_execution_time', 300);
    $valida = 0;
    if (isset($_REQUEST['cerca'])) {
    $cerca=$_REQUEST['cerca'];
    $trovato=$_POST['textfield'];

    Sistema di aggiunta ovviamente ripetuto poi per ogni gruppo:
    <tr>
    <td width="90" height="1"><div align="left" class="style6">
    <div align="left">GRUPPO UNO </div>
    </div></td>
    <td width="20" height="1" <?php if (substr($row_Recordset9['validazione'], 0, 10)==date('Y-m-d')) { ?>bgcolor="#009900" <?php $valida = $valida + (1); } ?>><div align="left"><span class="style9"><span class="style9"></span></span></div></td>
    <td width="20" height="1" <?php if (substr($row_Recordset9['validazione'], 0, 10)!==date('Y-m-d')) { ?>bgcolor="#FF0000" <?php } ?>><div align="left"><span class="style9"><span class="style9"></span></span></div></td>
    <td width="20" height="1" <?php if (substr($row_Recordset9['azzeramento'], 0, 10)==date('Y-m-d')) { ?>bgcolor="#009900" <?php } ?>><div align="left"></div></td>
    <td width="20" height="1" <?php if (substr($row_Recordset9['azzeramento'], 0, 10)!==date('Y-m-d')) { ?>bgcolor="#FF0000" <?php } ?>><div align="left"></div></td>
    </tr>

    SUL DOCUMENTO PHP DELLA PAGINA DEL CAPO:
    Inizio:
    <?php require_once('Connections/SITO.php');
    include('SITO_popola.php');
    $valida=$_REQUEST['valida'];
    $oggi=date('Y-m-d');
    ob_start();

    Messaggio in caso di non conferma di tutti i gruppi:
    <div align="center"><?php if ($valida < 12) { ?>
    <table border=2 bordercolor="#FF0000" rules="none" frame="box" width="700" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <th width="118" height="40" scope="col"><img src="IMG/pericolo.png" width="70" /></th>
    <th width="650" scope="col">Non tutti i gruppi hanno confermato la presenza.</th>
    </tr>
    </table><?php } ?></div>

    HELP
  • Re: Aiuto - Variabili PHP

    Se il codice è ripetuto avrà sempre $valida = 0; come valore iniziale, discorso di sanificazione a parte che comunque una variabile da fonte esterna dovrebbe essere validata.
    Quindi io provvisoriamente ti propongo:
    
    if(isset($_REQUEST['valida'])) {
    $valida = (int) $_REQUEST['valida'];
    } elseif(isset($valida)) {
    $valida = (int) $valida;
    } else {
    $valida = 0;
    }
    Però credo sia un recordset questa variabile $row_Recordset9, dunque userai funzioni mysql o mysqli per interfacciarsi al database, conservi il dato nel database? Se e si il codice che ti ho mostrato prima dovrà considerare anche quest'eventualità. Se è memorizzato nel database la priorità sarà su questo dato.
  • Re: Aiuto - Variabili PHP

    Hormus ha scritto:


    Se il codice è ripetuto avrà sempre $valida = 0; come valore iniziale, discorso di sanificazione a parte che comunque una variabile da fonte esterna dovrebbe essere validata.
    Quindi io provvisoriamente ti propongo:
    
    if(isset($_REQUEST['valida'])) {
    $valida = (int) $_REQUEST['valida'];
    } elseif(isset($valida)) {
    $valida = (int) $valida;
    } else {
    $valida = 0;
    }
    Però credo sia un recordset questa variabile $row_Recordset9, dunque userai funzioni mysql o mysqli per interfacciarsi al database, conservi il dato nel database? Se e si il codice che ti ho mostrato prima dovrà considerare anche quest'eventualità. Se è memorizzato nel database la priorità sarà su questo dato.
    Si esatto.. il php fa riferimento a database MySQL ma sinceramente non so qual è il database a cui fa riferimento!
Devi accedere o registrarti per scrivere nel forum
6 risposte