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

    [UPDATE MySQL] Modulo in PHP da come risultato una pagina bianca. Dove sbaglio?

    Sto creando un modulo per correggere i campi presenti in un database, diviso in due listati: il primo pesca i dati dal db e li reimpagina all'interno della form HTML, il secondo è quello che fa veramente l'update sul db.

    Questo metodo l'ho già applicato con successo su tutti i moduli del sito che sto creando, ma in questo caso mi ritrovo che il risultato finale inviando l'input è una pagina bianca e non riesco a capire perché.

    Potete aiutarmi?
    Qui di seguito il listato che materialmente effettua l'update.

    Codice PHP:
    <?php
       session_start
    ();

       
    $id $_GET['id'];

       
    //Prelevo i dati dal modulo
       
    $rag_p $_POST['rag_p'];
       
    $n_rif $_POST['n_ref'];
       
    $c_rif $_POST['c_ref'];
       
    $codfisc $_POST['cod_fisc'];
       
    $piva $_POST['piva'];
       
    $indirizzo $_POST['indirizzo'];
       
    $civ $_POST['civ'];
       
    $citta $_POST['citta'];
       
    $cap $_POST['cap'];
       
    $prov_insert $_POST['prov_insert'];
       
    $prov $_POST['prov'];
       
    $reg_insert $_POST['reg_insert'];
       
    $regione $_POST['regione'];
       
    $tel $_POST['tel'];
       
    $fax $_POST['fax'];
       
    $mail $_POST['mail'];
       
    $cod_1 $_POST['cod_1'];
       
    $cod_2 $_POST['cod_2'];
       
    $pro $_POST['pro'];
       
    $testo $_POST['testo'];
       
    $video_1 $_POST['video_1'];
       
    $video_2 $_POST['video_2'];
       
    $video_3 $_POST['video_3'];
       
    $user $_POST['user'];
       
    $cat_insert $_POST['cat_insert'];
       
    $category $_POST['category'];
       
    $manager $_POST['manager'];
       
    $inizio $_POST['inizio'];
       
    $valida $_POST['valida'];

       
    //Variabili di connessione al db
       
    $db_name "xxx_db";
       
    $table "xxx_archivio_utenti";
       
    $connect = @mysql_connect("localhost""xxx""xxx") or die("Impossibile stabilire una connessione");
       
    $db = @mysql_select_db($db_name$connect) or die("Impossibile selezionare il database");

        
    //Controllo sulla modifica della regione, della provincia e della categoria:
        //se la regione, la provincia e la categoria non vengono modificate la query salta il campo,
        //altrimenti le modifica.

       
    if ($prov_insert != $prov) {
         
    $prov_def $prov;
       } else {
         
    $prov_def $prov_insert;
       }

       if (
    $reg_insert != $regione) {
         
    $reg_def $regione;
       } else {
         
    $reg_def $reg_insert;
       }

       if (
    $cat_insert != $category) {
         
    $cat_def $category;
       } else {
         
    $cat_def $cat_insert;
       }

       
    //Costruisco la query
       
    $sql "UPDATE `$table` SET `AU_Rag_Partner` = '$rag_p', `AU_Nome_Rif` = '$n_rif', `AU_Cognome_Rif` = '$c_rif', `AU_Cod_Fisc` = '$codfisc', `AU_PIVA` = '$piva', `AU_Indirizzo` = '$indirizzo', `AU_Civico` = '$civ', `AU_Citta` = '$citta', `AU_CAP` = '$cap', `AU_Prov` = '$prov', `AU_Regione` = '$regione', `AU_Tel` = '$tel', `AU_Fax` = '$fax', `AU_Mail` = '$mail', `AU_Cod_Priv_1` = '$cod_1', `AU_Cod_Priv_2` = '$cod_2',  `AU_Subcategoria` = '$cat_def', `AU_Pag_Cliente` = '$testo', `AU_Video_1` = '$video_1', `AU_Video_2` = '$video_2', `AU_Video_3` = '$video_3', `AU_Pro` = '$pro', `AU_Data_Contratto` = '$inizio', `AU_Username_Manager` = '$manager', `AU_Username` = '$user', `Validate` = '$valida' WHERE `AU_id` = '$id' LIMIT 1";
       
    //Inserisco i dati nel db
       
    $res = @mysql_query($sql$connect) or die("Impossibile eseguire l'interrogazione");

       
    //Genero un'anteprima
    ?>
    <?php
         
    include "includes/top.php";
    ?>
    <h1>Modifico associato:</h1> 
    <div align="justify">
    <h2>Anteprima:</h2>
    [b]Ragione sociale:[/b] <?php echo "$rag_p"?>
     
    [b]Referente:[/b] <?php echo "$n_rif"?> <?php echo "$c_rif"?>
     
    [b]Indirizzo:[/b] <?php echo "$indirizzo"?><?php echo "$civ"?> - <?php echo "$cap"?> <?php echo "$citta"?> (<?php echo "$prov"?>) [Regione: <?php echo "$regione"?>]
     
    [b]Cod. Fisc.:[/b] <?php echo "$codfisc"?> - P. IVA: <?php echo "$piva"?>
     
    [b]Tel.:[/b] <?php echo "$tel"?>
     
    [b]Fax:[/b] <?php echo "$fax"?>
     
    [b]E-mail:[/b] [email="<?php echo "]"><?php echo "$mail"?>[/email]
     
    [b]Cod. Priv. 1:[/b] <?php echo "$cod1"?>
     
    [b]Cod. Priv. 2:[/b] <?php echo "$cod2"?>
     
    [b]ID Sottocategoria:[/b] <?php echo "$category"?>
     
    [b]Pagina cliente:[/b] <?php echo "$testo"?>
     
    [b]URL Video 1:[/b] [url="<?php echo "]" target=\"_blank\"><?php echo "$video_1"; ?>[/url]
     
    [b]URL Video 2:[/b] [url="
    <?php echo "]" target=\"_blank\"><?php echo "$video_2"; ?>[/url]
     
    [b]URL Video 3:[/b] [url="
    <?php echo "]" target=\"_blank\"><?php echo "$video_3"; ?>[/url]
     
    [b]Tipo di contratto:[/b] <?php echo "
    $pro"; ?>
     
    [b]Manager di riferimento:[/b] <?php echo "
    $manager"; ?>
     
    [b]Nome utente:[/b] <?php echo "
    $user"; ?>
     
    [b]Validazione:[/b] <?php echo "
    $valida"; ?>

    <?php
         echo "
    <META HTTP-EQUIV=\"Refresh\" CONTENT=\"5;URL=specialedit?id=$id\">"
         
    echo "[b]Per modificare il logo e le immagini, sarai reindirizzato entro 5 secondi, altrimenti clicca <a href=\"specialedit?id=$id\">qui</a>.[/b]"
    ?>
    </div> 
    <?php
         
    include "includes/bottom.php";
    ?>

  2. #2
    questo codice non và bene... se lo stai utlizzando per scopi didattici ok... ma se nn è così ci sono moltissime cose che non vanno...

    -la più evidente e che esegui l'update anche senza submit
    -poi l'id per l'update gestito via GET... pericolosissimo...
    -poi sulle variabili ricevute dovresti fare più controlli
    -nella query ci sono delle virgolette "brutte" e inutili (salvo casi particolarissimi)
    -quando inserisci contenuti dinamici tra le virgolette ad es.
    <a href="<?php echo "$video_1"; ?>" />
    la variabile deve essere filtrata con html_entities_encode con secondo parametro ENT_QUOTES

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Suggerimento....

    display_errors = Off ---> display_errors = On su php.ini

    Almeno in questo modo vedi dove sta l'errore...

    CiaoCiao
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    E' una cosa che sto facendo per me su una mia VPS Aruba.
    Avevo realizzato tutta un'altra cosa su XAMPP, ma una volta caricato il lavoro su internet, l'assenza di quegli apici mi impediva di effettuare INSERT ed UPDATE (non chiedetemi perché).

    Il submit è a monte, sul form separato: ho già provato a testare il file richiamando la URL senza passare dal form ed ovviamente non si crea alcun UPDATE perché non c'è una sorgente di dati. La variabile $id indica solo il record a cui si fa riferimento, ma se non si è prima passati per il modulo precedente, questo listato non compie alcuna azione.

    Uso $_GET['<var>']; solo per discriminare le letture, mai per inserire dati nel db: altrimenti in alternativa dovrei creare per ogni listato di UPDATE anche una query di SELECT per sapere qual'è il record da aggiornare, inserendo nel form un campo in cui sia indicato l'ID per poi confrontarlo con quello che emerge dalla SELECT nel listato che effettua l'UPDATE. Mi pare macchinoso...

    I controlli che mi servono mi pare che ci siano tutti: non capita mai che la form di modifica dei campi abbia un campo vuoto, sono tutti pieni a monte. Gli unici controlli sono nei menu a tendina.

    Scusa l'ignoranza, ma html_entity_decode()/htmlentities() a cosa mi serve? I campi nel database, escluso uno che però è del tipo TEXT, non hanno mai codice HTML al loro interno: le variabili $video_* non contengono altro che una URL, non il codice EMBED, che poi verrà stampato da un altro listato che effettua solo la SELECT sui dati in front-end.

    Per ciò che concerne il consiglio di Fractals87: GRAZIE!!! Anche se ho fatto l'amara scoperta di dovermela vedere con VI per la modifica di quel file tramite SSH...

  5. #5

    [RISOLTO]

    Grazie ad entrambi per i consigli, tutti utili.
    Ho risolto: l'errore specifico era una mancata chiusura di un echo, cioè l'errore più banale.
    Ho comunque avuto parecchi spunti per migliorare quello che ho scritto e sto risolvendo moltissimo col debug sul server.
    Mi permetto di dire però che le impostazioni di quel file INI mi sembrano, a me neofita, un pelettino bislacche: senza quegli strani apici funzionano solo le SELECT e gli switch case vanno scritti sempre inclusi tra i doppi apici, altrimenti o non funziona nulla oppure da errore...

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.