Bueno, resulta que los problemas que tenía era por el tema de las conexiones de la BD "$link".
Como he hecho varias sentencias y por no liarme yo mismo con mi propio codigo, he utilizado funciones y el tema de las conexiones no las estaba gestionando correctamente.
Alfinal he pasado una misma conexión por todo el fichero, pasandolo a las funcíones para no liarme...
solucionado.
Código PHP:
$titulo = trim($_POST['titulo']);
$etiquetas = trim($_POST['etiquetas']);
$contenido = trim($_POST['textarea']);//contenido de la textarea
$privacidad = trim($_POST['privacidad']);
$fecha = date("Y-m-d H:i:s");
$link = abrirBD();
//funcion mysql_real_escape_string(): Escapa caracteres especiales en una cadena para ser usado en una sentencia SQL
$textarea = mysql_real_escape_string($contenido,$link);
$sql = "INSERT INTO tDocumentos VALUES ('','".$titulo."','".$textarea."','".$privacidad."','".$fecha."')";
if(mysql_query($sql,$link)){
etiquetas($etiquetas,$fecha,$link);
echo "<div class='infoEditor'>Documento guardado con exito.</div>";
?>
<!-- redirecciono al inicio tras guardarse el documento. -->
<script language="javascript" type="text/javascript">
setTimeout('location.href="index.php"',2000)
</script>
<?
}else{
errorBD($link);
}
cerrarBD($link);
function etiquetas($etiquetas,$fecha,$link){
//funcion chop: elimino los posibles saltos de lineas y espacios en blanco al final de la cadena
$etiquetas = strtoupper(chop($etiquetas));
//funcion explode: divido una cadena especificando un separador, devolviendo un array
$eti = explode(",",$etiquetas);
$arrEti = count($eti);
for($i = 0; $i < $arrEti; $i++){
$etiqueta = trim($eti[$i]);
echo $etiqueta."<br>";
$sql = "SELECT id FROM tEtiquetas WHERE nombre='".$etiqueta."'";
$resul=mysql_query($sql,$link);
$total=mysql_num_rows($resul);
//compruebo por el numero de resultados $total si existe la etiqueta o no.
if($total == 0){
//insertar nueva etiqueta.
$sql = "INSERT INTO tEtiquetas VALUES ('','".$etiqueta."')";
if(mysql_query($sql,$link)){
$sql = "SELECT id FROM tEtiquetas WHERE nombre='".$etiqueta."'";
$resul=mysql_query($sql,$link);
$total=mysql_num_rows($resul);
//compruebo por el numero de resultados $total si existe la etiqueta o no.
if($total != 0){
while ($row = mysql_fetch_array($resul)) {
insertarEtiDocu($row["id"],$fecha,$link);
}
}else{
errorBD($link);
}
}else{
errorBD($link);
}
}else{
//existe etiqueta.
while ($row = mysql_fetch_array($resul)) {
insertarEtiDocu($row["id"],$fecha,$link);
}
}
}
}
function insertarEtiDocu($idEti,$fecha,$link){
$sql = "SELECT id FROM tDocumentos WHERE fecha = '".$fecha."'";
$resul=mysql_query($sql,$link);
$total=mysql_num_rows($resul);
if($total == 1){
while ($row = mysql_fetch_array($resul)) {
$sql = "INSERT INTO DocuEti VALUES (".$row["id"].",".$idEti.")";
if(!mysql_query($sql,$link)){
errorBD($link);
}
}
}else{
echo "error en insertarEtiDocu.";
}
}
PD: Kev_Joseph eso no falla por dos razones.
- así es una manera de poner una sentencia SQL con variables PHP respetando las comillas que se requiere para la sentencia de la BD.
- Ese no es el fallo, pues aun dandome los problemas que he comentado, insercciones me hacia... pero no todas las que debía hacer...