Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [HELP] sottrazzione tra 2 campi

    Salve signori ho un problema:
    Avrei bisogno di fare la sottrazione tra 2 valori presenti in 2 campi di una table,
    tipo km_in - km_out, e mi riporti il risultato in diff_km, ho provato col seguente comando ma mi riporta 0 e non capisco il perchè:

    codice:
    
    
    $query = "UPDATE vetture SET id='$id',
    data_out='$data_out',
    ora_out='$ora_out',
    vettura='$vettura',
    telaio='$telaio',
    km_out='$km_out',
    km_in='$km_in',
    
    diff_km='($km_in-$km_out)',
    
    targa='$targa',
    autista='$autista',
    passeggero='$passeggero',
    destinazione='$destinazione',
    sorvegliante='$sorvegliante',
    motivazione='$motivazione',
    note='$note',
    data_in='$data_in',
    ora_in='$ora_in' 
    WHERE id=$id";

    Dove sbaglio?
    By GeddY_LeE

  2. #2
    Il problema è a monte... non a valle...
    posta il codice precedente
    e fai il var_dump() delle due variabili

  3. #3
    ecco la funzione completa:
    codice:
    
    function aggiorna_record()  
    {   
    	$host="localhost";
    	$username="root";
    	$password="";
    	$database="vetture";
    	$conn=mysql_connect($host,$username,$password);
    	mysql_select_db($database) or die("Impossibile selezionare il database");
        
    	// recupero i campi di tipo "stringa"  
        $id=intval($_GET['id']);  
        $data_out=trim($_POST['data_out']);
    	$ora_out=trim($_POST['ora_out']);
        $vettura=trim($_POST['vettura']);
    	$telaio=trim($_POST['telaio']);
    	$km_out=trim($_POST['km_out']);
    	$km_in=trim($_POST['km_in']);
    	$diff_km=trim($_POST['diff_km']);
    	$targa=trim($_POST['targa']);
    	$autista=trim($_POST['autista']);
    	$passeggero=trim($_POST['passeggero']);
    	$destinazione=trim($_POST['destinazione']);
    	$sorvegliante=trim($_POST['sorvegliante']);
    	$motivazione=trim($_POST['motivazione']);
    	$note=trim($_POST['note']);
    	$data_in=trim($_POST['data_in']);
    	$ora_in=trim($_POST['ora_in']);
    
        if(get_magic_quotes_gpc())  
        {  
            $id = stripslashes($id);  
            $data_out = stripslashes($data_out);  
            $ora_out = stripslashes($ora_out);
    		$vettura = stripslashes($vettura);
    		$telaio = stripslashes($telaio);
    		$km_out = stripslashes($km_out);
    		$km_in = stripslashes($km_in);
    		$diff_km = stripslashes($diff_km);
    		$targa = stripslashes($targa);
    		$autista = stripslashes($autista);
    		$passeggero = stripslashes($passeggero);
    		$destinazione = stripslashes($destinazione);
    		$sorvegliante = stripslashes($sorvegliante);
    		$motivazione = stripslashes($motivazione);
    		$note = stripslashes($note);
    		$data_in = stripslashes($data_in);
    		$ora_in = stripslashes($ora_in);
        }  
        $id = mysql_real_escape_string($id);  
        $data_out = mysql_real_escape_string($data_out);  
        $ora_out = mysql_real_escape_string($ora_out);
    	$vettura = mysql_real_escape_string($vettura);
    	$telaio = mysql_real_escape_string($telaio);
    	$km_out = mysql_real_escape_string($km_out);
    	$km_in = mysql_real_escape_string($km_in);
    	$diff_km = mysql_real_escape_string($diff_km);
    	$targa = mysql_real_escape_string($targa);
    	$autista = mysql_real_escape_string($autista);
    	$passeggero = mysql_real_escape_string($passeggero);
    	$destinazione = mysql_real_escape_string($destinazione);
    	$sorvegliante = mysql_real_escape_string($sorvegliante);
    	$motivazione = mysql_real_escape_string($motivazione);
    	$note = mysql_real_escape_string($note);
    	$data_in = mysql_real_escape_string($data_in);
    	$ora_in = mysql_real_escape_string($ora_in);
    
        $query = "UPDATE vetture SET id='$id',data_out='$data_out',ora_out='$ora_out',vettura='$vettura',telaio='$telaio',km_out='$km_out',km_in='$km_in',diff_km='$diff_km',targa='$targa',autista='$autista',passeggero='$passeggero',destinazione='$destinazione',sorvegliante='$sorvegliante',motivazione='$motivazione',note='$note',data_in='$data_in',ora_in='$ora_in' WHERE id=$id";  
    
    $query = "UPDATE vetture SET id='$id',
    data_out='$data_out',
    ora_out='$ora_out',
    vettura='$vettura',
    telaio='$telaio',
    km_out='$km_out',
    km_in='$km_in',
    
    diff_km='($km_in-$km_out)',
    
    targa='$targa',
    autista='$autista',
    passeggero='$passeggero',
    destinazione='$destinazione',
    sorvegliante='$sorvegliante',
    motivazione='$motivazione',
    note='$note',
    data_in='$data_in',
    ora_in='$ora_in' 
    WHERE id=$id";
    	
    $query = "INSERT INTO storico ($id,$data_out,$ora_out,$vettura,$telaio,$km_out,$km_in,$diff_km,$targa,$autista,$passeggero,$destinazione,$sorvegliante,$motivazione,$note,$data_in,$ora_in) SELECT $id,$data_out,$ora_out,$vettura,$telaio,$km_out,$km_in,$diff_km,$targa,$autista,$passeggero,$destinazione,$sorvegliante,$motivazione,$note,$data_in,$ora_in FROM vetture WHERE id!=$id";
    	
    	$result = mysql_query($query);  
        if (!$result) {  
            die("Errore nella query $query: " . mysql_error());  
        }  
        mysql_close($conn);  
       
        $id = urlencode('Modifica effettuata con successo');  
        header("location: $_SERVER[PHP_SELF]?msg=$id");  
    }
    
    Però la stessa cosa me la fa anche dando il comando da mysql tramite prompt, quindi penso sia sbagliata la sintassi...


    mysql> UPDATE vetture SET diff_km=('$km_in'-'$km_out') WHERE id=1;
    Query OK, 0 rows affected, 2 warnings (0.03 sec)
    Rows matched: 1 Changed: 0 Warnings: 0
    By GeddY_LeE

  4. #4
    Originariamente inviato da GeddY_LeE
    ...
    Però la stessa cosa me la fa anche dando il comando da mysql tramite prompt, quindi penso sia sbagliata la sintassi...

    mysql> UPDATE vetture SET diff_km=('$km_in'-'$km_out') WHERE id=1;
    Query OK, 0 rows affected, 2 warnings (0.03 sec)
    Rows matched: 1 Changed: 0 Warnings: 0
    Scusa, se esegui la query manualmente da prompt cosa dovrebbero essere $km_in e $km_out?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    mysql> UPDATE vetture SET diff_km=('15500'-'15000') WHERE id=1;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    Cos'ì funge, mi restituisce 500 il che è giusto.. quindi qualcosa non va nella funzione... ma cosa? mi sto impazzendo a cercare la soluzione... :/
    By GeddY_LeE

  6. #6
    Codice PHP:
    function aggiorna_record()  
    {   
        
    $host="localhost";
        
    $username="root";
        
    $password="";
        
    $database="vetture";
        
    $conn=mysql_connect($host,$username,$password);
        
    mysql_select_db($database) or die("Impossibile selezionare il database");
        
        
    // recupero i campi di tipo "stringa"  
        
    $id=intval($_GET['id']);  
        
    $data_out=trim($_POST['data_out']);
        
    $ora_out=trim($_POST['ora_out']);
        
    $vettura=trim($_POST['vettura']);
        
    $telaio=trim($_POST['telaio']);
        
    // siccome come da comunicazione personale devono essere numeri interi
        // applichiamo la funzione intval() => cerca sul web per capire cosa è...
        // si dovrebbe applicare l'operatore ternario per verificarne l'esistenza... cmq vabbhè...
        // ci sarebbero millemila cose da dire
        
    $km_out=intval($_POST['km_out']);
        
    $km_in=intval($_POST['km_in']);
        
        
    $diff_km=trim($_POST['diff_km']);
        
    $targa=trim($_POST['targa']);
        
    $autista=trim($_POST['autista']);
        
    $passeggero=trim($_POST['passeggero']);
        
    $destinazione=trim($_POST['destinazione']);
        
    $sorvegliante=trim($_POST['sorvegliante']);
        
    $motivazione=trim($_POST['motivazione']);
        
    $note=trim($_POST['note']);
        
    $data_in=trim($_POST['data_in']);
        
    $ora_in=trim($_POST['ora_in']);

        if(
    get_magic_quotes_gpc())  
        {  
            
    $id stripslashes($id);  
            
    $data_out stripslashes($data_out);  
            
    $ora_out stripslashes($ora_out);
            
    $vettura stripslashes($vettura);
            
    $telaio stripslashes($telaio);
            
    // siccome saranno al 100% dei numeri stripslashes non serve
            // lascio le righe commentate
            /*
            $km_out = stripslashes($km_out);
            $km_in = stripslashes($km_in);
            */
            
    $diff_km stripslashes($diff_km);
            
    $targa stripslashes($targa);
            
    $autista stripslashes($autista);
            
    $passeggero stripslashes($passeggero);
            
    $destinazione stripslashes($destinazione);
            
    $sorvegliante stripslashes($sorvegliante);
            
    $motivazione stripslashes($motivazione);
            
    $note stripslashes($note);
            
    $data_in stripslashes($data_in);
            
    $ora_in stripslashes($ora_in);
        }  
        
    $id mysql_real_escape_string($id);  
        
    $data_out mysql_real_escape_string($data_out);  
        
    $ora_out mysql_real_escape_string($ora_out);
        
    $vettura mysql_real_escape_string($vettura);
        
    $telaio mysql_real_escape_string($telaio);
        
    // stesso motivo della risposta precedente
        /*
        $km_out = mysql_real_escape_string($km_out);
        $km_in = mysql_real_escape_string($km_in);
        */
        
    $diff_km mysql_real_escape_string($diff_km);
        
    $targa mysql_real_escape_string($targa);
        
    $autista mysql_real_escape_string($autista);
        
    $passeggero mysql_real_escape_string($passeggero);
        
    $destinazione mysql_real_escape_string($destinazione);
        
    $sorvegliante mysql_real_escape_string($sorvegliante);
        
    $motivazione mysql_real_escape_string($motivazione);
        
    $note mysql_real_escape_string($note);
        
    $data_in mysql_real_escape_string($data_in);
        
    $ora_in mysql_real_escape_string($ora_in);

        
    // la differenza invece di farla nella query la facciamo fuori con php
        
    $differenza_fra_due_numeri $km_in $km_out;
        
        
    $query "UPDATE vetture SET id='$id',data_out='$data_out',ora_out='$ora_out',vettura='$vettura',telaio='$telaio',km_out='$km_out',km_in='$km_in',diff_km='$diff_km',targa='$targa',autista='$autista',passeggero='$passeggero',destinazione='$destinazione',sorvegliante='$sorvegliante',motivazione='$motivazione',note='$note',data_in='$data_in',ora_in='$ora_in' WHERE id=$id";  

    $query "UPDATE vetture SET id='$id',
    data_out='
    $data_out',
    ora_out='
    $ora_out',
    vettura='
    $vettura',
    telaio='
    $telaio',
    km_out='
    $km_out',
    km_in='
    $km_in',

    diff_km='"
    .$differenza_fra_due_numeri."',

    targa='
    $targa',
    autista='
    $autista',
    passeggero='
    $passeggero',
    destinazione='
    $destinazione',
    sorvegliante='
    $sorvegliante',
    motivazione='
    $motivazione',
    note='
    $note',
    data_in='
    $data_in',
    ora_in='
    $ora_in
    WHERE id=
    $id";
        
    $query "INSERT INTO storico ($id,$data_out,$ora_out,$vettura,$telaio,$km_out,$km_in,$diff_km,$targa,$autista,$passeggero,$destinazione,$sorvegliante,$motivazione,$note,$data_in,$ora_in) SELECT $id,$data_out,$ora_out,$vettura,$telaio,$km_out,$km_in,$diff_km,$targa,$autista,$passeggero,$destinazione,$sorvegliante,$motivazione,$note,$data_in,$ora_in FROM vetture WHERE id!=$id";
        
        
    $result mysql_query($query);  
        if (!
    $result) {  
            die(
    "Errore nella query $query: " mysql_error());  
        }  
        
    mysql_close($conn);  
       
        
    $id urlencode('Modifica effettuata con successo');  
        
    header("location: $_SERVER[PHP_SELF]?msg=$id");  


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.