Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    5

    [MySQL]Passaggio di una variabile con apostrofo tra due pagine

    Ciao! Sto sviluppando un piccolo database con pagine php per accedere alle informazioni. Ho incontrato un problema nel passaggio di una variabile contenente un apostrofo da una pagina all'altra e volevo chiedere un aiuto.


    Nella prima pagina chiedo di inserire il nome del corso. Funziona tutto perfettamente con tutti i corsi tranne uno che si chiama "Palestra sull'acqua" perchè se scrivo "palestra sull'acqua" e do invio nella seconda pagina passa solamente "palestra sull" con la conseguenza che la query non viene eseguita correttamente.

    Per evitare di mettere un sacco di codice ho postato solo le parti incriminate, se possono esservi utili.
    Codice della prima pagina:
    ...
    print "<form action='Ricerca_Corsi.php'>";
    print "<h3> CORSI </h3>";
    print "<p>Scrivi il nome del corso di cui vuoi visualizzare l'orario e l'elenco degli iscritti</p>";
    print"<p>";
    print "Nome del corso: <input type=text name='RicercaCorso'>";
    print "<input type=submit value='Cerca il corso'>";
    print "</p>";
    print "</form>";
    ...


    Codice della seconda pagina:
    ...
    $query="SELECT Nome, Cognome, DataNascita FROM iscritti WHERE NomeCorso='".$_REQUEST["RicercaCorso"]."';";
    $result = mysql_query($query) or die(mysql_error());
    print "<h4>Iscritti</h4>";
    print "<table>";
    print "<tr>";
    print "<th>Nome</td>";
    print "<th>Cognome</td>";
    print "<th>Data di Nascita</td>";
    print "</tr>";
    do{
    $row= mysql_fetch_array ($result);
    if ($row!=NULL) {
    print "<tr>";
    print "<td>".$row["Nome"]."</td>";
    print "<td>".$row["Cognome"]."</td>";
    print "<td>".$row["DataNascita"]."</td>";
    print "</tr>";
    }
    } while ($row !=NULL);
    print "</table>";
    ...

    Grazie in anticipo!

  2. #2
    raddoppia gli apici in modo che palestra sull'acqua diventi palestra sull''acqua

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    5
    Non risolve niente e in ogni caso "Palestra sull'acqua" è una cosa che scrive un utente qualsiasi nel form.
    A me servirebbe una soluzione da inserire nel codice.

  4. #4
    infatti devi essere tu - da codice - a raddoppiare gli apici

  5. #5
    Quote Originariamente inviata da BrunaB Visualizza il messaggio
    Non risolve niente e in ogni caso "Palestra sull'acqua" è una cosa che scrive un utente qualsiasi nel form.
    A me servirebbe una soluzione da inserire nel codice.
    devi passare la stringa alla funzione che inserisce il carattere di escape.


    codice:
    Codice della seconda pagina:
    ...
    $ricerca = mysql_real_escape_string($_REQUEST["RicercaCorso"]);
    
    $query="SELECT Nome, Cognome, DataNascita FROM iscritti WHERE NomeCorso = '$ricerca'";
    ....
    E questo vale anche per le altre stringhe. Metti che l'utente possa chiamarsi "Pippo Dell'Angelo" e la citta' "L'Aquila"
    dai una lettura al seguente thread http://forum.html.it/forum/showthrea...ostid=10166292

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    5
    Grazie ora provo!

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    5
    Questo ha funzionato! Il thread l'avevo già letto ma non ero riuscita a risolvere.. forse non avevo capito dove mettere la funzione real_escape.

    Però ho ancora un problemino, se hai voglia di aiutarmi.
    Non riesco a far funzionare la stessa cosa ma scegliendo il corso da una tendina. Mi spiego meglio, invece di inserire il corso da tastiera, in un'altra pagina ho messo una tendina con le varie scelte. Ecco in quel caso mi da ancora problemi probabilmente proprio perché non so dove infilare la funzione...
    Ho provato a fare così ma qualcosa non va

    La pagina con il form
    ...
    print "Corso:";
    print "<select required name='corso'>";
    print "<option selected value=''></option>";
    print "<option value='CAS'>CAS</option>";
    print "<option value='Agonismo'>Agonismo</option>";
    $stringa="Palestra sull'acqua";
    $corso=mysql_real_escape_string($stringa);
    print "<option value='$corso'>Palestra sull'acqua</option>";
    print "<option value='Uscite libere'>Uscite libere</option>";
    print "<option value='Corso adulti 1'>Corso adulti 1</option>";
    print "<option value='Corso adulti 2'>Corso adulti 2</option>";
    print "<option value='Corso adulti 3'>Corso adulti 3</option>";
    print "</select>";
    print "<input type=submit value='Aggiungi'>";
    ...

    La query nella seconda pagina
    ...
    $corso=mysql_real_escape_string($_REQUEST["corso"]);
    $cognome=mysql_real_escape_string($_REQUEST["cognome"]);
    $query="INSERT INTO iscritti(CF,Nome,Cognome,Telefono,DataNascita,Cate goria,NomeCorso,NomeSezione)
    VALUES('".$_REQUEST["cf"]."','".$_REQUEST["nome"]."','$cognome','".$_REQUEST["telefono"]."',
    '".$_REQUEST["datanascita"]."','".$_REQUEST["categoria"]."','$corso','Canottaggio');";
    ...

    Ecco, il cognome lo mette perfettamente con tutti gli apostrofi che voglio (grazie per il consiglio! ) mentre il corso continua a salvarlo nel db come "Palestra sull\".

  8. #8
    Non devi mettere il carattere di escape direttamente sulla stringa. si deve mettere al momento in cui farai la query.
    Il REAL_ESCAPE necessita di avere la connessione a mysql e quindi provvedera' in base alle opzioni di configurazione se inserire \ oppure ' davanti ai caratteri che in SQL hanno funzioni di "caratteri di controllo". metendo l'escape sta ad indicare a mysql che quello che segue e' un valore ascii stringa e non un carattere di controllo.

    Sulle stringhe esiste(va) la funzione addslashes() e stripslashes() come esisteva l'ormai desueto magic_quote on/off.

    Il fatto di avere un select in input oppure un input type nulla cambia rispetto alla variabile inviata alla pagina seguente.

    A proposto del form dovresti evitare di usare $_REQUEST poiche' ti becca indifferenemente i valori in GET, POST e COOKIE ed e' una manna per chi volesse forzare lo script. Dichiara nel form il metodo post e poi leggi $_POST e non il $_REQUEST

    <form action='Ricerca_Corsi.php' method='post'>

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    5
    ok, grazie ancora!

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.