Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2011, 12:59
Avatar de zibor
zibor
 
Fecha de Ingreso: diciembre-2006
Mensajes: 80
Antigüedad: 17 años, 4 meses
Puntos: 1
Pregunta Problemas al insertar datos PHP+SQL

Buenas.
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);
}
?>
Gracias de antemano.
Saludos.