Estoy liado con un proyecto que cuando tenga algo hecho pretendo compartirlo con quien esté interesado. Pero estoy en el desarrollo del mismo.
Pongo la situación. Tengo un formulario para crear documentos donde especificas el titulo, privacidad, el contenido y etiquetas(temas)... la insercción del mismo no tengo ningún problema.
La idea está en que cada documento puede tener "x" etiquetas, separadas por comas. Me he creado un script que consigo separar cada etiqueta para tratarlas individualmente...
Por cada etiqueta que contraigo de un documento compruebo sí la he guardado en una tabla llamada etiquetas, sino la guardo despues recupero su ID y el ID del documento que lleva dicha etiqueta y guardo la relacion de las 2 IDs en una tabla relacional... y asi con cada etiqueta....
Mi problema es que si creo un documento que tiene 3 etiquetas me guarda solo 2 de ellas y las relaciones pero la ultima no me lo hace...
Llevo varios días comiendome la cabeza pero no veo en que fallo...
Les pongo mi archivo que recoge los datos de dicho formulario ...
Código PHP:
<?php
$titulo = trim($_POST['titulo']);
$etiquetas = trim($_POST['etiquetas']);
$textarea = trim($_POST['textarea']);
$privacidad = trim($_POST['privacidad']);
$fecha = date("Y-m-d H:i:s");
$link = abrirBD();
$sql = "INSERT INTO tDocumentos VALUES ('','".$titulo."','".$etiquetas."','".$textarea."','".$privacidad."','".$fecha."')";
if(mysql_query($sql,$link)){
etiquetas($etiquetas,$fecha);
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){
//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);
$con = abrirBD();
for($i = 0; $eti[$i]; $i++){
$etiqueta = trim($eti[$i]);
$sql = "SELECT id FROM tEtiquetas WHERE nombre='".$etiqueta."'";
$resul=mysql_query($sql,$con);
$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,$con)){
$sql = "SELECT id FROM tEtiquetas WHERE nombre='".$etiqueta."'";
$resul=mysql_query($sql,$con);
$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);
}
}else{
errorBD($con);
}
}else{
errorBD($con);
}
}else{
//existe etiqueta.
while ($row = mysql_fetch_array($resul)) {
insertarEtiDocu($row["id"],$fecha);
}
}
}
cerrarBD($con);
}
function insertarEtiDocu($idEti,$fecha){
$conn = abrirBD();
$sql = "SELECT id FROM tDocumentos WHERE fecha = '".$fecha."'";
$resul=mysql_query($sql,$conn);
$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,$conn)){
errorBD($conn);
}
}
}else{
echo "error en insertarEtiDocu.";
}
cerrarBD($conn);
}
?>
Saludos.