Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199

    Problema con la condizione IF

    Ciao a tutti (di nuovo)!

    Evidentemente, nonostante tutta la buona volontà, non riesco ad uscire dal bozzolo del principiante. Per cui vengo a chiedere il vostro parere anche su questioni che a voi risulteranno assolutamente banali!!!

    VI pongo subito la questione, poi vi posto il codice se necessita di vederlo: come diamine è possibile che una condizione if venga eseguita anche se è espressamente scritto che, se ha quel valore, non deve essere eseguita???

    Vi posto il codice, mi scuso per la lunghezza.
    Codice PHP:

    <?php
    include('../php/connessione.php');
    //echo $_POST['fin_path'] . "
    ";
    //echo 
    $_POST['fin_path_original'] . "
    ";
    echo 
    $_FILES['fin_path']['tmp_name'] . "
    ";
    echo 
    $_FILES['fin_path']['error'] . "
    ";

    if ((
    $_FILES['fin_path']['error'] != 4) ) //SE VIENE CARICATO UN NUOVO FILE
    {
    echo "
    copia 
    "; //VERIFICO QUALE CONDIZIONE STA ESEGUENDO
    //CREO IL NUOVO NOME DEL FILE E DEL THUMB
    $file = str_replace(' ', '_', $_POST['fin_nome']) . "_" . $_POST['fin_cod'] . ".jpg";
    $file_thumb=str_replace(".jpg","_thumb.jpg",$file);
    //COPIO IL NUOVO FILE
    chdir("
    ../archivio dati/$_POST[fin_mark]/Finiture");
    $dir_upload= getcwd();
    move_uploaded_file (
    $_FILES['fin_path']['tmp_name'], "$dir_upload/$file") or die( mysql_error());
    $fin_path = $dir_upload ."/" .$file;
    //CREAZIONE THUMB
        list(
    $width$height$type$attr) = getimagesize($fin_path);
        
    $thumb = imagecreatetruecolor(80, 40);
        
    $source = imagecreatefromjpeg($fin_path);
        imagecopyresized(
    $thumb$source, 0, 0, 0, 0, 80, 40, $width$height) or die( mysql_error());
        //echo 
    $file_thumb;
        imagejpeg(
    $thumb$dir_upload . "/" .$file_thumb, 50) or die( mysql_error());
        imagecreatefromjpeg( 
    $dir_upload . "/" .$file_thumb) or die( mysql_error());
    //CANCELLO IL FILE SOSTITUITO
    unlink(
    $_POST['fin_file']) or die( mysql_error());
    unlink(
    $_POST['fin_file_thumb']) or die( mysql_error());
    //PROCEDO CON L'AGGIORNAMENTO DEI DATI
    mysql_select_db("
    mob", $con) or die( mysql_error() );
    $sql="UPDATE finiture SET fin_nome='$_POST[fin_nome]'fin_show='$_POST[fin_show]'fin_mark='$_POST[fin_mark]' fin_path='$fin_path'fin_grp='$_POST[fin_grp]'fin_cod='$_POST[fin_cod]'fin_type='$_POST[fin_type]'fin_file='$file'fin_file_thumb='$file_thumb' WHERE fin_id='$_POST[fin_id]'";
    }
    if ((
    $_FILES['fin_path']['error'] == 4) && ($_POST['fin_nome'] != $_POST['fin_nome_original']) || ($_POST['fin_cod'] != $_POST['fin_cod_original']))
    {
    echo "
    rinomina"; //VERIFICO QUALE CONDIZIONE STA ESEGUENDO
    //SE NON VIENE CARICATO, MA SOLO RINOMINATO
    $file = str_replace(' ', '_', $_POST['fin_nome']) . "_" . $_POST['fin_cod'] . ".jpg";
    $file_thumb=str_replace(".jpg","_thumb.jpg",$file);
    //RINOMINO IL NUOVO FILE
    chdir("
    ../archivio dati/$_POST[fin_mark]/Finiture") or die( mysql_error());
    rename (
    $_POST['fin_file'], $file) or die( mysql_error());
    rename (
    $_POST['fin_file_thumb'], $file_thumb) or die( mysql_error());
    //PROCEDO CON L'AGGIORNAMENTO DEI DATI
    mysql_select_db("
    mob", $con) or die( mysql_error() );
    $sql="UPDATE finiture SET fin_nome='$_POST[fin_nome]'fin_show='$_POST[fin_show]'fin_mark='$_POST[fin_mark]' fin_path='$_POST[fin_path]'fin_grp='$_POST[fin_grp]'fin_cod='$_POST[fin_cod]'fin_type='$_POST[fin_type]'fin_file='$file'fin_file_thumb='$file_thumb' WHERE fin_id='$_POST[fin_id]'";
    }
    else
    {
    echo "
    modifica dati"; //VERIFICO QUALE CONDIZIONE STA ESEGUENDO
    mysql_select_db("
    mob", $con) or die( mysql_error() );
    $sql="UPDATE finiture SET fin_nome='$_POST[fin_nome]'fin_show='$_POST[fin_show]'fin_mark='$_POST[fin_mark]' fin_path='$_POST[fin_path]'fin_grp='$_POST[fin_grp]'fin_cod='$_POST[fin_cod]'fin_type='$_POST[fin_type]'fin_file='$_POST[fin_file]'fin_file_thumb='$_POST[fin_file_thumb]' WHERE fin_id='$_POST[fin_id]'";
    }
    mysql_query(
    $sql,$con); /*
    if (!mysql_query(
    $sql,$con))
        {
            header("
    Locationfin_main.php?" . "false");
        }
    else
        {
            header("
    Locationfin_main.php?" . "true");
        }*/
    mysql_close(
    $con);
    ?>
    Quello che mi crea il problema è che se io spedisco il file, ma non cambio nessun altro parametro lui mi restituisce sia COPIA che RINOMINA, cosa che non dovrebbe fare appunto perché nell'IF di RINOMINA gli ho specificato che nessun file deve essere stato trasmesso!

    Grazie ancora una volta a tutti coloro che si vogliono interessare a questo caso disperato (me medesimo!!! )

    Ciao

    PS: se qualche buon'anima con tanta pazienza e tanto tempo si volesse mettere a disposizione per accompagnarmi attraverso questa giungla al fine di partorire questo sito gliene sarei eternamente grato!!!!!!!!!!!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Da uno sguardo rapido probabilmente sbagli l'annidamento delle condizioni... dovresti portare fuori da tutto il primo controllo... l'IF è infatti verificato con un OR come operando principale dove la seconda condizione è ($_POST['fin_cod'] != $_POST['fin_cod_original']) che nel tuo caso probabilmente risulta verificata anche in caso di upload... potresti cambiare l'annidamento delle parentesi o più semplicemente (se ho capito il tipo di controllo che effettui) mettere il secondo if come ramo else del primo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Grazie Eiyen,

    dopo lungo lavoro ho risolto...cancellato tutto e riscritto con una logica e ordine adeguati. Alla fine son riuscito a fare quello che dovevo.

    Cmq, per la cronaca e per qualsiasi neofita ne avrà bisogno, l'errore era dovuto da questo:
    ERRATO:
    Codice PHP:
    if (($_FILES['fin_path']['error'] == 4) && ($_POST['fin_nome'] != $_POST['fin_nome_original']) || ($_POST['fin_cod'] != $_POST['fin_cod_original'])) 
    ESATTO:

    Codice PHP:
    if (($_FILES['fin_path']['error'] == 4) && (($_POST['fin_nome'] != $_POST['fin_nome_original']) || ($_POST['fin_cod'] != $_POST['fin_cod_original']))) 
    Ovvero la seconda e terza condizione dovevano essere a se stanti rispetto alla prima, come in matematica: prima facevo 5 + 2 x 5 invece di fare 5 + (2x5)!

    Ciao!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.