Visualizzazione risultati 1 fino 2 di 2

Discussione: Risultato in base a IF di select

  1. #1
    Saylormoonstaff non è connesso Neofita
    Data registrazione
    13-04-2006
    Messaggi
    4

    Predefinito Risultato in base a IF di select

    Ciao ragazzi, ho due pagine.
    Nella prima pagina ho un select strutturato in questo modo:

    Codice PHP:
    <SELECT name=Descrizione value="<?= htmlentities($rs['IDOggetto']) ?>">
    <?
    $MySql
    = "SELECT * FROM ClgPersonaggioOggetto LEFT JOIN Oggetto ON Oggetto.IDOggetto = ClgPersonaggioOggetto.IDOggetto WHERE ClgPersonaggioOggetto.Nome = '$Login'";
    $Result = mysql_query($MySql);
    while (
    $rs = mysql_fetch_array($Result)) {

    ?>

    <option><?=$rs['Descrizione']?></option>

    <? } ?>
    </select>
    Fin qui tutto corretto.
    Nella seconda pagina, quella che dovrebbe stampare su una pagina il risultato, o questo:

    Codice PHP:
    $Descrizione = $_POST['Descrizione'];
    $Msg = $_POST['Msg'];

    $MySql = "SELECT * FROM Oggetto WHERE Descrizione = '".addslashes($Descrizione)."'";
    $Result = mysql_query($MySql);
    $rs = mysql_fetch_array($Result);
    $IDOggetto = $rs["IDOggetto"];
    $Giorni = $rs["Giorni"];
    $rs->close;
    Qui parte il problema. Nella tabella OGGETTO c'è un campo chiamato GIORNI. Molti di questi sono settati sullo 0. Altri con un valore successivo a 0.
    Quelli settati su 0 dovrebbero avere un risultato. Quelli superiori a 0 un altro.

    Codice PHP:
    if ($Giorni < 1) {

    RISULTATO 1

    } else {

    RISULTATO 2

    }
    Il problema è che, anche se $Giorni è > 0, mi stampa sempre RISULTATO 1

    Sapete dove sbaglio?

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

    Predefinito

    Le funzioni mysql_* non fanno più parte del linguaggio PHP dalla versione 7, cioè da più di un anno ormai. Passa a mysqli o PDO.

    Detto questo, non stai controllando la presenza di errori da nessuna parte. Le query potrebbero fallire senza che tu te ne accorga, quindi a seguito di una catena di errori e assegnamenti non validi avresti $Giorni = null < 1, che spiegherebbe il "risultato 1". L'istruzione $rs->close;, per esempio, non ha senso: non puoi invocare un metodo su un vettore. Dovresti verificare, in ordine:
    • che la pagina di destinazione riceva i parametri corretti
    • che la query costruita sia come la immaginavi
    • che non avvengano errori durante l'interrogazione (e se avvengono, quali)
    • che i risultati dell'interrogazione siano quelli attesi
    • che i valori delle variabili dopo l'interrogazione corrispondano a quelli che ti aspetti


    Una nota a parte: identificare i record tramite la descrizione mi sembra rischioso, oltre che poco efficiente. Non sarebbe più semplice passare, dal form un id anziché la descrizione?
    Ultima modifica di mzanella : 03-05-2020 alle ore 16.53.35

    I suggerimenti che do più spesso:


Regole di scrittura

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