• User Attivo

    Errore php in pagina

    Ciao a tutti, sto sbattendo la testa da un'ora con questo mistero
    ho una condizione che deve variare a seconda dei casi

    se scrivo in questo modo funziona perfettamente

    [PHP]if ($numeroalessandria<$minoredi)[/PHP]

    se scrivo così anche funziona perfettamente

    [PHP]if ($numeroalessandria<$minoredi && $today<18)[/PHP]

    se invece voglio far caricare anche la seconda condizione come una variabile non si legge più nulla ed ho pagina bianca

    [PHP]$scalailgirotardi=" && $today<18";

    if ($numeroalessandria<$minoredi $scalailgirotardi)[/PHP]

    Qualcuno potrebbe aiutarmi a capire dov'è l'errore?

    Grazie mille in anticipo ai programmatori!! Laura


  • User Attivo

    Ho risolto ora scrivendo così

    [php]$variabilecombinata="$minoredi $scalailgirotardi";

    if ($numeroalessandria<$variabilecombinata) [/php]

    Ciao a tutti, buon fine settimana, Laura


  • User Attivo

    Ciao!
    il problema era infatti legato alla concatenazione delle due variabili


  • User Attivo

    Ciao ci deve essere ancora qualcosa che non ho capito nella concatenazione delle variabili, perché il codice che ho fatto non funziona.
    Per semplificare perché se scrivo così mi stampa "Vere tutte e due" ?
    Quando invece 19 non può essere minore di 18? Grazie in anticipo

    [PHP]

    if (("4<30") AND ("19<18")) { echo "VERE TUTTE E DUE"; } else { echo " NON VERE TUTTE E DUE"; }

    [/PHP]


  • ModSenior

    Attenzione che stai confrontanto stringhe e non numeri. 🙂


  • Moderatore

    Ciao ideasiti,

    stai facendo confusione con variabili, stringhe, numeri ed operatori nelle condizioni.

    Il codice corretto per la condizione che hai scritto è:

    [PHP]
    <?php
    if ( 4 < 30 && 19 < 18 ) {
    echo "VERE TUTTE E DUE";
    } else {
    echo " NON VERE TUTTE E DUE";
    }
    ?>
    [/PHP]

    Se ci spieghi bene cosa vuoi fare, con un esempio concreto forse possiamo aiutarti meglio.

    Un saluto.


  • User Attivo

    Ciao Marco,
    dopo varie prove sono riuscita a far funzionare il programma,
    il fatto che ho risolto empiricamente (a furia di tentativi) perché non ho capito
    bene qual era l'errore.

    Ora funziona.
    Il programma deve far partire un'azione
    estrapolando dati da un database di ordini e deve farla partire dopo aver verificato tre condizioni.

    1. Deve contare che il giorno dell'ordine ci siano meno di 40 ordini in città
      e meno di 30 se è un paese dei dintorni

    2. L'ordine per un paese può essere accettato fino alle 18 del giorno prima e per la città fino alle 12 del giorno stesso.

    3. Se è festa per il giorno dell'ordine l'ordine deve essere scalato fino al primo giorno disponibile (che varia a seconda di un calendario
      di consegne diverso per ogni paese del circondario e per il giorno successivo per la città, se non è festa).

    Alla fine scrivendo in questo modo e facendo le varie prove ho visto che funziona in tutte le combinazioni.
    L'unica stranezza è che non mi stampa la variabille con l'avviso [PHP]if ($orariouno<$orariodue) {$avvisoposticipotre=" dato che sono passate le 18 ";}[/PHP]

    [PHP]
    $x = "$numeroalessandria"; // questa variabile la ottengo con una query sul Db che conta il numero di ordini del giorno

    $y = "$minoredi"; // questa varibile stampa 30 se è un paese e 40 se è città

    if ($scalailgirotardi=="si") {$orariouno="$today"; $orariodue="18:00"; } else {$orariouno="8"; $orariodue="10"; } // la variabile di if la metto perché mi serve solo nel caso che siamo fuori città

    if ($x>$y) {$avvisoposticipouno=" dato che il numero di consegne massimo per il giorno è stato superato ($minoredi) ";} // mi serve per stampare avviso nel caso sia superato numero di consegne per il giorno
    if ($datainserire==$datafesta) {$avvisoposticipodue=" dato che il giorno che hai scelto per la consegna è festivo ";} // mi serve per avvisare che il giorno scelto è festa, le feste sono recuperate con una query da una tabella

    if ($orariouno<$orariodue) {$avvisoposticipotre=" dato che sono passate le 18 ";} // mi serve per avvisare che dopo le 18 ordine scala di un giro

    /* faccio partire azione se le 3 condizioni sono verificate, in caso contrario stampo gli avvisi */

    if ($x<$y && $orariouno<$orariodue && $datainserire!=$datafesta)
    {echo "<a href='http://www.contadilandia.it/conferma-ordine/?idordine=$idordine&dataposticipata=$datainserireitalia&datadapassareperdatabase=$datainserire'>Confermi l'ordine con consegna il giorno $datainserire?</a> <br/>
    <a href='javascript:history.back()'>Modifica ordine</a>
    ";

    }

    [/PHP]

    Grazie per il tuo aiuto, Laura


  • ModSenior

    Potresti dare anche un esempio di come sono valorizzate le variabili?
    Tutte quelle di cui fai il confronto magari... e cosa più importante come le valorizzi...
    Da quello che mi sembra di vedere forse fai confuzione su assegnazione a variabili che pensi siano numeriche ma che in realtà lui vede come stringhe perchè magari le metti all'interno delle virgolette.

    Lui a questo punto effettua controlli su stringhe e non su numeri.

    Servirebbe quindi capire che valori dai e come li dai a ...
    orariouno, orariodue, scalailgirotardi, x, y, ....

    Orario uno e due ad esempio prima li confronti come interi (immagino) poi gli assegni stringhe... $orariouno="$today"; $orariodue="18:00";
    Per le stringhe dovresti usare strcmp...


  • User Attivo

    Ciao,
    ti consiglio di perfezionare il sistema di scrittura php perchè così è molto poco chiaro

    [PHP]
    $scalailgirotardi=="si" -- DIVENTA --> $giro_tardi == TRUE

    $orariouno="$today" ; -- DIVENTA --> $time_1 = '$today';

    $orariodue="18:00"; -- DIVENTA --> $time_2 = 18;

    [/PHP]

    Insomma, sono piccoli esempi, ma in sostanza, come base, potresti:

    1. non abusare del " --> meglio usare ' se non ci sono variabili
    2. usa _ per dividere le parole
    3. usa l'inglese se puoi
    4. '18:00' è una stringa, 18 un numero

    ...e cosi via 🙂