Problema con apostrofi e accenti

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Buongiorno come da titolo ho problemi nell'inserimento di testo con accenti e apostrofi:
per la precisione inserisco i dati con addslashes e li leggo con stripslashes e fin qui tutto bene, il problema nasce se modifico il testo aggiungendo o togliendo una qualsiasi lettera, in questo caso quando vado a salvare il testo scompare del tutto.
Va forse modificata la query di aggiornamento?
Allego query update che utilizzo per il salvataggio delle modifiche che funziona perfettamente senza apostrofi e accenti:

PHP:
mysql_query("UPDATE tblsinistri SET Nominativo='$Nominativo', NumPratica='$NumPratica', DataRichiesta='$DataRichiesta', LocalitaSinistro='$LocalitaSinistro', ViaSinistro='$ViaSinistro',
DataSinistro='$DataSinistro', OraSinistro='$OraSinistro', SintesiSinistro='$SintesiSinistro', AnnoSinistro='$AnnoSinistro', _________CausaSinistro_________='$_________CausaSinistro_________', ProtArrivo='$ProtArrivo', 
Legale1='$Legale1', Legale2='$Legale2',CitazioneGiudizio='$CitazioneGiudizio' WHERE id='$id'")

Grazie per l'aiuto
Max61
 
Ciao, mi sono permesso di formattare un attimo la tua query
PHP:
<?php

$query = "UPDATE tblsinistri "
        . "SET Nominativo='$Nominativo',"
        . " NumPratica='$NumPratica',"
        . " DataRichiesta='$DataRichiesta',"
        . " LocalitaSinistro='$LocalitaSinistro',"
        . " ViaSinistro='$ViaSinistro',"
        . " DataSinistro='$DataSinistro',"
        . " OraSinistro='$OraSinistro',"
        . " SintesiSinistro='$SintesiSinistro',"
        . " AnnoSinistro='$AnnoSinistro',"
        . " _________CausaSinistro_________='"
        . "$_________CausaSinistro_________',"
        . " ProtArrivo='$ProtArrivo', "
        . " Legale1='$Legale1',"
        . " Legale2='$Legale2',"
        . " CitazioneGiudizio='$CitazioneGiudizio'"
        . " WHERE id='$id'";
?>
Sono corretti quegli underscore e quel dollaro ? non mi sembra corretta
 
Ciao, mi sono permesso di formattare un attimo la tua query
PHP:
<?php

$query = "UPDATE tblsinistri "
        . "SET Nominativo='$Nominativo',"
        . " NumPratica='$NumPratica',"
        . " DataRichiesta='$DataRichiesta',"
        . " LocalitaSinistro='$LocalitaSinistro',"
        . " ViaSinistro='$ViaSinistro',"
        . " DataSinistro='$DataSinistro',"
        . " OraSinistro='$OraSinistro',"
        . " SintesiSinistro='$SintesiSinistro',"
        . " AnnoSinistro='$AnnoSinistro',"
        . " _________CausaSinistro_________='"
        . "$_________CausaSinistro_________',"
        . " ProtArrivo='$ProtArrivo', "
        . " Legale1='$Legale1',"
        . " Legale2='$Legale2',"
        . " CitazioneGiudizio='$CitazioneGiudizio'"
        . " WHERE id='$id'";
?>
Sono corretti quegli underscore e quel dollaro ? non mi sembra corretta

Ciao, penso che sia corretta, perchè funziona, e sono anche riuscito a far si che sia in insert che in edit le parole contenenti apostrofi e accenti li scrivo, li leggo e li modifico.
Allego parte di codice che utilizzo:
PHP:
// ottenngo i dati del modulo e verifico che siano validi
$id = $_POST['id'];
$Nominativo = mysql_real_escape_string(htmlspecialchars($_POST['Nominativo']));
$NumPratica = mysql_real_escape_string(htmlspecialchars($_POST['NumPratica']));
$DataRichiesta = mysql_real_escape_string(htmlspecialchars($_POST['DataRichiesta']));
ecc.
$_________CausaSinistro_________= addslashes($_POST['_________CausaSinistro_________']);

Probabilmente la tua sintassi è più performante della mia, l'ho provata e funziona come la mia, in quanto al lungo underscore ($_________CausaSinistro_________ ) siccome è un campo txt che può contenere tanti caratteri, se vado in visualizzazione con DATAGRID vedrei una riga alta con la colonna del campo stretta, così invece ho trovato un giusto equilibrio tra altezza della riga e larghezza della colonna.

Con la speranza di essermi spiegato, ti chiedo due cose:
1) Se esistono formattazioni dei campi a altro codice per ovviare agli underscore
2) Relativamente a questo programma avrei da lanciare le stampe sulle tabelle uno-a molti fatte con il vostro aiuto in altra discussione, devo aprire una nuova discussione? O proseguire la stessa sulle tabelle uno-a molti?

Grazie
Max61
 
Non è più performante, è solo più leggibile, avevo interpretato male dovrebeb allora essere cosi
PHP:
$query = "UPDATE tblsinistri "
        . "SET Nominativo='$Nominativo',"
        . " NumPratica='$NumPratica',"
        . " DataRichiesta='$DataRichiesta',"
        . " LocalitaSinistro='$LocalitaSinistro',"
        . " ViaSinistro='$ViaSinistro',"
        . " DataSinistro='$DataSinistro',"
        . " OraSinistro='$OraSinistro',"
        . " SintesiSinistro='$SintesiSinistro',"
        . " AnnoSinistro='$AnnoSinistro',"
        . " _________CausaSinistro_________='$_________CausaSinistro_________',"
        . " ProtArrivo='$ProtArrivo', "
        . " Legale1='$Legale1',"
        . " Legale2='$Legale2',"
        . " CitazioneGiudizio='$CitazioneGiudizio'"
        . " WHERE id='$id'";
però scusa, non ho capito il motivo degli underscore, non dovrebbero influire sulla struttura
 
Con DATAGRID la larghezza della colonna è fissa, quindi più il testo è lungo e più la riga diventa alta.
Gli underscore servono soltanto per allargare la colonna, non so se ci sono altri metodi...
Max61
 
per formattare le tabelle si usano i css
HTML:
<th style='width:200px'>CausaSinistro</th>
 
Grazie per la dritta, ma ho provato a metterlo all'inizio della pagina ma non fa niente, ti posto il codice che utilizzo per visualizzare i dati:
PHP:
$query = 'SELECT id, tblanagrafica_id, NumPratica, Nominativo, CodiceFiscale, DataRichiesta, LocalitaSinistro, ViaSinistro, DataSinistro, OraSinistro, AnnoSinistro, SintesiSinistro, CausaSinistro, ProtArrivo, CitazioneGiudizio, Legale1, Legale2 FROM tblsinistri';

$risultato = mysql_query($query, $myconn) or die("Impossibile eseguire l'interrogazione.");

    if(mysql_num_rows($risultato) == 0)
    {
	?>

	<br><br><br><form>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input
style="color:blue" type="submit" value=" Back " onclick="this.form.action='MenuPrincipale.php?var=value'"/>

		<?php

		exit
("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span
style=\"color:black; font-family:arial; font-size: 14pt\"><b><span
style=\"color:blue; font-size: 14pt\"><span style=\"color:red;
font-size: 14pt\"><i>Nessun dato da visualizzare...<span
style=\"color:black\"><span style=\"color:blue>");


	    }
    else
    {
     $query = 'SELECT id, tblanagrafica_id, NumPratica, Nominativo, CodiceFiscale, DataRichiesta, LocalitaSinistro, ViaSinistro, DataSinistro, OraSinistro, AnnoSinistro, SintesiSinistro, CausaSinistro, ProtArrivo, CitazioneGiudizio, Legale1, Legale2  FROM tblsinistri';

    }

//---------------------------------------------
// open the connection to the db server
$link = mysql_connect($host,$user,$password);
include ('datagrid.class.php');
// Print HTML
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml">';
echo '<head>';
echo '<meta http-equiv="Content-Type" 
     content="text/html; charset=iso-8859-1" />';
echo '<title>Visualizza Sinistro</title>';
echo '<link href="styles.css" rel="stylesheet" type="text/css" />';
echo '</head><body>';
// Use datagrid class with full options
$mydatagrid = & new datagrid($link,$database,$query,150);
$mydatagrid->setLinkPage("Sinistro_Insert.php?id");
$mydatagrid->setLinkLabel("<img src='../images/Piu.jpg' alt='edit' />");
$mydatagrid->setLinkTitle("Inserisci sinistro");
$mydatagrid->setPrev("<img src='../images/prev.gif' alt='previous' />");
$mydatagrid->setNext("<img src='../images/next.gif' alt='next' />");
$mydatagrid->setPkIsVisible(true);
$mydatagrid->setSummaryTable("Elenco nominativi");
$mydatagrid->setCaptionTable("Elenco nominativi");
$mydatagrid->makeTable();
echo '</body></html>';
?>

Uso la classe datagrid

Grazie
Max61
 
Bisognerebbe vedere cosa fa la classe, dove l'hai presa ?
e anche styles.css
 
nel file style.css prova a sostituire nelle regole di .datatable {
Codice:
width: auto;
con
Codice:
width: 100%;
vedi che effetto fa
 
prova ad aggiungere queste righe sempre nel css
Codice:
.datatable th:nth-child(10) {
    width: 500px;
}
si riferisce in pratica alla decima colonna e se non ho contato male quella che ti interessa è la decima
in alternativa se lo hai onlien posta il link
 
l'ho provato sul codice dell'autore, deve funzionare Posta il css
 
Ecco il css:
PHP:
body {
	font: normal 11px auto Verdana, Arial, Helvetica, sans-serif;
	color: #4f6b72;
	background: White;
}

a {
	color: #c75f3e
}

.datatable {
	width: auto;
	padding: 0;
	margin: 0;
}

.datatable caption {
	padding: 0 0 5px 0;
	width: 700px;
	font: bold 12px Verdana, Arial, Helvetica, sans-serif;
	text-align: left;
}

.datatable th {
	font: bold 9px Verdana, Arial, Helvetica, sans-serif;
	color: #4f6b72
	border-right: 1px solid #C1DAD7;
	border-bottom: 1px solid #C1DAD7;
	border-top: 1px solid #C1DAD7;
	text-transform: uppercase;
	text-align: left;
	padding: 6px 6px 6px 12px;
	background: #CAE8EA;
}

.datatable td {
	border-right: 1px solid #C1DAD7;
	border-bottom: 1px solid #C1DAD7;
	background: #fff;
	padding: 6px 6px 6px 12px;
	color: #4f6b72;
}


.datatable td.alt {
	background: #F5FAFA;
	color: blue
}

.datatable tfoot.tfooter{
	text-align: center;
}

.datatable img{
	vertical-align: middle;
}

.datatable a img{
	border: none;
}
 
non vedo le modifiche che ti avevo fatto fare
 
Te lo ho mandato senza le modifiche perchè pensavo che le volessi far te, l'unica differenza che mi sono accorto è che con la modifica stringe ancor di più la colonna.
PHP:
body {
	font: normal 11px auto Verdana, Arial, Helvetica, sans-serif;
	color: #4f6b72;
	background: White;
}

a {
	color: #c75f3e
}

.datatable {
	width: auto;
	padding: 0;
	margin: 0;
}

.datatable caption {
	padding: 0 0 5px 0;
	width: 700px;
	font: bold 12px Verdana, Arial, Helvetica, sans-serif;
	text-align: left;
}

.datatable th {
	font: bold 9px Verdana, Arial, Helvetica, sans-serif;
	color: #4f6b72
	border-right: 1px solid #C1DAD7;
	border-bottom: 1px solid #C1DAD7;
	border-top: 1px solid #C1DAD7;
	text-transform: uppercase;
	text-align: left;
	padding: 6px 6px 6px 12px;
	background: #CAE8EA;
}

.datatable td {
	border-right: 1px solid #C1DAD7;
	border-bottom: 1px solid #C1DAD7;
	background: #fff;
	padding: 6px 6px 6px 12px;
	color: #4f6b72;
}


.datatable td.alt {
	background: #F5FAFA;
	color: blue
}

.datatable tfoot.tfooter{
	text-align: center;
}

.datatable img{
	vertical-align: middle;
}

.datatable a img{
	border: none;
}

.datatable th:nth-child(10) {
    width: 500px;
}
Ciao
 
prova ad aumentare i pixel
PHP:
.datatable th:nth-child(10) {
    width: 1000px;
}
calcola che per vedere le modifiche del css su un brower e necessario aggiornare la pagina con f5
 
prova ad aumentare i pixel
PHP:
.datatable th:nth-child(10) {
    width: 1000px;
}
calcola che per vedere le modifiche del css su un brower e necessario aggiornare la pagina con f5

Adesso non posso, oggi pomeriggio prima di risponderti ho provato con 900 px, ma non succede nulla.
Ciao
Max61
 
Ciao volevo dirti che anche se non risolviamo gli underscore non mi interessa, anche se è un pò bruttino a vedersi l'importante è che funzioni...
Avrei però a questo punto la necessità di fare le stampe con le tabelle uno a molti...
devo quindi aprire un nuovo post?
O continuare sul post "Relazione uno a molti" dove ho avuto le indicazioni di come strutturare le tabelle?

Ciao
Max61
 

Discussioni simili