• User

    Aiuto..non capisco dov'è l'errore...

    Ciao, chiedo a voi, alti phpari :bigsmile:... riguardo al mio problema.

    Il problema è che non riesco a capire dove sia l'errore in questo mio script che non fà altro che prendere dei dati da un form e aggiornali in un db mysql...
    è da un giorno che gli sto dietro..Aiutatemi!!

    Il codice è il seguente..

    [php]<?php
    include('db_conf.php');

    $username = $_POST['username'];
    $d1 = $_POST['d1'];
    $d2 = $_POST['d2'];
    $d3 = $_POST['d3'];
    $nome = $_POST['nome'];
    $sesso = $_POST['sesso'];
    $città = $_POST['città'];
    $file = $_FILES['avatar1']['name'];
    $sito = $_POST['sito'];
    $occupazione = $_POST['occupazione'];

    $db = mysql_connect($dbhost, $dbuser, $dbpassword);
    mysql_select_db($dbname, $db);

    $id1 = $_POST['id_ut'];
    if ($_POST['username'] == '')
    {
    header("location: index.php?pag=profilo&up=1");
    }
    if ($_POST['nome'] == '')
    {
    header("location: index.php?pag=profilo&up=2");
    }
    if ($_POST['email'] == '')
    {
    header("location: index.php?pag=profilo&up=3");
    }

    if ($_POST['old_pass'] != '' && $_POST['new_pass'] != '')
    {
    $sql1 = mysql_query("SELECT * FROM utenti WHERE id = '.$id1.'");
    $pass_recup = mysql_fetch_array($sql1);
    $pass1 = $sql1[password];
    $lol1 = $_POST['old_pass'];
    $lol = md5($lol1);
    if ($lol == $pass1)
    {
    $new_pass1 = $_POST['new_pass'];
    $new_pass11 = md5($new_pass1);
    $update_pass = mysql_query("UPDATE utenti SET password = '$new_pass11' WHERE id = '.$id1.'");
    if (!$update_pass)
    header('location: index.php?pag=profilo&up=sopra1');
    else
    header('location: index.php?pag=profilo&up=sotto1');
    }
    }else{
    $dimensione_massima=102400; //dimensione massima consentita per file in byte -> 1024 byte = 1 Kb
    $dimensione_massima_Kb=$dimensione_massima/1024;
    $cartella_upload="avatar/"; //cartella in cui eseguire l'upload (controllare permessi scrittura)
    // percorso cartella relativo $cartella_upload="../public/";
    $filtrare=1; //filtrare x estensioni ammesse? 1=si 0=no
    $array_estensioni_ammesse=array('.jpg','.jpeg','.gif','.png','.bmp'); //estensioni ammesse

    if(!isset($_FILES['avatar1']) || $_FILES['avatar1']==0){
    echo "Nessun file selezionato per l'upload";
    }elseif($_FILES['avatar1']>$dimensione_massima){
    echo "Il file selezionato per l'upload supera dimensione massima di $dimensione_massima_Kb Kb";
    }else{
    $nome_file=$_FILES['avatar1']['name'];
    $errore="";
    if($filtrare==1){
    $estensione = strtolower(substr($nome_file, strrpos($nome_file, "."), strlen($nome_file)-strrpos($nome_file, ".")));
    if(!in_array($estensione,$array_estensioni_ammesse)){
    $errore.="Upload file non ammesso. Estensioni ammesse: ".implode(", ",$array_estensioni_ammesse)."<br/>";
    }
    }
    if(!file_exists($cartella_upload)){
    $errore.="La cartella di destinazione non esiste</br>";
    }

    if($errore==""){
        if(move_uploaded_file($_FILES['avatar1']['tmp_name'], $cartella_upload.$_FILES['avatar1']['name'])){
            chmod($cartella_upload.$_FILES['avatar1']['name'],0777); //permessi per poterci sovrascrivere/scaricare
            echo "Operazione eseguita con successo. Upload riuscito.";
        }else{
            echo "Impossibile effettuare l'upload del file";
        }
    }else{
        echo $errore;
    }
    

    }
    $query_up = mysql_query("UPDATE utenti SET username = '$username', nome = '$nome', città = '$città', sito = '$sito', occupazione = '$occupazione', sesso = '$sesso', d1 = '$d1', d2 = '$d2', d3 = '$d3' WHERE id = .$id1. ");
    if (!$query_up)
    header('location: index.php?pag=profilo&up=4');
    else
    header('location: index.php?pag=profilo&up=66');
    }
    ?>[/php]Spero possiate trovare l'inghippo perchè io non lo trovo....

    EDIT: Mi sono dimenticato di descrivere l'errore. In poche parole lo script mi da errore quando tenta di aggiornare il db, perchè mi rimanda alla pagina profilo&up=4

    Simone


  • User Attivo

    Ciao,
    per fare un pò di sano debug e vedere che errore genera la queri, sostituisci a:
    [php]
    header('location: index.php?pag=profilo&up=4');
    [/php]
    il codice:
    [php]
    {
    echo mysql_error();
    exit();
    }
    [/php]

    Ad una veloce occhiata ciò che mi lascia perplesso è il nome "città" scritto con l'accento (solitamente si preferisce evitare l'uso di caratteri accentati per i nomi di variabili e campi delle tabelle).
    E' poi sicuramente errata la condizione WHERE id=.$id.
    con il punto ripetuto prima e dopo la variabili. Forse volevi scrivere
    [php]
    ".... WHERE id=".$id." ";
    [/php]

    Non ho controllato il resto del codice.

    Alessandro


  • User

    La variabile id è stata scritta in tutti i modi, anche come hai scritto tu ma niente..

    Proverò ad inserire quella funzione che mi hai descritto...

    Grazie


  • User

    L'errore che mi dà è questo:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'username = 'SimyXT', nome = 'Simone', residenza = 'Fossacesia',Non capisco perchè..tutti i campi sono apposto

    P.S: L'errore di prima era dovuto ad un nome della tabella sbagliato..xDD

    EDIT: Ho risolto anche questo, mancava una virgola...cacchio mi sto stufando con questi errorini banali..


  • User

    Ho un'altro problemino...
    Vorrei incrementare una variabile ogni volta che un file viene scaricato (è un contatore di download)
    Prendo il nome del file e della categoria dalle query string.
    Se il file esiste apre il db, prendo il valore (intero) di una colonna e la metto in una variabile così:

    [PHP]$down = $fetch[down];[/PHP]

    Poi la incremento così:

    [PHP]$down = $down + 1;[/PHP]

    e la aggiorna con UPDATE..

    Il problema è che quando vado a scaricare il file la prima volta mi incrementa la variabile (che prima era NULL). Quando vado a scaricarlo più volte il valore rimane sempre ad uno..

    Perchè??

    Simone


  • User Attivo

    Ciao,
    questa riga di codice, scritta così, è errata:
    [php]
    $down = $fetch[down];
    [/php]
    mancano gli apici:
    [php]
    $down = $fetch['down'];
    [/php]

    Alessandro


  • User

    L'errore non è quello..apparte che io gli apici per utilizzare le tabelle nel mysql_fetch_array non le ho mai usate, continua ancora a non incrementare la variabile...


  • User Attivo

    Ciao,
    puoi postare il resto del codice?


  • User

    Ciao, ecco il codice...

    [PHP]<?php
    include('db_conf.php');
    session_start();
    if ($_SESSION['username'] == '')
    {
    header('location: index.php?pag=downloads&logged=no');
    }else{

    $file=$_GET['file'];
    $cat = $_GET['cat'];
    $percorso="download/";
    $percorso_file=$percorso.$file;
    $dimensione_file=filesize($percorso_file);

    $db = mysql_connect($dbhost, $dbuser, $dbpassword);
    mysql_select_db($dbname, $db);

    $sel_down = "SELECT * FROM $cat WHERE file = $file";
    $sukalo = mysql_query($sel_down);
    $id_autore = mysql_fetch_array($sukalo);
    $down1 = $id_autore['down'];
    $down1 = $down1 + 1;
    $up_down = mysql_query("UPDATE $cat SET down = '$down1' WHERE file = '$file'");
    if(!$up_down)
    {
    header('location: index.php?pag=view_downloads');
    }else{
    header("Content-Type: application; name=".$file);
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".$dimensione_file);
    header("Content-Disposition: inline; filename=".$file);
    header("Expires: 0");
    header("Cache-Control: no-cache, must-revalidate");
    header("Cache-Control: private");
    header("Pragma: public");
    readfile($percorso_file);
    }
    }
    ?>[/PHP]


  • User Attivo

    Mancano gli apici nella select:
    [php]
    $sel_down = "SELECT * FROM $cat WHERE file = '$file' ";
    [/php]

    Poi... visto che i dati recuperati da quella query li usi solo per aggiornare il contatore, potresti evitarla del tutto aggiornando direttamente con la query di update:
    [php]
    $up_down = mysql_query("UPDATE $cat SET down = down+1 WHERE file = '$file' ");
    [/php]

    Alessandro


  • User

    Si ora funziona...gli apici non centrano perchè ho provato a scriverli in tutti i modi ma nulla. Grazie per avermi dato la dritta dell'update..

    Simone