Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Problema con file php che pesca dati da un form

    Salve ragazzi,
    vi scrivo questo post per porvi un problema. Nell'area amministrativa del mio sito, originariamente avevo realizzato due form differenti; uno per caricare gli articoli nel database (con i vari campi annessi quali "titolo" ecc.), l'altro per caricare le immagini da associare all'articolo.

    Bene, successivamente ho deciso di realizzare un singolo form, che mi consentisse di inserire nello stesso momenti articolo e immagine annessa. Per capirci mi sembra utile postare il codice relativo al form, anche se non è php. Tuttavia serve per comprendere quel che chiedo dopo.

    Ecco il codice:

    <form name="info" action="inse.php" method="post" enctype="multipart/form-data">
    <h3><font size="3">Titolo</font></h3>
    <textarea name="titolo" cols="40" rows="2"></textarea>


    <h3><font size="3">Sottotitolo</font></h3>
    <textarea name="sottotitolo" cols="40" rows="2"></textarea>




    <h3><font size="3">Testo</font></h3>
    <textarea name="testo" cols="40" rows="10"></textarea>




    <h3><font size="3">Autore</font></h3>
    <input type="text" name="autore">





    <h3>Upload</h3>

    <input type="hidden" name="MAX_FILE_SIZE" value="300000" />
    <input type="file" name="file" size="40" />

    <input type="submit" value="invia">


    Elenco Immagini

    Elenco articoli

    </form>



    Bene, come si può notare il form richiama il file "inse.php", quello che dovrebbe accogliere i vari dati provenienti dal form stesso. Ora vi posto il codice relativo al file "inse.php", ossia:

    <?php
    $titolo = htmlentities(strip_tags($_POST["titolo"]));
    $sottotitolo = htmlentities(strip_tags($_POST ["sottotitolo"]));
    $testo = str_replace("\n", "
    ",$_POST["testo"]);
    $autore = htmlentities(strip_tags($_POST["autore"]));
    if($titolo=="")
    {
    print ("Il titolo è obbligatorio
    <a href=\"forminse.php\">indietro</a>
    ");
    }
    elseif($sottotitolo=="")
    {
    print "Il sottotitolo è obbligatorio
    <a href=\"forminse.php\">indietro</a>
    ";
    }
    elseif($testo=="")
    {
    print "Il testo è obbligatorio
    <a href=\"forminse.php\">indietro</a>
    ";
    print "Titolo: $titolo
    ";
    print "Sottotitolo: $sottotitolo
    ";
    print "Testo: $testo
    ";
    print "Autore: $autore
    ";
    }
    else
    {
    function upload()
    {
    $result = false;
    $immagine = '';
    $size = 0;
    $type = '';
    $nome = '';
    $max_size = 300000;
    $result = @is_uploaded_file($_FILES['file']['tmp_name']);
    if (!$result)
    {
    echo "Impossibile eseguire l'upload.";
    return false;
    }else{
    $size = $_FILES['file']['size'];
    if ($size > $max_size)
    {
    echo "Il file è troppo grande.";
    return false;
    }
    $type = $_FILES['file']['type'];
    $nome = $_FILES['file']['name'];
    $immagine = @file_get_contents($_FILES['file']['tmp_name']);
    $immagine = addslashes ($immagine);

    include("config.php");
    include("config2.php");
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
    $sql = "insert into articoli (titolo, sottotitolo, testo, autore, nome, size, type, immagine) values ('$titolo', '$sottotitolo', '$testo','$autore','$nome','$size','$type','$immag ine')";
    $result = @mysql_query ($sql) or die (mysql_error());
    return true;
    $ultimo_id = mysql_insert_id();
    }
    }
    ?>

    <?php
    echo "<h3>Titolo:</h3> $titolo

    ";
    echo "<h3>Sittotitolo:</h3> $sottotitolo

    ";
    echo "<h3>Testo:</h3> $testo

    ";
    echo "<h3>Autore:</h3> $autore

    ";
    echo "<h3>Ultimo id inserito:</h3> $ultimo_id
    ";
    echo "<h3>Pubblicato il:</h3>". date ("d/m/Y");
    ?>


    Ora, il problema è questo. Pare funzionare tutto bene, in quanto col form, richiamando il file "inse.php", mi compare una pagina dove risultano immessi tutti i dati tranne 1 !!!!!!!!!!
    Ossia l'ultimo id inserito (che dovrebbe essere stampato grazie alla riga "echo "<h3>Ultimo id inserito:</h3> $ultimo_id
    ";") risulta vuoto. E quindi non mi compare l'articolo da nessuna parte, cioè non viene caricato nel database. Così come, controllando la pagina che visualizza le immagini caricate, non risulta inserita l'immagine relativa. Perchè???

    Grazie mille

    p.s. Spero di essermi spiegato bene!

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Non ho controllato bene tutto il codice, ma posso gia' consigliarti di togliere la @ davanti al mysql_query di modo da vedere l'errore che ti da l'INSERT. Se mysql_insert_id() non prende il valore dell'id allora significa che l'inghippo è nella query.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ciao Drugo,
    ho fatto ciò che mi hai suggerito ma ho visto che non cambia nulla. Non mi viene segnalato nessun errore.
    Questo è ciò che mi viene visualizzato nella pagina "inse.php" richiamata:

    Titolo:
    prova

    Sittotitolo:
    prova2

    Testo:
    riprova

    Autore:
    io

    Ultimo id inserito:

    Pubblicato il:
    04/07/2006

    visualizza tutti gli articoli



    Come puoi notare non risulta nessun ultimo id inserito, ed ecco che quindi l'articolo non viene inserito così come neppure l'immagine!

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Non ho mai usato i campi BLOB per lo storing di immagini (e dal codice deduco che tu li stia usando), quindi non saprei se magari sbagli qualcosa nell'inserimento dell'immagine, ma vedo che le variabili POST le prende a dovere e quindi posso solo consigliarti di fare un print della query cosi vediamo cosa succede esattamente:

    Codice PHP:
        $sql "insert into articoli (titolo, sottotitolo, testo, autore, nome, size, type, immagine) 
                       values ('
    $titolo', '$sottotitolo', '$testo','$autore','$nome','$size','$type','$immagine')";
        print(
    $sql);
        
    //$result = @mysql_query ($sql) or die (mysql_error());
        
    return true;
        
    $ultimo_id mysql_insert_id(); 
    Posta quello che ti viene printato cosi vediamo se c'è qualcosa ch enon va nella sintassi

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