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

    Problema db + upload immagini

    Sto veramente impazzendo...quello che dovrebbe essere un codice normalissimo e semplicissimo si sta rivelando un mistero...

    Scrissi questo codice qualche giorno fa e, al momento in cui lo testai, funzionava.
    Ora l'ho preso in mano di nuovo e non funziona più!!!!

    Mi spiego...in sostanza dovrebbe inserire una news in una tabella di un database MySQL.
    Se la news contiene allegata anche un'immagine, questo script estrae dal database l'ultimo id, aggiunge 1 e fa l'upload dell'immagine nominandola come l'id della news.

    Il problema nasce qui...non so perchè mi estrae sempre id=1
    e come se non bastasse, ogni tanto mi dice anche che le variabili $id e $percorso_immagine non sono definite 0.0

    Lavoro in locale su EasyPHP, con PHP 5.3 e MySQL 5.1.

    I file session.php e config.php contengono solo i codici di connessione al db e autenticazione.

    Codice PHP:
    <?php
    include("session.php");
        
    $autore = @$_SESSION['utente'];
        
    $titolo = @$_POST['titolo'];
        
    $testo = @$_POST['testo'];
    if(isset(
    $titolo) && isset($testo)) {
        include(
    "config.php");
        
        if(
    is_uploaded_file($_FILES['immagine']['tmp_name'])) {
            
            
    $ext substr($_FILES['immagine']['name'], strrpos($_FILES['immagine']['name'], ".")+1);
            if(!
    in_array($ext$img_enabled_ext)) {
            die(
    "Il file selezionato non è un formato consentito
    [url='javascript:history.go(-1)']TORNA INDIETRO[/url]"
    );
            }
            
        
    $size_limit $img_size_limit*1024;
        if(
    $_FILES['immagine']['size']>$size_limit && $img_size_limit!=0) {
        die(
    "L'immagine inserita supera le dimensioni consentite ($img_size_limit KB)
    [url='javascript:history.go(-1)']TORNA INDIETRO[/url]"
    ); }
        
        list(
    $width$height$type$attr) = getimagesize($_FILES['immagine']['tmp_name']);
        if(
    $width>$img_width_limit && $img_width_limit!=0) {
        die(
    "L'immagine inserita supera le dimensioni consentite ($img_width_limit x $img_height_limit)
    [url='javascript:history.go(-1)']TORNA INDIETRO[/url]"
    );
        }
        if(
    $height>$img_height_limit && $img_height_limit!=0) {
        die(
    "L'immagine inserita supera le dimensioni consentite ($img_width_limit x $img_height_limit)
    [url='javascript:history.go(-1)']TORNA INDIETRO[/url]"
    );
        }
        
        
    $query_for_id "SELECT id FROM news LIMIT 0,1";
        
    $result mysql_query($query_for_id);
        
    $vettore mysql_fetch_array($result);
        
    $id $vettore['id']+1;
        echo 
    $id;
        
        
    $percorso_immagine $_SERVER['DOCUMENT_ROOT'].$upload_dir.$id.".".$ext;
        
        if(!
    move_uploaded_file($_FILES['immagine']['tmp_name'], $percorso_immagine)) {
        die(
    "Errore durante il caricamento dell'immagine. Controllare la cartella di destinazione
    [url='javascript:history.go(-1)']TORNA INDIETRO[/url]"
    );
        }
        
        }
        
        
    $ora date("H:i:s");
        
    $data date("j/n/Y");

        
    $query_to_insert "INSERT INTO news (autore, titolo, testo, immagine, data, ora) VALUES ('$autore', '$titolo', '$testo', '$percorso_immagine', '$data', '$ora')";
        
        if(
    mysql_query($query_to_insert)) {
        echo 
    "
        La news è stata inserita correttamente.


        [url='news.php?id=
    $id']VAI ALLA NEWS[/url]

        [url='admin.php']VAI AL PANNELLO AMMINISTRAZIONE[/url]
        "
    ;
        }
        else
        echo 
    "Errore durante l'inserimento della news nel database.
    [url='javascript:history.go(-1)']TORNA INDIETRO[/url]"
    ;
        
        die;
    }
    ?>

  2. #2
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Con questa query
    SELECT id FROM news LIMIT 0,1
    estrai il primo id della tabella news quindi ottieni sempre id=1
    prova così:
    SELECT id FROM news ORDER BY id DESC LIMIT 0,1

    Però non ho capito perchè devi sommare 1 all'id della news
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  3. #3
    Perchè devo assegnare come nome immagine l'id della news che devo inserire, per cui prima devo recuperare l'id dell'ultima news e sommare 1

    Comunque funziona grazie

  4. #4
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Ah ho capito! Be puoi fare la INSERT della nuova news (scusa il gioco di parole ) e subito dopo usare mysql_insert_id(); che ti restituisce l'id della INSERT appena eseguita. Però per il tuo caso non va bene perchè prima uppi l'immagine e poi fai la insert, ti sarebbe servito se avessi avuto due tabella separate cioè una per le news e una per le immagini.
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

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.