- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi insert/update in db sql con campo textarea/text apici
-
Problemi insert/update in db sql con campo textarea/text apici
Ciao,
ho un problema con apici singoli e doppi in fase di insert e di update di campi testo in un database sql.Il codice è questo:
pagina micronews_admin.php (dove visualizzo i campi per inserire e modificare le informazioni)case 'edit':
if ($_REQUEST['id']!=""){
$query="SELECT * FROM csa_micronews WHERE id=".$_REQUEST['id'];
$result=mssql_query($query);
print "".$riga['id'];
while ($riga=mssql_fetch_array($result)){
$id=$riga['id'];
$data=$riga['data'];
$testo=$riga['testo'];
$pubblica=$riga['pubblica'];
}
}
//form
print "<br/><br/><b>MODIFICA/INSERIMENTO</b><br/><br/>\n";print "<form method='post' action='function.php' id='myForm' name ='modulo' onsubmit='return Modulo()'>"; print "<input type='hidden' name='tipo' value='micronews'>"; print "<input type='hidden' name='act' value='edit'>"; print "<input type='hidden' name='id' value='".$id."'>"; print " Data<br/><input type='text' name='data' value='".$data."'><br/><br/>"; //area testo con tinymce print "<textarea id='' name='testo' style='border:1px solid #000;width:400px; height:200px;'>".$testo."</textarea>"; print"<strong>Vuoi pubblicarlo? </strong><input type='checkbox' name='pubblica' "; if ($pubblica){ print "checked "; } print"value='1' /><br />"; print "<input type='submit' value='Salva'>"; print"</form>"; break;
pagina micronews_fun.php (dove eseguo le query per l'insert e l'update)
case 'edit':
//modifica e inserimento su DB
if ($_REQUEST['pubblica']=="") $_REQUEST['pubblica']==0;
if ($_REQUEST['id']!=""){$query="UPDATE csa_micronews SET data='".$_REQUEST['data']."',testo='".$_REQUEST['testo']."',pubblica=".$_REQUEST['pubblica']." WHERE id=".$_REQUEST['id'].""; }else{ $query="insert into csa_micronews "; $query.="VALUES ('".$_REQUEST['data']."','".$_REQUEST['testo']."',".$_REQUEST['pubblica']." )"; } //print $query; //exit; mssql_query ($query); header ("location:admin.php?tipo=micronews"); //print $query; //exit; break;
Avevo provato ad usare la funzione htmlspecialchar*s
e htmlentities ma da sempre errore in fase di inserimento nel punto in cui c'è l'apice singolo o doppio.Come textarea uso tinymce ma il problema resta lo stesso.
Come posso fare?
GrazieHo provato a modificare così:
testo='".htmlspecialchars($_REQUEST['testo'], ENT_QUOTES)."'
ma in questo caso la visualizzazione mostra gli eventuali tag di di formattazione effettuati nella textarea di tinymce e quindi anche online
che cosa manca per risolvere questo problema???
-
Ciao,
Usa addslashes.
-
Ho messo addslashes al posto di htmlspecialchars, ma continua a dare errore, nel punto in cui c'è l'apice...
La cosa strana che nella textarea normale e nel campo input text htmlspecialchars funziona perfettamente e infatti visualizza tutto correttamente, quello che non funziona è la textarea dove uso un text editor sia questo tinymce che fckeditor(!!!) , e se metto htmlspecialchar davanti a $_REQUEST['testo'] mi visualizza e salva tutti i tag di formattazione come fossero testo
Ok, ho risolto in modo molto banale >____>
Ovvero io scrivevo la query così:
$query.="VALUES ('".$_REQUEST['data']."','".$_REQUEST['testo']."',".$_REQUEST['pubblica']." )";
con gli apici singoli a racchiudere ogni valuesHo sostituito questi apici singoli con " :
$query.="VALUES ("".htmlspecialchars($_REQUEST['data'], ENT_QUOTES)."", "".$_REQUEST['testo']."", ".$_REQUEST['pubblica']." )";
e il problema si è risolto .... certo dopo averci passato tutto il pomeriggio!!!!Grazie comunque per l'idicazione Thedarkita
Ciao
-
Come vedo qualcosa manca cioè i campi, del DB, cui le variabili fanno riferimento. Lo vedi sotto in grassetto anche se il nome dei campi lo metto io non sapendo come è la tabella.
$query="insert into csa_micronews (data,testo,pubblica)";
$query.="VALUES ('".$_REQUEST['data']."','".$_REQUEST['testo']."',".$_REQUEST['pubblica']." )";Fammi sapere se è andato a buon fine
CIAO
-
Ciao,
grazie Mikslap quello mancava ma non so come funzionava lo stesso OoPerò il problema di prima non è risolto affatto, nel senso che se inserisco apici e doppi apici tutto ok, ma se inserisco con fckeditor della formattazione tipo h2 o colore o un link quando vado a visualizzare mi da errore di sintassi e se aggiungo htmlspecialchar a $_REQUEST['testo'] e $riga['testo']; mi visualizza tutti i tag -___________-
<h2><span style="color: rgb(255, 102, 0);">asdasdsdd</span></h2> <p>sa'sa</p> <p>"asdasdad"</p>
Qualche soluzione?
-
Se non vuoi visualizzare i tag devi dare alle variabili valori tipo
$DATA = strip_tags($_REQUEST['data']);
$TESTO = strip_tags($_REQUEST['testo']);
$PUBB = strip_tags($_REQUEST['pubblica']);Se non è questa la soluzione fammi capire meglio cosa vuoi
CIAO
-
Rieccomi di nuovo allora ho risolto, e sembra in modo definitivo, il problema mettendo un str_replace.
Ecco la nuova riga:
testo='".str_replace("'", "´", $_REQUEST['testo'])."',In questo modo ho ripristinato gli apici singoli per i values e ho sostituito solo quelli eventualmente interni alla textarea, anche perchè usando le altre funzioni poi si presentava il problema degli apici doppi o dei tag html
Grazie per l'aiuto ^____^