Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    [PHP] Problema con uno script di update dinamico

    Sto tirando su un lunghissimo script per una pagina di update dinamico di un sito, come vedrete dal codice che inserisco qui sotto ho fatto in modo che il sito esegua una serie di funzioni in base alle condizioni di esistenza di $_POST stampi a video il form da riempire oppure lavori gli eventuali dati postati. Nonostante ciò pare che il browser "parsi" a priori anche le funzioni che non dovrebbe parsare (cioè parsa le funzioni anche quando $_POST è vuoto):

    codice:
    <? 
    
    function update_form()
    { ?>
    
    <div id='title2'>Clicca qui per aggiungere una linea</div>
    <div id='title'>Aggiungi un prodotto</div>";
    <form name='product' action="<? $_SERVER['PHP SELF'] ?>" method='post' enctype='multipart/form-data'>";
     
    
    
    <label class='form'>Prodotto:</label>
    <input type='text' name='prodotto'>
    
    <label class='form'>Categoria:</label>
    <select name=cat size=3>";
    <? $query= mysql_query('SELECT prodotto from tipologia') or die('query non eseguibile');
       while ($result=mysql_fetch_array($query)) {
    echo "<option value='$result[prodotto]>$result[prodotto]</option>'";} 
    ?> </select>
    
    <label class='form'>Linea:</label>
     <select name=linea size=3>";
    <?   $sql= mysql_query('SELECT linea from linee') or die ('query non eseguibile');
       while($show=mysql_fetch_array($sql)) {
       echo "<option value=$show[linea]>$show[linea]</option>";} ?>
     
    </select>
    
    
    
    
    
     <label class='form'>Immagine piccola:</label>
     <input type='file' name='img_short' size='100'>
    
    
    
    
     
     
     <label class='form'>Immagine grande:</label>
     <input type='file' name='img_large' size='100' rows='2'>
    
    
    
    
     
     
     <label class='form'>Testo:</label>
     <textarea name='comment' rows='20' cols='60'></textarea>
    
     <input type='submit' value='Invia prodotto' name='submit'>
     <input type='reset' value='Cancella tutto'>
    
     </form>
    
    
    
    ";
     
    <a name='linea'><div id='title'>Aggiungi una linea</div>
    
    </a>
    
    <form name='line' action="<? $_SERVER['PHP SELF']?>"   method='post' enctype='multipart/form-data'>
    <INPUT TYPE='hidden' name='MAX_FILE_SIZE' value='307200'>
    
    
    <label class='form'>Nome linea:</label>
    <input type='text' name='nomelinea'>(Es. casa, notturni, etc.etc)
    
    
    
    <label class='form'>Nome visualizzato:</label>
    <input type='text' name="testolinea">(Es. Linea Casa, Linea Savana, etc.etc.)
    
    
    
    <label class='form'>Immagine di linea:</label>
    <input type='file' name='img_linea' size='100'>
    
    
    
    
    
    <input type='submit' value='Invia nuova linea' name='submit2'>
     <input type='reset' value='Cancella tutto'>
     
     </form>";
     }
    
    
    <?
     //upload dell'immagine grande di un nuovo prodotto
     //faccio in modo che le immagini siano limitate nelle dimensioni e nel peso per non spaccare il layout
    
    
    
    function upload_img_large() {
    
    
    
    //nome della directory di destinazione
    $dir_large= "./img_large"
    
    //istanzio i valori del file
    $large_name= $_FILES['img_large']['name'];
    $large_tmp_name= $_FILES['img_large']['tmp_name'];
    $large_size= $_FILES['img_large']['size'];
    
    //istanzio il nome del file
    $largefilename= basename($large_name);
    
    // metto il limite a 30k
    if ($large_size => 31700) die ("l'immagine $largefilename supera il limite di 5k");
    
    //ricavo le dimensioni in pixel
    list($large_width, $large_height) = getimagesize($_FILES['img_large']['tmp_name']);
    
    //limito le dimensioni a 320x300
    if (($large_width > 320) || ($large_height > 300)) {
          $msg = "
    
    Dimensioni di $largefilename non corrette!!</p>";
          break;                           }
    
    if (!@move_uploaded_file($large_tmp_name, "$dir_large/$large_name"))
    die ("<div id='title'>Impossibile copiare il file $largefilename sul server</div>");
    
    echo "<div id='title'>$largefilename è stato caricato con successo.
    ";
    } 
    
    
    
    //upload dell'immagine piccola di un nuovo prodotto
    // esprimo tutti i valori e le limitazioni del caso per non disintegrare il layout
    
    
    
    function upload_img_short() {
    
    
    
    //nome della directory di destinazione
    $dir_short= "./img_short"
    
    //istanzio i valori del file
    $short_name= $_FILES['img_short']['name'];
    $short_tmp_name= $_FILES['img_short']['tmp_name'];
    $short_size= $_FILES['img_short']['size'];
    
    //istanzio il nome del file
    $shortfilename= basename($short_name);
    
    // metto il limite a 5k
    if ($short_size => 5120) die ("l'immagine $shortfilename supera il limite di 5k");
    
    //ricavo le dimensioni in pixel
    list($short_width, $short_height) = getimagesize($_FILES['img_short']['tmp_name']);
    
    //limito le dimensioni a 100x88
    if (($short_width > 100) || ($short_height > 88)) {
          $msg = "
    
    Dimensioni di $shortfilename non corrette!!</p>";
          break;                           }
    
    if (!@move_uploaded_file($short_tmp_name, "$dir_short/$short_name"))
    die ("<div id='title'>Impossibile copiare il file $shortfilename sul server</div>");
    
    echo "<div id='title'>$shortfilename è stato caricato con successo.
    ";
    }
    
    
    
    //upload dell'immagine di una nuova linea
    // anche qui l'immagine sarà limitata nelle dimensioni e nel peso
    
    
    
    function upload_img_linea() {
    
    
    
    //nome della directory di destinazione
    $dir_linea= "./linee"
    
    //istanzio i valori del file
    $linea_name= $_FILES['img_linea']['name'];
    $linea_tmp_name= $_FILES['img_linea']['tmp_name'];
    $linea_size= $_FILES['img_linea']['size'];
    
    //istanzio il nome del file
    $lineafilename= basename($linea_name);
    
    // metto il limite a 5k
    if ($linea_size => 5120) die ("l'immagine $lineafilename supera il limite di 5k");
    
    //ricavo le dimensioni in pixel
    list($linea_width, $linea_height) = getimagesize($_FILES['img_linea']['tmp_name']);
    
    //limito le dimensioni a 80x101
    if (($linea_width > 80) || ($linea_height > 101)) {
          $msg = "
    
    Dimensioni di $lineafilename non corrette!!</p>";
          break;                           }
    
    if (!@move_uploaded_file($linea_tmp_name, "$dir_linea/$linea_name"))
    die ("<div id='title'>Impossibile copiare il file $lineafilename sul server</div>");
    
    echo "<div id='title'>$lineafilename è stato caricato con successo.
    ";
    }
    
    
    
    //inserisco la query per il database di un nuovo prodotto
    //istanzia le variabili $_POST in variabili utilizzabili e le sfrutta per inserire i dati
    
    
    
    function insert_product_db() {
    
    
    
    $prodotto= $_POST['prodotto'];
    $cat= $_POST['cat'];
    $linea= $_POST['linea'];
    $comment= $_POST['comment'];
    
    $query=mysql_query ("INSERT INTO commerciale
                               ('id', 'prodotto' , 'categoria' , 'linea' , 'img_short' , 'img_large' , 'text')
    					VALUES ( '', '$prodotto', '$cat', '$linea', './$dir_short/$shortfilename', './$dir_large/largefilename', '$comment')"
    					or die ("impossibile inserire un nuovo prodotto nel database");
                                  }
    if ($query) {
    echo "<div id='title'>Il prodotto è stata inserito con successo!</div>" }
    
    //inserisco la query per il database di una nuova linea
    //anche qui istanzio le varie variabili $_POST per sfruttarle nell'inserimento dei dati
    
    
    
    
    function insert_line_db () {
    
    
    
    
    $nomelinea = $_POST['nomelinea'];
    $testolinea = $_POST['testolinea'];
    
    
    $query = mysql_query ("INSERT INTO linee
                                 ('id', 'linea', 'text', 'img', 'link')
    					  VALUES ('', '$nomelinea', '$testolinea', '$dir_linea/$lineafilename' 'risposta.php?linea=$nomelinea'")
                          or die ("Impossibile inserire una nuova linea nel database");
    if ($query) {
    echo "<div id='title'>La linea è stata inserita con successo!</div>" } ?>					  		
     
     <html>
    <head>
    <title>Pagina di aggiornamento linee</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link rel="stylesheet" type="text/css" href="./css/style.css">
    </head>
    <body>
    <div id="contenitore">
    <? include ("./inc/common_db.inc.php");
    
        if ($_POST['action'] == 'submit') {
                      upload_img_short();
    				  upload_img_large();
    				  insert_product_db();
        }elseif ($_POST['action'] == 'submit2') {
                      upload_img_linea();
    				  insert_line_db();
    }if (!$_POST){  
       update_form(); 
    }
    
    
    ?>
    </div>
    </body>
    </html>
    l'errore è alla linea 82, ovvero nel momento in cui comincio ad istanziare le variabili per gestire il file...ma in teoria a $_POST vuoto (come dicevo) non dovrebbe parsare quella parte lì...se qualcuno ha la santa pazienza di dare un'occhiata alle condizioni nell'ultima parte mi farebbe un favore...perchè probabilmente dipende da quelle ...vi ringrazio!

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Perdonami ma non ho tempo di controllare tutto il codice pero' mi è saltato agli occhi questo:

    Codice PHP:
    if (!$_POST){  
       
    upload_form(); 

    Prova a cambiarlo in:

    Codice PHP:
    if (!isset($_POST['action']))
    {  
       
    upload_form(); 




  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Fatto ma per ora non cambia niente. Il codice è lunghetto lo so...ma il problema deve essere lì nelle condizioni da qualche parte...anche perchè l'errore che mi da è di una variabile inaspettata proprio li dove indico $_FILES...quindi parsa codice sintatticamente giusto ma che in assenza di $_POST non può funzionare ovviamente.

    E ho scovato un errorino nella chiamata di una funzione che però non cambia il filo del discorso di una virgola e che cmq vado ora a correggere sopra.

    P.S grazie cmq per la dritta intanto

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    up

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    up

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    up

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    up

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Ok uppo per l'ultima volta dopodichè tento il suicidio...sono ad un punto morto e so anche che ci deve essere un errore cretino da qualche parte o una cosa che ignoro io...

  9. #9
    Lo provo e ti dico
    poi edito

    ehm...riga 79

    Codice PHP:
    $dir_large"./img_large" 
    con
    Codice PHP:
    $dir_large"./img_large"
    no?

    ciauu

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Dio santo....quello era uno dei problemi, resta il fatto che ora non mi parsa il codice come deve, non legge bene le condizioni in basso, ma correggere quello ed altri errori simili che si erano perpetuati copiando e incollando il codice) almeno l'ho fatto ed è già un risultato enorme aver visto comparire lo sfondo impostato sul CSS

    Intanto grazie mille perchè non l'avevo proprio visto quello....

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.