Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    1

    redirect a altra pagina php dopo commit su postgresql con PDO

    ciao a tutti,
    premetto che ho iniziato da poco a programmare e sono principlamente un autodidatta.
    sostanzialmente ho un problema con la pagina che fa la commit dei dati su db postgresql.
    quello che vorrei è che alla fine della commit (che va a buon fine, ho verificato), la pagina mi rindirizzi automaticamente ad una nuova pagina.
    ho provato ad inserire la header in vari punti dove mi sembrava logico andasse, ma continua a dare errore, ne senso che: fa la commit su db ma non mi rimanda alla pagina finale.
    sicuramente sto sbagliando qualcosa, ma non ho l'eperienza per capire dove.
    qualche consiglio?

    di seguito il codice incriminato

    <?php
    // read the .ini file and create an associative array
    $db_param = parse_ini_file("config-file.ini");

    $user = $db_param['user'];
    $pwd = $db_param['pwd'];
    $db = $db_param['db'];
    $host = $db_param['host'];
    $port = $db_param['port'];


    $dsn = "pgsql:host=$host;port=$port;dbname=$db;user=$ user ;password=$pwd";


    try{
    // create a PostgreSQL database connection
    $conn = new PDO($dsn);

    // display a message if connected to the PostgreSQL successfully
    /*if($conn){ --DEBUG
    echo "Connected to the <strong>$db</strong> database successfully!";
    }*/

    // Stampa i valori dalla POST --DEBUG
    /*echo 'data_scheda: ' . $_POST['dat_scd'];
    echo "<br />\n";
    echo 'id_user: ' . $_POST['id_user'];
    echo "<br />\n";*/

    // inizio transazione
    $conn->beginTransaction();

    //*********************** INSERIMENTO scheda ********************************

    // crea query
    $query_lettura = "INSERT INTO letture (fk_matricola, fk_letturista, rit_stato_cod, rit_data_let, rit_lettura, rit_note, rit_gps_y, rit_gps_x) VALUES ('{$_POST['fk_matricola']}', '{$_POST['operatore']}', '{$_POST['id_stato']}', '{$_POST['rit_data_let']}', '{$_POST['rit_lettura']}', '{$_POST['rit_note']}', '{$_POST['latitude']}', '{$_POST['longitude']}')";
    //echo "query_lettura : $query_lettura";
    //echo "<br />\n";
    //inserisce utente in tabella
    if($conn->exec($query_lettura)) {
    $id_let = $conn->lastInsertId('letture_id_let_seq');
    //echo 'id_let: ' . $id_let;
    //echo "<br />\n";

    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    // commit finale
    $conn->commit();
    $conn = null;
    }

    catch (PDOException $e){
    // report error message
    echo $e->getMessage();
    exit;
    }


    header("location: inserimento_riuscito.php");

    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Vedo che hai diversi echo prima della funzione header(), così non funziona.
    Leggi la documentazione della funzione header() (fallo con tutte le funzioni che ti sembra non facciano il proprio dovere, specialmente se sei alle prime armi), c'è scritto chiaramente che non debbono esserci output prima del suo utilizzo, in caso contrario riceverai l'errore "headers already sent".
    Occhio, anche spazi vuoti e ritorni a capo fuori dai tag <?php ?> sono considerati output, così come l'uso della codifica UTF8 semplice, all'inizio del file mette un carattere non stampabile, quindi invisibile, ma c'è e conta come output, usa UTF8 Senza BOM per salvare i file PHP.

Tag per questa discussione

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.