Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21

    Spazi bianchi in stringa passata tramite POST

    Ciao Ragazzi,

    ho un problema.
    Ho un database con una serie di nominativi all'interno.

    Ho creato un applicativo che gestisce l'eliminazione di questi nomi tramite 3 pagine.
    Una di selezione, in cui si richiede di selezionare un nominativo da un menu a tendina con le voci da db.
    Una di conferma, in cui richiamo i dati completi del nominativo selezionato in una tabella e chiedo conferma di eliminazione.
    L'ultima in cui faccio eseguire l'eliminazione.
    Utilizzo POST per passare dati da form.

    Ho notato che non ho alcun problema per nomi che non hanno al loro interno alcuno spazio bianco.
    Per i nomi composti invece, una volta associato alla variabile il valore da POST, questo viene letto per metà (ovvero fino allo spazio bianco), per cui nell'ultima pagina, nell'eliminazione, il DELETE su tabella con riferimento alla variabile contenente il nome da eliminare mi genera un errore perché non trova il nominativo nella tabella.
    es. se il nominativo è "CARLO MARIA" alla variabile viene associato solo "CARLO" e nella successiva ricerca du db non lo trova...

    Qualcuno sa aiutarmi?

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    incolla il codice sennò l'errore non ha senso perchè nella variabile post puoi scrivere quello che ti pare...sicuramente avrai qualcosa che ti "spezza" il contenuto...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    OK. Nella prima pagina ho:

    echo"<form method='POST' action='eliminazione_modello_conferma.php'>";

    $select_nomemodello="SELECT nomem FROM modello";

    echo"<select name='nomem'>";
    if (!pg_query($conn, $select_nomemodello)){
    echo"Errore nella ricerca dei dati dal database";
    exit();
    }
    else {
    $risultato=pg_query($conn, $select_nomemodello);
    while ($riga= pg_fetch_array($risultato)){
    echo"<option>".$riga['nomem'];
    }
    }
    echo"</select>";
    echo"<input type='submit' value='Elimina modello'>";


    Nella seconda:

    $nomem=$_POST['nomem'];

    $sql_sel="SELECT nomep FROM produttore NATURAL JOIN modello WHERE nomem='".$nomem."'";

    if (!pg_query($conn, $sql_sel)){
    echo"Errore nella ricerca dei dati dal database";
    exit();
    }
    else {
    $risultato=pg_query($conn, $sql_sel);
    while ($riga= pg_fetch_array($risultato)){
    $nomep=$riga['nomep'];
    }

    echo"Si è scelto di eliminare il modello '".$nomem."' del produttore '".$nomep."'

    ";
    echo"Scegliere 'Continua' per continuare altrimenti 'Torna indietro' per tornare al menu principale";
    echo"

    ";
    echo"<form method='POST' action='eliminazione_modello_esegui.php'>";
    echo"<input type='hidden' name='nomem' value=".$nomem.">";
    echo"<input type='submit' value='Continua'>";
    echo"</ form>";


    Infine nella terza:



    $nomem=$_POST['nomem'];
    $sql_del="DELETE FROM modello WHERE nomem='".$nomem."'";

    if (!pg_query($conn, $sql_del)){
    echo"Errore nell'eliminazione del modello";
    exit();
    }
    else{
    echo" Il modello richiesto è stato cancellato";
    }

    Tra la prima e la seconda il valore della stringa viene passato correttamente. Dalla 2a alla 3a genera errore per i nomi composti....

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    nella seconda pagina:

    echo"<input type='hidden' name='nomem' value=".$nomem.">";

    l'html come viene generato? il nome è tutto o spezzato?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    e' spezzato. Ho provato a fare un echo con il risultato e mi da solo la prima parte fino allo spazio bianco

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    ok quindi l'errore viene prima; in testa alla pagina

    $nomem=$_POST['nomem'];

    metti

    var_dump($POST);

    in questo modo vedrai tutte le variabili inviate tramite POST; dove c'è scritto "nomem" vedi cosa viene passato...

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    e questo

    echo"<option>".$riga['nomem'];

    scrivilo

    echo"<option>".$riga['nomem'] . "</option>\n";

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    Dunque se inserisco il var_dump sulla 2a pagina ottengo:

    array(1) { ["nomem"]=> string(25) "SLR STIRLING MC LAREN 722" }

    Se lo inserisco sulla terza ottengo:

    array(1) { ["nomem"]=> string(3) "SLR" }

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    hum...allora la prima lo passa correttamente;

    $nomem=$_POST['nomem'];

    fai un

    print "nomem contiene: " . $nomem ;

    subito dopo e vediamo alla variabile cosa viene assegnato...sennò davvero è inspiegabile...

    p.s. ma non ti conviene lavorare con gli id anzichè coi nomi?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    21
    Si per tutte le altre entità ho degli id ma per questa alla base avevo messo dei nomi univoci. cambiare tutto ora è un lavoraccio... trigger e varie...

    cmq... nella seconda pagina ottengo nomem contiene: SLR STIRLING MC LAREN 722

    nella terza: nomem contiene: SLR

    io sinceramente non ne capisco il motivo

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.