due problemi sulla ricerca tramite titolo

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Ho fatto un programma che raccoglie diversi tipi di archivi tra cui c'è anche "archivio diabolik" ed oggi tratterò di questo problema. Siamo sempre alle solite. Ossia quando vado a fare una ricerca con apostrofata o accentatta mi da il seguente errore. Una volta ero riuscito a sistemare una volta per tutte (scusate il gioco di parole) il problema. Ma adesso sembra che la soluzione che avevo trovato non vada bene. Quindi chiedo a voi esperti. Questo è quanto ho fatto fino ad oggi.

ricercapertitolodk.php

PHP:
<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        
            <style type="text/css">
             
#intestazione{
width:100%;
height:100px;
position:absolute;
top:0px;
left:0px;
text-align: center;
font-family: Comic Sans MS;
font-size: 100%
}    

#txtdx {
 width:100%;
height:100px;
position:absolute;
top:0px;
right:0px;
text-align: right;
font-family: Comic Sans MS;
font-size: 100%   
}    

#divhr{
position:absolute;
top: 125px;
font-family: Comic Sans MS;
font-size: 100%;
display: block;
}

    #footer
{
    position: fixed;
    bottom: 0;
    left: 0;
    text-align: center;
    background: white;
    color: black;
    font-family: Comic Sans MS;
    font-size: 15px;
    width: 100%;
   /* padding: 5px 0;*/
    opacity: 0.9;
    -moz-opacity: 0.9;
    filter: alpha(opacity=90);
}
#messaggio{
position:absolute;
top:220px;    
font-family:Comic Sans MS;
color:#ff0000;
}
</style>

    </head>
    <body>
        
        <div id = "intestazione">
            <h1>Gestione ricerca dati prova</h1>
            <hr> </hr>
        </div>
            
        <div id = "divhr">
            <form method="POST" action="<?php $_SERVER['PHP_SELF'] ?>">
            <p> <p> <p> <p>
              
                <!--Ricerca nominativo x nome: <input type="text" name="nome"  maxlength="50" size ="51">-->
                
                Ricerca x titolo <input type="text" name="titolo"  maxlength="50" size ="52">
                
            </p> </p></p> </p>
      
            <div align ="center">
                <input type="submit" name="reg" value="Avvio ricerca" />
            </div>
            </form>    
        </div>     
        <?php
        require_once("connetti.php");
    require_once("data.php");
echo "</hr>";

//qui leggi i dati dal db (se non sono già letti dai "require"//
 
      header('Content-Type: text/html; charset= utf8'); 

    if(!empty($_POST)){ 
   
$titolo = trim ($_POST['titolo']);

echo '<div id = "messaggio">';



$query = "SELECT titolo FROM archdiabolik WHERE titolo = '$titolo'";
      header('Content-Type: text/html; charset= utf8'); 

$result = mysql_query ($query) or die ("Errore in $query: ".mysql_error());

      header('Content-Type: text/html; charset= utf8'); 

if(mysql_num_rows($result)>0){

  while ($row=mysql_fetch_array($result))
  {
      echo '<div id ="table">';
        echo "<tr>";
        
        echo '<div align="center">';
        echo "Scheda Titolo Diabolik::"." ".$titolo;
                     echo"<hr />";
        echo "<p> <p>";
           echo "</div>";               //Chiude il div center

       echo "Titolo: "." ". $row['titolo'];
       
           echo "</p> </p>";
       echo"<hr />";
                    
           echo "</div>";
                   echo "</tr>";

  } 
 
  }else{
 print 'Nessun record trovato';
}
}
echo "</div>";

 ?> 
    </body>
</html>

Quando lo eseguo mi da il seguente risulta (se c'è una parola apostrofata o accentata). Ad esempio digito nel campo di ricerca il titolo: "Diabolik l'innafferrabile" e mi da il seguente errore:

Errore in SELECT titolo FROM archdiabolik WHERE titolo = 'Diabolik l'innafferrabile': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'innafferrabile'' at line 1

Anche se metto il titolo"C'è stata una rapina" stesso errore perdonatemi se la parola "c'è" non si scrive così ma andrebbe scritto così "cè" ma per le prove va più che bene anche un orrore ortografico. Come posso risolvere definitivamente questo maledetto dilemma ????


Spero che qualcuno di voi mi possa dare dei buoni suggerimenti e consigli grazie.
 

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Ciao paperinik4, prova ad utilizzare la funzione Like di Mysql. Ti posto un frammento di codice che utilizzo io:

WHERE (ragione_sociale LIKE '%" . $ValoreRicercaAnagrafica . "%') ORDER BY ragione_sociale

Fammi sapere, ciao.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ciao localhost.nicola,

Ora sto cercando di risolvere il problema dei caratteri speciali. Spero che tu mi possa segure anche in questo. Dunque la prova che ho fatto è la seguente. Ho messo tutto con:

<meta charset="ISO-8859-1">


Quindi anche in questo spezzone di codice che ti posto è con iso:

PHP:
header('Content-type: text/html;charset=utf-8');
$query=("INSERT INTO archdiabolik (numero, annata, raccolta, titolo, formato, neltablet, lettoono)"
. " VALUES('".$numero."','".$annata."','".$raccolta."','".$titolo."','".$formato."','".$neltablet."','".$lettoono."')");
    
header('Content-Type: text/html; charset= ISO-8859-1'); 
    [email protected]_query($query) or die("Error query DataBase:".mysql_error());
}
    if($result){
    echo("<p> Inserimento avvenuto correttamente <p>");
} else{
    echo("<br>Inserimento non eseguito");
}
}
}

Stessa cosa nella ricerca dati, inutile che ti posti il codice. Però ti posto il risultato di errore che mi ha restituito. Non badare a ciò che scrivo perchè ci sono orrori di ortografia ma fatti a posta per le prove.

Errore in SELECT titolo FROM archdiabolik WHERE titolo = 'V'affanculo all'ispettore Ginko': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'affanculo all'ispettore Ginko'' at line 1

E questo errore me lo da se è presente una lettera accentata come in questo caso:

Errore in SELECT titolo FROM archdiabolik WHERE titolo = 'V'affanculo all'ispettore Ginko è ci vuole': You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'affanculo all'ispettore Ginko è ci vuole'' at line 1

Si potrebbe essere sputtanato il db ??? Oppure cosa mi consigli di fare ????
 

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Che DB usi?
Il campo del DB come è stato valorizzato? Varchar? Text? Char?
Che versione usi di PHP?

Puoi postarmi la query di ricerca che genera quel tipo di errore?
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Posso fare tutto. Allora innanzi tutto la tabella è strutturata in questa maniera qua:

tabella arhbiabolik:

PHP:
create table archdiabolik (
	
idnumero 	INT(11) NOT NULL AUTO_INCREMENT,
numero 		VARCHAR(3) NOT NULL,
annata		VARCHAR(4) NOT NULL,
raccolta        VARCHAR(50) NOT NULL,
titolo          VARCHAR(90) NOT NULL,
formato         VARCHAR(3) NOT NULL,
neltablet	VARCHAR(2) NOT NULL,
lettoono	VARCHAR(2) NOT NULL,    
PRIMARY KEY (idnumero)
);

Come vedi adopero il varchar sia se è numero che non per comodità.

La query è la seguente di ricerca dati che è valida per tutti glio altri archivi che ho fatto ed è questa:

PHP:
  <?php
        require_once("connetti.php");
    require_once("data.php");
echo "</hr>";

//qui leggi i dati dal db (se non sono già letti dai "require"//
 
      header('Content-Type: text/html; charset= ISO-8859-1'); 

    if(!empty($_POST)){ 
   
$titolo = trim ($_POST['titolo']);

echo '<div id = "messaggio">';

      header('Content-Type: text/html; charset= ISO-8859-1'); 


$query = "SELECT titolo FROM archdiabolik WHERE titolo = '$titolo'";       //Questa è la query 
      header('Content-Type: text/html; charset= ISO-8859-1'); 

$result = mysql_query ($query) or die ("Errore in $query: ".mysql_error());

      header('Content-Type: text/html; charset= ISO-8859-1'); 

if(mysql_num_rows($result)>0){

  while ($row=mysql_fetch_array($result))
  {
      echo '<div id ="table">';
        echo "<tr>";
        
        echo '<div align="center">';
        echo "Scheda Titolo Diabolik::"." ".$titolo;
                     echo"<hr />";
        echo "<p> <p>";
           echo "</div>";               //Chiude il div center

       echo "Titolo: "." ". $row['titolo'];
       
           echo "</p> </p>";
       echo"<hr />";
                    
           echo "</div>";
                   echo "</tr>";

  } 
 
  }else{
 print 'Nessun record trovato';
}
}
echo "</div>";

 ?>


Non riesco a trovare la versione del db e del php pur avendo fatto php(info). devo cercare meglio appena la trovo te le mando.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Caro marino,

So perfettamente che per i numeri non vanno messi chaset. Ma come dicevo in qualche post precedente molto spesso fa comodo vederli come charset anzicchè numerico e non influisce di certo nella ricerca: Tant'è com'è ho sottolineato più di una volta il problema non sta nella query ma sta nel fatto che non visualizza correttamente i caratteri speciali ossia l'apostrofo e le lettere accentate.......So di ripetermi ma alcune volte bisognerebbe leggere bene ciò che uno chiede invece di lanciare sentenze sensa senso.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve,

C'è qualcuno che ha risolto il problema dei caratteri accentati ???? Io ho questa query qua per la ricerca dati:

PHP:
$query = "SELECT titolo FROM provacharset WHERE titolo = ".$titolo."";

E mi restituisce l'errore quando metto un titolo del tipo "C'è stata una rapina e l'hanno arrestati" so che "c'è" non si scrive così ma mi serviva per fare le prove. L'errore è il seguente:

Errore in SELECT titolo FROM provacharset WHERE titolo = C'è stata una rapina e l'hanno arrestati: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''è stata una rapina e l'hanno arrestati' at line 1

Mi potreste aiutare per favore ??? Non riesco ad andare avanti. Grazie.
 

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Ragazzi ho risolto il problema dei caratteri speciali a chi può essered i aiuto metto il frammento di codice:

Innanzi tutto quando si crea la pagina html/php all'inizio della pagina c'è la seguente digitura di default:

digitura default ossia dovrebbe comparire una cosa del genere:

<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">

<title></title>

</head>

La stringa meta che contiene il charset utf-t ossia questa:

<meta charset="UTF-8">

Anche se molti dicono che è la più usata non è vero perchè è incompleta e non contiene le lettere accentate, quindi va corretta con il seguente caharset:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

Il codice "ISO-8859-1" contengono anche le lettere accentate. A questo punto avrete una nuova situazione del tipo questa:

PHP:
<!DOCTYPE html>

<html>
    <head>
     
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />        

        <title></title>
          
    </head>
    <body>

Questo è solo per quanto rigurada la ricercadati e la visualizzazione corretta dei dati. E questa è la query giusta:

PHP:
$query = "SELECT titolo FROM provacharset WHERE titolo='".$titolo."'";

Nella pagina "inserimento dati" fare la stessa modifica ossia mettere il seguente codice iso all'inizio ossia:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

Quindi pe rla pagina inserimento dati" avrete la nuova situazione che si dovrebbe presentare così:

<!DOCTYPE html>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<title>INSERIMENTO DATI</title>


</head>

Questo è tutto. A me ha funzionato alla grande...... Grazie a tutti. Il post si può chiudere.
 

marino51

Utente Attivo
28 Feb 2013
3.051
193
63
Lombardia
Ragazzi ho risolto il problema dei caratteri speciali a chi può essered i aiuto metto il frammento di codice:

Innanzi tutto quando si crea la pagina html/php all'inizio della pagina c'è la seguente digitura di default:

digitura default ossia dovrebbe comparire una cosa del genere:

sure, my computer is wrong

Cattura.PNG
 
Discussioni simili
Autore Titolo Forum Risposte Data
D Due problemi con Photoshop... Photoshop 1
M Problemi con query su due tabelle PHP 2
P Problemi di calcolo tra due date PHP 37
P Due problemi! Javascript 1
G Due router stessa rete! problemi Reti LAN e Wireless 0
T Query su due tabelle con totali Database 4
MarcoGrazia Calcolo fra due date con esclusione delle feste PHP 7
P inserire due voci in un titolo post wp WordPress 1
J Scrivere in due JPanel Java 1
F confrontare due stringhe "numeriche" PHP 7
M Aggiornare stesso campo in due tabelle PHP 0
M Collegare due segmenti di rete diversi Reti LAN e Wireless 0
M Aggiornare simultaneamente i campi di due tabelle collegate con id PHP 4
Tommy03 Unire dati da due tabelle MySQL 5
A Cercare un carattere uguale in due stringhe Java 5
elpirata [MySQL] Sincronizzare dati tra due tabelle sullo stesso host MySQL 0
S [PHP] Confrontare due array con valori quasi uguali PHP 2
G Mi hanno fatto due preventivi per telecamere abitazione IP Cam e Videosorveglianza 8
MarcoGrazia [PHP] Unioni di due array con somma di valori PHP 6
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1
Tommy03 Due menù nella stessa app Sviluppo app per Android 0
I [PHP] generazione url "uguale" che punta a due immagini diverse PHP 0
felino Bootstrap alert: usare lo stesso div per due messaggi consecutivi jQuery 1
G Condividere 1 cartella in rete due computer windows 10 Reti LAN e Wireless 0
Domenico_Falco1 Associare una stessa funzione get a due eventi a.click con classi differenti Ajax 6
M PHP Arrotondamento minuti in differenza tra due Orari PHP 9
N due siti web sullo stesso spazio hosting Hosting 0
S [PHP] come esportare due tabelle in file excel su due fogli distinti PHP 8
maxnegri Conoscere giorni della settimana fra due date con php PHP 2
felino EXCEL: verifica dati mancanti tra due sheet Windows e Software 2
I Allineare due righe di testo in photoshop Photoshop 2
Monital funzione php si ripete due volte PHP 6
A [Javascript] Multi input su due tabelle correlate Javascript 1
felino Windows 8.1: installare sistema operativo e programmi in due hard disk diversi Windows e Software 4
M [PHP] Sommare due campi calcolati PHP 3
K [PHP] Controllare dati database tra due valori PHP 18
F [Photoshop] sovrapporre due immagini usando funzione batch Photoshop 0
A Php mail non invia due mail di seguito PHP 3
M [VENDO] Due Account Instagram [21k] [3k] Annunci servizi di Social Media Marketing 5
T Artisti: Uno o due profili Instagram? Social Media Marketing 2
bianca_dimulescu [Javascript] Disabilitare due bottoni di submit in base al radiobutton selezionato Javascript 1
I database mysql estrarre due tabelle Database 2
otto9due Chiamata ajax su due url è possibile? Ajax 0
paloppa Div che appare appena due form sono compilati jQuery 16
P impostare due Vlan su router - dhcp su seconda sottorete e statico su prima Reti LAN e Wireless 0
S rete cablata in cat7 tra due router Reti LAN e Wireless 0
M [Javascript] Spiegazioni di due funzioni Javascript 10
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
S [HTML] Distanza esatta tra due div HTML e CSS 7
otto9due Confrontare due array: verificare che tutti i valori di un'array siano contenuti in un'altra. jQuery 1

Discussioni simili