- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problemi insert/update in db sql con campo textarea/text apici
- 
							
							
							
							
							
Problemi insert/update in db sql con campo textarea/text apiciCiao, 
 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? 
 Grazie Ho 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 ^____^