Visualizzazione risultati 1 fino 18 di 18

Discussione: conversione numero intero

  1. #1
    Guest

    Predefinito conversione numero intero

    è possibile convertire un valore richiamato da un'altra pagina tramite questa funzione
    Codice PHP:
    $numero = $_POST['numero']);
    in un numero in modo che poi si possa eseguire un operazione del genere?

    Codice PHP:
    $risultato = $numero - $fisso;
    il campo 'numero' sul database è un int(11)


    grazie

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

    Predefinito

    Codice PHP:
    $numero = (int) $_POST['numero']);
    Ciao!

  3. #3
    Guest

    Predefinito

    Codice PHP:
    // recupero i campi
    $numero = $_POST['soldi'];
    $numero = (int) $_POST['numero'];
    $variabile = intval($_POST['variabile']);

    //definisco la variabile di costo
    $costo = 1000000;
    $resto = $numero - $costo;

    $id = intval($_GET['id']);

    // preparo la query
    $query = "UPDATE db_prova SET
    numero = '
    $resto',
    variabile = '
    $variabile'

    WHERE id =
    $id";
    il numero che torna è -$costo
    non fa la sottrazione

  4. #4
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ovviamente devi conventire anche questo campo:
    Codice PHP:
    $numero = $_POST['soldi'];
    Codice PHP:
    $numero = (int) $_POST['soldi'];
    P.S. php fa la sottrazione anche tra stringhe :/
    Ultima modifica di mycarlo : 01-02-2010 alle ore 19.16.40

  5. #5
    Guest

    Predefinito

    Codice PHP:
    function aggiorna_record()
    {
    // recupero gli altri campi del form
    $soldi = $_POST['soldi'];
    $soldi = (int) $_POST['soldi'];
    $variabile = intval($_POST['variabile']);

    //definisco la variabile di costo
    $costo = 1000000;
    $resto = $soldi - $costo;

    $id = intval($_GET['id']);

    // preparo la query
    $query = "UPDATE db_prova SET
    soldi = '
    $resto',
    variabile = '
    $variabile'

    WHERE id =
    $id";
    cosi non funziona. torna il valore -$costo
    quindi il valore $soldi credo venga letto come 0 anche se non lo è.
    la sottrazione tra stringhe dici che potrebbe risolvere il problema?
    come la dovrei impostare?

  6. #6
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Se non funziona tra interi, non penso che le stringhe possano risolvere qualcosa (se non peggiorare).

    Se il valore che hai in $resto è -$costo, vuol dire che $soldi è uguale a 0 (oppure è nulla, non definita, ma con il casting (int) diventa sempre 0). Controlla se $_POST['soldi'] contiene il valore che ti serve.

  7. #7
    Guest

    Predefinito

    ho aperto il database e ho verificato che il valore soldi è 1500000

    quindi dovrebbe dare un altro risultato diverso da -$costo

    lo legge come se fosse 0. non riesco proprio a capire cosa c'è che è sbagliato
    Ultima modifica di LaClessidra : 01-02-2010 alle ore 19.50.40

  8. #8
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    ma il valore di $soldi arriva da una chiamata POST
    cosa contiene $_POST['soldi'] ?

    prova un var_dump($_POST['soldi']); quasi sicuramente è un numero preceduto da un non-numero

  9. #9
    Guest

    Predefinito

    nella funzione precedente è definita cosi
    Codice PHP:
    $soldi = intval($row['soldi']);
    e non subisce modifiche.

    tu dici sostituire il codice
    Codice PHP:
    $soldi = (int) $_POST['soldi'];
    con
    Codice PHP:
    $soldi = var_dump($_POST['soldi']);
    perchè cosi ho provato ed il risultato è sempre -$costo

  10. #10
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    var_dump stampa direttamente delle informazioni sulla variabile (tipo, lunghezza valore) e non va usata così (all'interno di una variabile).

    AlexKidd ti ha consigliato giustamente di controllare il tipo della variabile $soldi.

    Comunque non capisco una cosa, se i soldi sono salvati nel database perchè poi cerchi di recuperarli con $_POST, che serve appunto per recuperare dei dati da un form?

  11. #11
    Guest

    Predefinito

    provo a riportare il codice intero, non so se vi possa essere d'aiuto
    Codice PHP:
    <?php
    // richiamo il file di configurazione
    require 'config.php';

    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';

    if(
    $_POST && isset($_GET['id']))
    {
    aggiorna_record();
    }
    elseif(isset(
    $_GET['id']))
    {
    mostra_record();
    }
    else
    mostra_lista();

    function
    mostra_lista()
    {
    // mostro un eventuale messaggio
    if(isset($_GET['msg']))
    echo
    '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    // preparo la query
    $query = "SELECT id,nome,soldi,variabile FROM db_prova";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }

    echo
    '
    <table border="1">
    <tr>
    <th>Nome</th>
    <th>Soldi</th>
    <th>variabile</th>
    <th>&nbsp;</th>
    </tr>'
    ;

    while (
    $row = mysql_fetch_assoc($result))
    {
    $nome = htmlspecialchars($row['nome']);
    $soldi = intval($row['soldi']);
    $variabile_arr = variabile('no','si');
    $variabile = $variabile_arr[$row['variabile']];


    // preparo il link per la modifica dei dati del record
    $link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];

    echo
    "<tr>
    <td>
    $nome</td>
    <td>
    $soldi</td>
    <td>
    $variabile</td>
    <td><a href=\"
    $link\">modifica</a></td>
    </tr>"
    ;
    }

    echo
    '</table>';

    // libero la memoria di PHP occupata dai record estratti con la SELECT
    mysql_free_result($result);

    // chiudo la connessione a MySQL
    mysql_close();
    }

    function
    aggiorna_record()
    {
    // recupero gli altri campi del form
    $soldi = $_POST['soldi'];
    $soldi = (int)$_POST['soldi'];
    $variabile = intval($_POST['variabile']);

    //definisco la variabile di costo
    $costo = 1000000;
    $resto = $soldi - $costo;

    $id = intval($_GET['id']);

    // preparo la query
    $query = "UPDATE fanta_squadra SET
    soldi = '
    $resto',
    tettoia = '
    $variabile'

    WHERE id =
    $id";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }

    // chiudo la connessione a MySQL
    mysql_close();

    $messaggio = urlencode('Aggiornamento effettuato con successo');
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    }

    function
    mostra_record()
    {
    // mostro un eventuale messaggio
    if(isset($_GET['msg']))
    echo
    '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

    $id = intval($_GET['id']);

    // preparo la query
    $query = "SELECT variabile FROM db_prova WHERE id = $id";

    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }

    // controllo che la SELECT abbia restituito un record
    // l'id passato via GET potrebbe essere stato manipolato
    if(mysql_num_rows($result) != 1) {
    die(
    "l'ID passato via GET è errato");
    }

    list(
    $variabile) = mysql_fetch_row($result);

    ?>
    <form name="form_variabile" method="post" action="">
    <label>variabile
    <select name="variabile">
    <option value="1" <?if($variabile==1) echo 'selected="selected"'?>>si</option>
    </select>
    </label>
    </p>
    <p>
    <input name="invia" type="submit" value="Invia" />
    </p>
    </form>
    <?
    }
    ?>
    nel database 'variabile' è definita come tinyint(2) e ridefinendola come array visualizza 0--> no, 1--> si
    invece la variabile 'soldi' è definita come int(11).

    lo scopo di tutto è che l'utente possa modificare la variabile, passando da 0 (cioè no) a 1 (cioè si). e questo funziona.
    nel passaggio da 0 a 1 deve modificare, oltre 'variabile' anche 'soldi', facendolo diventare soldi-costo. cosa che non fa perchè fa ritornare sempre un valore pari a -costo, leggendo quindi 'soldi' come valore nullo, anche se non lo è.

    risolto il problema di aggiornamento di 'soldi' in teoria dovrei aggiungere ancora una condizione che mi permetta di effettuare la modifica di 'variabile' da 0 a 1 solo nel caso soldi sia >= di costo, in modo che non mi possa ritornare un valore negativo alla fine.
    Ultima modifica di LaClessidra : 01-02-2010 alle ore 21.27.56

  12. #12
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    if($_POST && isset($_GET['id']))

    che senso ha questa condizione?

    gli array GET e POST non possono esser popolati contemporaneamente! perchè una chiamata o è GET o è POST

  13. #13
    Guest

    Predefinito

    xke la pagina è strutturata nel seguente modo:

    - quandi accedi alla pagina mostra l'elenco dei campi della tabella che vuoi visualizzare. con una scritta modifica che rimanda al form per modificarli
    - se clicchi su modifica accedi al form con i dati da modificare che l'utente può aggiornare compilando il form stesso e cliccando su invia

    se funziona anche in modo più semplice non so, io sono riuscito a farlo solo cosi

  14. #14
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    non riesco a capire come faccia ad entrare dentro a quell'IF

  15. #15
    Guest

    Predefinito

    Non è vero che una chiamata o è GET o è POST. E quando modifichi un articolo di WordPress? L'URL contiene dati GET (l'ID dell'articolo, o il nome, o che so io) e i dati del form sono inviati tramite POST.

  16. #16
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Veramente si può anche fare una chiamata GET e POST (con un form).
    Ad esempio:
    Codice HTML:
    <form action="pagina.php?get=quello_che_voglio&blabla=ciao" method="POST">
    <input type="text" name="post" />
    <input type="submit" name="go" value="go" />
    </form>
    E in pagina.php:

    Codice PHP:
    <?php
    print_r
    ($_GET); // array([get] => quello_che_voglio, [blabla] => ciao)
    print_r($_POST); // array([post] => valore_form, [submit] => go)
    ?>

  17. #17
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    Questa cosa la ignoravo, non si finisce mai di imparare

  18. #18
    Guest

    Predefinito

    sono riuscito a risolvere. grazie a tutti!!!

    in pratica il valore $soldi era nullo perchè il richiamo _POST faceva riferimento a una variabile che doveva essere inserita nel form. quindi non inserendola, quando andava ad aggiornare la variabile faceva 0-costo e quindi dava sempre -0.
    alla fine bisognava inserire un richiamo al campo del database

Regole di scrittura

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