problema apici in query sql

Giacca

Nuovo Utente
8 Mag 2008
13
0
0
Ciao ragazzi...sono nuovissimo!!!
Prima di tutto un grande saluto :byebye:

Avrei bisogno del vostro aiuto..
Io non me ne intendo molto di php, ma devo realizzare un sito per un corso all'università..
Vi spiego il mio problema..
Ho una query sql che legge da un db il campo "titolo", che è una variabile GET, e mi restituisce in echo il titolo e il testo dei vari campi..
Il problema è che quando ho titoli con apostrofi, me li interpreta come apici , quindi mi da' errore nella query.. che diavolo posso fare??

questo è il codice della pagina
Codice:
 <?
 $art = $_GET['risultato'] ;
 $art2 = $_GET['articolo'];
 include ('variabile.inc');
   $conn = @new mysqli($host, $user, $pwd, $db_name);
   if (mysqli_connect_errno() != 0) {
    $err_no = mysqli_connect_errno();
    $err_msg = mysqli_connect_error();
      echo "Errore nella connessione: $err_msg ($err_no)";
    }
    else {
      $conn -> query("SET NAMES 'utf8'");
      $sql = "SELECT * FROM articoli where titolo = '$art' or titolo = '$art2'";
      $ris = @$conn -> query($sql);
      if ( $ris === FALSE ) {
        $err_no = $conn -> errno;
        $err_msg = $conn -> error;
        echo "Errore nella query: $err_msg ($err_no)";
      }
      else  {($rec = $ris -> fetch_assoc() ) ;
                      $ric = $rec['testo'];
                      echo $ric;
        $ris -> close();
        $conn -> close();}
      }
      ?>
Aiuto..grazie mille
P.S se potete passate anche nella sezione ajax..anche lì ho un altro problemino..
Grazie mille:elvis:
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
prova:
PHP:
 $art = addslashes($_GET['risultato']) ;
 $art2 = addslashes($_GET['articolo']);
 

Giacca

Nuovo Utente
8 Mag 2008
13
0
0
prova:
PHP:
 $art = addslashes($_GET['risultato']) ;
 $art2 = addslashes($_GET['articolo']);

Purtoppo non mi funziona.. o meglio funziona solo in parte..
Cioè non mi visualizza messaggi di errore, ma la schermata rimane completamente bianca..
Cioè l'echo non mi restituiisce nulla..
Non saprei..:confused:
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Utilizzando str_replace ti manca la corrispondenza perchè in effetti la stringa viene modificata.
Prova a daro uno sguardo nel database, come vengono salvate le stringhe con l'accento?
 

Giacca

Nuovo Utente
8 Mag 2008
13
0
0
Per inserire il titolo nel database con l'apostro ho dovuto attivare la funziona htmlentities nella pagina di inserimento.
Quindi nel db mi risulta la stringa con al posto dell'apostrofo il carattere
&#039..Ho provato allora a fare il replace del ' con quel carattere..ma nemmeno così mi da corrispondenze!!!
Aiutatemi sto impazzendo..:dipser::dipser::dipser::dipser::dipser:
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Quindi se tu passi il valore di GET per htmlentities la corrispondenza la dovrebbe trovare..
PHP:
$art = htmlentities($_GET['risultato']) ;
$art2 = htmlentities($_GET['articolo']);
 

Giacca

Nuovo Utente
8 Mag 2008
13
0
0
Grazie Eliox, ma non mi funge lo stesso...

Qui sotto vi posto la pagina di inserimento dei dati, e dopo quella del form di interrogazione..Aiutatemi per piacere sono 5 giorni che nn riesco ad andare avanti!!!
Codice:
<? session_start();
 ?>
<div align="right">
    <table width="85%" id="titoli" cellpadding="5">
    <tr>
        <td align="center" valign="top" width="15%"><font face="Verdana" size="4">Leggi</font></td>
        <td align="center" valign="top" width="15%"><font face="Verdana" size="4">
        <a href="articolo_scrittura.php">Scrivi</a></font></td>
        <td align="center" valign="top" width="15%"><font face="Verdana" size="4">Modifica</font></td>
        <td align="center" valign="top" width="15%"><font face="Verdana" size="4">Segnala</font></td>
        </tr></table></div>
               <?
//creo una nuova connessione con i parametri della variabile.inc
include("variabile.inc");
$conn = @new mysqli($host, $user, $pwd, $db_name);
//controllo la connessione, e eventualmente gestisco l'errore
    if (mysqli_connect_errno() != 0) {
      $err_no = mysqli_connect_errno();
      $err_msg = mysqli_connect_error();
      echo "Errore nella connessione: $err_msg ($err_no)";
    } 
    else { $conn -> query("SET NAMES 'utf8'");
    $testo = htmlentities ($_POST['text'],ENT_QUOTES);
    $titolo = htmlentities ($_POST['titolo'],ENT_QUOTES);
    $titolo2 = AddSlashes ($titolo);
   $aut = htmlentities($_POST['autore'],ENT_QUOTES);
   $sql_text = "INSERT INTO articoli (titolo, testo, autore) VALUES
      ('$titolo2','$testo','$aut')";
      $ris_text = $conn -> query($sql_text);
      if ( $ris_text === FALSE ) {
        $err_no = $conn -> errno;
        $err_msg = $conn -> error;
        echo "Errore nella query: $err_msg ($err_no)";}
        else {
        echo "<p> Articolo inserito correttamente <P>";}
        }
        $conn -> close() ?>
Codice:
<script>
 function setXMLHttpRequest() {
       var xhr = null;
       // browser standard con supporto nativo
       if (window.XMLHttpRequest) {
         xhr = new XMLHttpRequest();
       }
       else if (window.ActiveXObject) {
         xhr = new ActiveXObject("Microsoft.XMLHTTP");
       }
       return xhr;
     }

     var xhrObj = setXMLHttpRequest();

     function populateList() {
       var par = document.forms[0].elements[0].value;
       var url = 'leggi.php?par=' + par;
       xhrObj.open('GET', url, true);
       xhrObj.onreadystatechange = getRicerca;
       xhrObj.send(null);
     }

     function getRicerca() {
       if(xhrObj.readyState == 4 && xhrObj.status == 200) {
         document.getElementById('risultati').innerHTML = "<label for='risultati'>Scelgi:</label><select id='risultato' class='text' name='risultato'>" + xhrObj.responseText + "</select>";
       }
       else {
         document.getElementById('risultati').innerHTML = 'Errore: ricerca fallita!';
       }
     };

     function populateList2() {
       var aut = document.forms[0].elements[1].value;
       var url = 'leggi2.php?aut=' + aut;
       xhrObj.open('GET', url, true);
       xhrObj.onreadystatechange = getArticolo;
       xhrObj.send(null);
     }

     function getArticolo() {
       if(xhrObj.readyState == 4 && xhrObj.status == 200) {
         document.getElementById('articoli').innerHTML = "<label for='articoli'>Scelgi:</label><select id='articolo' class='text' name='articolo'>" + xhrObj.responseText + "</select>";
       }
       else {
         document.getElementById('articoli').innerHTML = 'Errore: ricerca fallita!';
       }
     }
</script>
 <?session_start();?>
  <table width="95%" id="titoli" cellpadding="5">
    <tr>
        <td align="center" valign="top" width="20%">
        <img border="0" src="matita_bnmod.JPG" width="219" height="138"></td>
        <td align="center" width="13%"><font face="Verdana" size="4">
        <a href="lettura.php"><font color="#FF6600">Leggi</font></a></font></td>
        <td align="center" width="13%"><font face="Verdana" size="4">
        <a href="articolo_scrittura.php"><font color="#FF6600">Scrivi</font></a></font></td>
        <td align="center" width="13%"><font face="Verdana" size="4">
        <a href="modifica.html"><font color="#FF6600">Modifica</font></a></font></td>
        <td align="center" width="13%">
        <font face="Verdana" size="4" color="#FF6600">Segnala</font></td>
        <td width="*"></td></tr>
        </table>
            
<FORM METHOD="GET" ACTION="articolo_leggi.php">
 <p align="center">
  <label for="parametri">Cerca:</label>
  <select id="par" class="text" name="par" onchange="populateList()">
    <option value="">Seleziona un criterio</option>
    <option id="autore" value="autore">Autore</option>
    <option id="titolo" value="titolo">Titolo</option>
      </select>
  </p>
  <p align="center" id="risultati" name="risultato" onchange="populateList2()">
   </p>
    <P align="center" id="articoli" name="articolo">
   </p>
  <P align="center">
  <INPUT TYPE="Submit" VALUE="Leggi">
 </P>
</FORM>
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
in che senso non ti funziona? Da errore o non trova la corrispondenza?
 

Giacca

Nuovo Utente
8 Mag 2008
13
0
0
Ragazzi non rieco a venirne a capo!!! :eek: :eek:

Allora..ricapitolo brevemente. Nella pagina di inserimento nel db ho attivato la funzione htmlentities, per codificare i caratteri accentati, inoltre ho aggiunto la funzione AddSlashes per permettere l'insertimento degli apostrofi in modo che non me li riconosca
(L'INSERIMENTO FUNZIONA..anche se secondo me qualcosa dipende anche da quello!)

Nella pagina di interrogazione ho due variabili get, anche esse codificate con la funzione htmlentities..
Quando la funzione contiene solo accenti..tutto ok: mi torva il record
Quando la funzione contiene solo apostrofi, o apostrofi e lettere accentate NON MI ASSOCIA ALCUN RECORD...LA QUERY NN DA' ERRORE, ma nemmeno risultati!!!

AIUTO DEVO ASSOLUTAMENTE USCIRE DA QUESTO PUNTO MORTO!!!:gun:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
scustate se mi intrometto, ma ho avuto un problema simile con l'immissione er cerca di province e regioni
provincia l'aquila
regione valle d'aosta

io ho fatto così (pseudocodice)

inserimento nel database da form

$dainserireEFFETTIVO= stringa rimpiazza apostrofo con cancelletto in stringa da form

ricerca della voce sempre da form

$dacercareEFFETTIVO=stringa rimpiazza apostrofo con cancelletto in stringa da form

$davisualizzare=srtinga rimpiazza cancelletto con apostrofo

quindi quando inserisco o cerco nel input del form scrivo L'AQUILA che trasformo in L#AQUILA (l'utente non se ne accorge)

dentro il db ho L#AQUILA

quando stampo inverto per cuo avrò L'AQUILA (in fondo cosa c'è dentro il db o cosa faccia lo script poco interessa all'utente)

inoltre evito sempre le parole accentate (salvo in word) e trasformo sempre es. è in e' (anche se su http://www.w3schools.com/tags/ref_symbols.asp sono previste)


-----------------------------------------------------------
per eliox meno 849
 
Discussioni simili
Autore Titolo Forum Risposte Data
F PHP problema doppi apici all'interno di una query SQL PHP 1
Akuma consiglio sicurezza per soluzione problema apici PHP 0
S Problema javascript singoli apici Javascript 3
O Problema APICI con la ricerca PHP 2
P Problema con apici nelle stringhe [era:Cambiare grandezza carattere con JavaScript] Javascript 3
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0
A Problema nel passare la variabile PHP 0
G Problema update di un database PHP 0

Discussioni simili