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.046
150
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
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
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
R problema con else PHP 0
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

Discussioni simili