Visualizzazione risultati 1 fino 11 di 11

Discussione: pagina bianca durante update

  1. #1
    puntifedelta non è connesso Utente giovane
    Data registrazione
    08-10-2020
    Messaggi
    92

    Predefinito pagina bianca durante update

    ciao ragazzi, per favore potete dirmi dove sbaglio ? perchè non riesco ad effettuare un update sono 2 ore che ci sbatto la testa grazie

    questo è il file update, la session id equivale al fantomatico professore che accede ed ognuno ha il suo id
    Codice PHP:
    <?php
    require_once "../config/database.php";
    if(!empty(
    $_POST["update"]))
    {
    $sql = "UPDATE alunno set img = '".$_POST["img"]."',nome = '".$_POST["nome"]."',informazioni = '".$_POST["informazioni"]."',
    codice = '"
    .$_POST["codice"]."', scuola = '".$_POST["scuola"]."',punti = '".$_POST["punti"]."' WHERE id_alunno={$_SESSION['id']}";
    if (
    mysqli_query($link, $sql))
    {
    header("Location:lista-alunni.php");}}
    ?>
    questo il form
    Codice HTML:
    <form action="modifica-up.php" method="post" enctype="multipart/form-data" class="form-horizontal form-label-left">
    <div class="item form-group">
    <label class="col-form-label col-md-3 col-sm-3 label-align" >Immagine url alunno
    </label>
    <div class="col-md-6 col-sm-6 ">
    <input type="text" class="form-control" name="img" value="<?php echo $row["img"]; ?>">
    </div>
    </div>
    <div class="item form-group">
    <label class="col-form-label col-md-3 col-sm-3 label-align" > nome Alunno
    </label>
    <div class="col-md-6 col-sm-6 ">
    <input type="text" class="form-control" name="nome" value="<?php echo $row["nome"]; ?>">
    </div>
    </div>
    <div class="item form-group">
    <label class="col-form-label col-md-3 col-sm-3 label-align">Informazioni alunno</label>
    <div class="col-md-6 col-sm-6 ">
    <textarea class="form-control" rows="3" name="informazioni"><?php echo $row["informazioni"]; ?></textarea>
    </div>
    </div>
    <div class="item form-group">
    <label class="col-form-label col-md-3 col-sm-3 label-align">Scuola
    </label>
    <div class="col-md-6 col-sm-6 ">
    <input type="text" class="form-control" name="scuola" value="<?php echo $row["scuola"]; ?>">
    </div>
    </div>
    <div class="item form-group">
    <label class="col-form-label col-md-3 col-sm-3 label-align">Codice
    </label>
    <div class="col-md-6 col-sm-6 ">
    <input type="text" class="form-control" name="codice" value="<?php echo $row["codice"]; ?>">
    </div>
    </div>
    <div class="item form-group">
    <label class="col-form-label col-md-3 col-sm-3 label-align">Valore punti
    </label>
    <div class="col-md-6 col-sm-6 ">
    <input type="number" class="form-control" name="punti" value="<?php echo $row["punti"]; ?>">
    </div>
    </div>
    <div class="ln_solid"></div>
    <div class="item form-group">
    <div class="col-md-6 col-sm-6 offset-md-3">
    <input type="submit" name="update" class="btn btn-success" value="Salva">
    </div>
    </div>
    </form>
    non so cosa fare grazie

  2. #2
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    a occhio sembra che il problema sia nelle parentesi graffe {
    prova a sostituirle con le parentesi tonde (

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,132

    Predefinito

    Hai provato a fare un po' di debug? $sql è valorizzato correttamente?

    Occhio che sei a rischio di sql injection.

    Ciao!

  4. #4
    frasidipace non è connesso AlterGuru
    Data registrazione
    07-05-2010
    Messaggi
    2,351

    Predefinito

    Salve,
    qui if (mysqli_query($link, $sql)) è dichiarata una conessione al DB $link che però non vedo aperta dopo il require_once e infatti $link non è presente in alcun altro punto dello script, o sbaglio?
    Dopo il require_once dovrebbe esserci:
    $link= new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

    altrimenti non capisco come avvenga la connessione al DB.


    Buona serata

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,132

    Predefinito

    Immagino che la connessione al db avvenga in ../config/database.php rendendo disponibile la variabile $link, altrimenti concordo che andrebbe assolutamente fatta la connessione, però in versione procedurale, quindi con mysqli_connect() visto che poi utilizza la mysqli_query().

    Ciao!

  6. #6
    puntifedelta non è connesso Utente giovane
    Data registrazione
    08-10-2020
    Messaggi
    92

    Predefinito

    Buongiorno allora ho fatto

    la prova di togliere le { e mettere le ( come detto da blackskyisback ma niente il problema persiste

    Alemoppo è un programmino interno alla scuola ci fanno fare questi esercizi sul loro server che poi ci viene spiegato il tutto

    si il $link è all'interno del database.php che poi viene richiamato con ../config/database.php ed è mysqli_connect

    questa è la file database
    Codice PHP:
    <?php
    define
    ('DB_SERVER', 'localhost');
    define('DB_USERNAME', '');
    define('DB_PASSWORD', '');
    define('DB_NAME', '');
    $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
    $link->set_charset("utf8");
    if(
    $link === false){
    die(
    "ERROR: Could not connect. " . mysqli_connect_error());
    }
    ?>
    Ultima modifica di puntifedelta : 25-09-2021 alle ore 09.09.01

  7. #7
    frasidipace non è connesso AlterGuru
    Data registrazione
    07-05-2010
    Messaggi
    2,351

    Predefinito

    Ma quando scrivi "pagina bianca durante update" ti riferisci ai campi del form che non si valorizzano?
    Leggendo lo script del form mi sembra di capire che a monte hai una quesry per estrarre i dati dell'alunno collegato e li vuoi estrarre sul form per poi consentirne l'aggiornamento. E' così?
    Oppure non va a buon fine l'update? In questo caso non riesco a capire cosa ti aspetti di visualizzare sulla pagina.

    Ciao

  8. #8
    puntifedelta non è connesso Utente giovane
    Data registrazione
    08-10-2020
    Messaggi
    92

    Predefinito

    ciao e grazie per la risposta

    Ma quando scrivi "pagina bianca durante update" ti riferisci ai campi del form che non si valorizzano?
    si non vengono valorizzati

    Leggendo lo script del form mi sembra di capire che a monte hai una query per estrarre i dati dell'alunno collegato e li vuoi estrarre sul form per poi consentirne l'aggiornamento. E' così?
    si, sul form li estraggo senza problemi poi li richiamo da un link con l'id ed a quel punto visualizzo tutti i suoi dati se provo a modificare per esempio il nome dell'alunno al submit ho pagina bianca non ho nessun errore questo è il problema niente di niente e no viene aggiornato nessun dato

  9. #9
    frasidipace non è connesso AlterGuru
    Data registrazione
    07-05-2010
    Messaggi
    2,351

    Predefinito

    Hai provato a fare un echo di $_SESSION['id'] per verificare che sia valorizzato correttamente?
    Prova anche un echo di un campo, ad esempio $_POST["nome"] in modo da verificare che il valore venga trasmesso correttamente.
    Non ho capito poi quali parentesi graffe hai sostituitoo con le tonde. Le graffe sono riferite agli IF (dovresti solo posizionarle meglio per far capire dove si chiude l'IF).

  10. #10
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Non sul sito live
    Codice PHP:
    error_reporting(-1); //tutti i bit impostati a 1 su un complenento a due, altrimenti ~0 con complemento a uno
    ini_set('display_errors', '1'); // per visualizzare gli errori fatali dovrà essere impostato prima della pagina di esecuzione dello script, dunque su php.ini o pagea.php e poi dopo esegui pageb.php
    ini_set('display_startup_errors', true);
    dunque locale o non mostrare perennemente errori.
    Presta attenzione quando annidi condizioni o espressioni etc.
    Se l'utente invia valori tramite il form html dovrò effettuare il codice previsto dal programma (esiste unicamente questo scopo e non altri per questo programma).
    Dunque
    Codice PHP:
    session_start();
    //imposta o recupera,nel primo caso $_SESSION['id'] = 1;
    //mentre nel secondo recuperi ciò che hai salvato in precedenza, se era presente anche $_SESSION['id'] lo ritrovi.
    $espressione = true;
    if(isset(
    $_POST['update'])) {
    if(
    $espressione) {
    echo
    'annidare condizioni o espressioni, queste sono due annidamenti';
    }
    }
    Vedi come il parser php legge dalla prima parentesi graffa aperta al susseguirsi mentre la parentesi graffa di chiusura indica che si valuta quella condizione. Ergo {//a {//b //chiudo b} //chiudo a}
    lista-alunni.php
    Codice PHP:
    session_start()
    // se già loggato, altrimenti rimando al login
    //Dovrebbe esistere $_SESSION['id']
    Al momento le tue graffe corrispondono a tale forma.
    Inoltre session_start() crea o recupera una precedente sessione altrimenti non è il modo corretto di usare la variabile globale $_SESSION.

    Inoltre presta molta cura poiché
    Codice PHP:
    $var1 = false;
    $var2 = 'stringa';
    $var3 = $var1 . $var3;
    da php 9 genererà finalmente errore. Via al codice veloce ma spesso inutile o che comunque può creare bug :) (il programmatore può avere pieno controllo delle proprie variabili, variabili da fonte esterne poiché la propria applicazione la crea lui).
    Ultima modifica di darbula : 26-09-2021 alle ore 10.51.15

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,132

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Hai provato a fare un po' di debug? $sql è valorizzato correttamente?
    Hai provato? $sql è corretta con tutti i campi? Comunque concordo con gli altri che serve la session_start() se vuoi utilizzare $_SESSION[].

    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •