Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    inserimento da form in database

    Ciao a tutti,

    sto sbattendo la testa per un problema, immagino, banale. Con il php sono agli inizi, ringrazio chiunque mi possa aiutare. Ho una pagina insert.php per la raccolta di dati (file, qualche select, checkbox e radio) tramite POST, e una send.php per l'inserimento nel database (un database di immagini). A parte il fatto che in locale (uso xampp) non riesco a passare alla pagina indicata in action (send.php), ma qui alla fine risolvo mettendo tutto in un'unica pagina e rimandando la action alla stessa, la raccolta dei dati nella variabile POST non da alcun risultato. Cosa sbaglio?

    insert.php

    Codice PHP:
    <html>
    <
    head>Form di inserimento immagine</head>




    <
    body>

    <
    form action="send.php" method="post">

            <
    input type="file" name="img" value="Inserisci file immagine"/>
            
    <
    hr>
            
            
    Genere: <select name "gen">
            
                <
    option value="art">Art</option>
                <
    option value="math">Math</option>
                <
    option value="symbol">Symbol</option>
                <
    option value="factory">Factory</option>
                <
    option value="movie">Movie</option>
            
            </
    select></form>
            
            
    Ispired by: <select name "insp">
            
                <
    option value="fibonacci">Fibonacci</option>
                <
    option value="italian_flag">Italia 150</option>
                <
    option value="transport">Transport</option>
                <
    option value="2001">2001</option>
                <
    option value="ice">Ice</option>
                <
    option value="kandindsky">Kandinsky</option>
                <
    option value="dongo">Dongo</option>


            </
    select>
            
            

    <
    hr />
            
    Colori:


                    <
    input type="checkbox" name="colori[0]" value="yellow">YELLOW
                    
    <input type="checkbox" name="colori[1]" value="green">GREEN 
                    
    <input type="checkbox" name="colori[2]" value="blue">BLUE

                    
    <input type="checkbox" name="colori[3]" value="purple">PURPLE 
                    
    <input type="checkbox" name="colori[4]" value="pink">PINK 
                    
    <input type="checkbox" name="colori[5]" value="red">RED

                    
    <input type="checkbox" name="colori[6]" value="orange">ORANGE
                    
    <input type="checkbox" name="colori[7]" value="brown">BROWN
                    
    <input type="checkbox" name="colori[8]" value="white">WHITE

                    
    <input type="checkbox" name="colori[9]" value="grey">GREY   
                    
    <input type="checkbox" name="colori[10]" value="black">BLACK

            
            
         
            Temperatura colori

                    
    <
    input type="radio" name="tempcol" value="warm"Caldi
                    
    <input type="radio" name="tempcol" value="cold"Freddi

            
    <hr>
            
    Tecnica
                    
    <
    input type="radio" name="tec" value="klimt"KLIMT
                    
    <input type="radio" name="tec" value="ky"KY
                    
    <input type="radio" name="tec" value="gogh"GOGH  
            
    <hr
            
    Stile: <select name "stile">
            
                <
    option value="abstract">Abstract</option>
                <
    option value="fibonacci">Fibonacci</option>
                <
    option value="3d">3D</option>
                <
    option value="mandala">Mandala</option>
                <
    option value="lines">Lines</option>
                <
    option value="photo">Photo</option>
                <
    option value="circle">Circle</option>
                <
    option value="face">Face</option>
                <
    option value="pinch">Pinch</option>
                <
    option value="collage">Collage</option>
            
            </
    select></form>
            

            
    Dettaglio stile: <select name "dett">
            
                <
    option value="abstract">Abstract</option>
                <
    option value="fibonacci">Fibonacci</option>
                <
    option value="3d">3D</option>
                <
    option value="mandala">Mandala</option>
                <
    option value="lines">Lines</option>
                <
    option value="photo">Photo</option>
                <
    option value="circle">Circle</option>
                <
    option value="face">Face</option>
                <
    option value="pinch">Pinch</option>
                <
    option value="collage">Collage</option>
            
            </
    select></form>

                    
            


           
            
            <
    input type="submit" name="invia" value="Inserisci nel DB"/>

    </
    form>

    </
    body>
    </
    html
    send.php
    Codice PHP:
    <html>
    <head>Pagina di avvenuto invio</head>

    <body>
    <?php

        
    if (isset($invia)){
        
                
    $img $_POST['img'];
                
    $gen $_POST['gen'];
                
    $insp $_POST['insp'];
                
    $colori $_POST['colori'];
                
    $tempcol $_POST['tempcol'];
                
    $tec $_POST['tec'];
                
    $stile $_POST['stile'];
                
    $dett $_POST['dett'];
        
                if (
    $_POST['invia']){
                        
                        
                        echo (
    "ok");
                        
    $conn mysql_connect('localhost','nomedatabase','password') or die (mysql_error());
        
                        
    mysql_select_db("nomedatabase"$conn);
                    
                        
    mysql_query"INSERT INTO `nomedatabase`.`nometabella` ('id_foto', 'risoluzione', `genere`, `inspired_by`, `tecnica`, `stile`, 'dettaglio_stile', 'colori', `temperatura`, `file`, 'img', `aggiunto`) VALUES (NULL, \'\', '$gen', '$insp', '$tec', '$stile', '$dett', '$colori', '$tempcol', '$img', CURRENT_TIMESTAMP);" ) or die (mysql_error());
                        
                        echo (
    "Tutto ok");
        
                }
                
        } else { echo (
    "Dati non inseriti.");}
            
    ?>
    </body>
    </html>

  2. #2
    inoltre: il comando isset l'ho aggiunto dopo per via della definizione delle variabili, avevo insomma la notifica di undefined index ancor prima di inserire i dati.

  3. #3
    intanto

    <select name="gen">
    al posto di
    <select name "gen">

  4. #4
    poi se vuoi inviare immagini

    <form name="send.php" enctype="multipart/form-data" method="post">

    al posto di

    <form action="send.php" method="post">

    quindi usa la variabile $_FILES per ottenere le info sul file immagine caricato

    $_FILES['fileinviato']['name'] contiene il nome del file sul pc dell’utente

    $_FILES['fileinviato']['type'] contiene il mime-type del file

    $_FILES['fileinviato']['size'] contiene la dimensione del file in byte

    $_FILES['fileinviato']['tmp_name'] contiene il nome del file temporaneo in cui il file è stato caricato sul server

  5. #5
    grazie dei consigli, ho corretto il "name=" e ridefinito la variabile immagine con $_FILES

    ho provato a mettere un controllo per il passaggio dei dati a send.php

    Codice PHP:
    <?php

        
    if (isset($invia)){
        
                
    $img $_FILES['img'];
                
    $gen $_POST['gen'];
                
    $insp $_POST['insp'];
                
    $colori $_POST['colori'];
                
    $tempcol $_POST['tempcol'];
                
    $tec $_POST['tec'];
                
    $stile $_POST['stile'];
                
    $dett $_POST['dett'];
        
                if (
    $_POST['invia']){
                        
                        
                        echo (
    "sto inserendo l'immagine" .$_FILES['img']['name']);
                        
    $conn mysql_connect('localhost','xxx','xxx') or die (mysql_error());
        
                        
    mysql_select_db("xxx"$conn);
                    
                        
    mysql_query"INSERT INTO `xxx`.`xxx` ('id_foto', 'risoluzione', `genere`, `inspired_by`, `tecnica`, `stile`, 'dettaglio_stile', 'colori', `temperatura`, `file`, 'img', `aggiunto`) VALUES (NULL, \'\', '$gen', '$insp', '$tec', '$stile', '$dett', '$colori', '$tempcol', '$img', CURRENT_TIMESTAMP);" ) or die (mysql_error());
                        
                        echo (
    "Dati inseriti");
        
                }
                
        }
        
        else { echo (
    "Dati non ricevuti");}
            
    ?>
    il problema però persiste, quando clicco su "invia" non succede nulla... neanche l'echo finale :S

  6. #6
    ti consiglio di controllare il php.ini per verificare che i messaggi di errore siano abilitati. E' probabile che lo script si interrompa con un errore che non viene visualizzato. Una volta abilitata la visualizzazione degli errori procedi passo passo nella loro risoluzione

    il parametro da modificare è
    display_errors = Off
    che diventa On

    ricorda che devi riavviare apache

  7. #7
    mmm purtroppo no: display_errors è su ON

    ho riavviato xampp, nulla.

  8. #8
    ma

    codice:
    if ($_POST['invia'])
    a me puzza un po', visto che invia è il nome dato all'input di submit. Prova, all'inizio della pagina send.php a mettere queste due istruzioni:

    codice:
    print_r($_POST);
    print_r($_FILES);
    cosi' verifichi per bene il contenuto dei due array passati.

    P.S. Sono ascia di sokker

  9. #9
    Originariamente inviato da Ascia75
    ma

    codice:
    if ($_POST['invia'])
    a me puzza un po', visto che invia è il nome dato all'input di submit.
    perdona l'ignoranza, ma è incoerente in che senso? La connessione al db e l'if li ho presi pari pari da un tutorial, potrei sicuramente non aver tenuto conto di qualcosa.


    Prova, all'inizio della pagina send.php a mettere queste due istruzioni:

    codice:
    print_r($_POST);
    print_r($_FILES);
    cosi' verifichi per bene il contenuto dei due array passati.
    ho provato ad inserire i print_r e mi restituisce due array vuoti. Possibile che stia sbagliando qualcosa anche solo a passare i dati selezionati dai form?
    Tra l'altro il form in insert continua a non farmi andare alla pagina send.php, quindi sto usando un'unica pagina (insert.php) ovviamente rimuovendo l'indirizzo in action.

    P.S. Sono ascia di sokker
    D'oh! Se torni, ci sono novità importanti... in ogni caso grazie

  10. #10
    Magari prova a rimuovere tutte quelle chiusure del tag form errate e lasciare solo l'ultima

    Codice PHP:
    ...
    </
    select></form>
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.