Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jagltoro en 6 Abril 2012, 19:05 pm



Título: Error en al insertar
Publicado por: jagltoro en 6 Abril 2012, 19:05 pm
Les voy a explicar mi problema lo mas detallado posible:

tengo una instruccion:
Citar
$query="insert into libro (foto,titulo,descripcion,id_categoria,archivo) values ('$des_2','$nom','$des','$cat','$des_1')";

Cuando le doy el echo me muestra bien:
Citar
insert into libro (foto,titulo,descripcion,id_categoria,archivo) values ('foto.png,'Titulo','Descripcion','1','documento.pdf)

[No pongo los valores reales porq no son importantes, si me muestra lo que le mando]

el detalle esta en cuando ejecuto mysql_query($query) or die (mysq_error()); no me da nada, he intentado incluso mysql_query($query,$link) or die (mysq_error()); y lo mismo
El archivo de conexion a la base de datos esta bien porque lo utilizo en otros formularios y si me ingresa correctamente, el detalle es con este.

Al principio lo tenia directo
Citar
mysql_query("insert into libro (foto,titulo,descripcion,id_categoria,archivo) values ('$des_2','$nom','$des','$cat','$des_1')")
lo cambie por:
Citar
mysql_query("insert into libro (foto,titulo,descripcion,id_categoria,archivo) values ('$des_2','$nom','$des','$cat','$des_1')",$link)

le puse el ';' despues de las comillas dobles y aun nada

no se que mas pueda hacer, ah un amigo me dijo que lo pusiera asi:
Citar
"insert into libro (foto,titulo,descripcion,id_categoria,archivo) values ('".$des_2."','".$nom."','".$des."','".$cat."','".$des_1."')";

Y aun nada

Detalles:
 SO: Ubuntu 11.10
 PHP: 5.3.6-13ubuntu3.6
 MySQL: 5.1.61


Título: Re: Error en al insertar
Publicado por: Runex en 6 Abril 2012, 19:18 pm
Código
  1. mysql_query("insert into libro(foto,titulo,descripcion,id_categoria,archivo) values($des_2,$nom,$des,$cat,$des_1)",$link);
  2.  

Si las variables las has declarado tu en el mismo archivo, con esto te debería funcionar, además mira si el orden en el que insertas las variables es el correcto.

Si en vez de ser declaradas son recibidas mediante un formulario de otra página, ya sabes que debes usar las variables $_REQUEST[],$_POST[] o $_GET[].

Si con ésto no te funciona avisalo y te busco otras posibles soluciones :)

Un saludo :)


Título: Re: Error en al insertar
Publicado por: jagltoro en 6 Abril 2012, 19:40 pm
el formulario:

Código:
<legend>Ingresar nuevo libro</legend>
     <form action="ingresos/libros.php" method="POST" enctype="multipart/form-data">
      <table class="nostyle">
              <input type="hidden" name="action" value="nuevo"/>
                <tr>
        <td style="width:70px;">Foto: </td>
<td><input type="file" name="foto" class="input-text"/></td>
</tr>
                <tr>
<td style="width:70px;">Titulo: </td>
<td><input type="text" name="titulo" class="input-text"/></td>
</tr>
                <tr>
<td style="width:70px;">Descripcion: </td>
                        <td><textarea name="descripcion" cols="50" rows="10"></textarea></td>
</tr>
                <tr>
<td style="width:70px;">Categoria: </td>
<td>
                        <select name="categoria">
                        <option value="">------------</option>
                        <?php
                                 include('conect.php');
                                 $link=Conectarse();
                                 $query = mysql_query("SELECT * FROM categoria");
                                 while ($row = mysql_fetch_array($query))
                                 { ?>
                                      <option value="<?php echo $row['id']; ?>"><?php echo $row['descripcion']; ?></option>
                                <?php } ?>
                       </select>
                       </td>
</tr>
                <tr>
                        <td style="width:70px;">Autor(es): </td>
                        <td><input name="btnCreate" type="button" value="+" onClick="javascript:fncCreateElement();">
                               <input name="btnDelete" type="button" value="-" onclick="javascript:fncDeleteElement();"><br>
                               <div id="autores"></div>
                               <input name="conteo" id="hdnLine" type="hidden" value="0">
                        </td>
                 </tr>
                 <tr>
                        <td style="width:70px;">Archivo: </td>
                        <td>
                        <input type="file" name="archivo" class="input-text"/>
                         </td>
                 </tr>
<tr>
                <td colspan="2" class="t-right"><input type="submit" class="input-submit" value="Nuevo" /></td>
</tr>
</table>
</form>

y el php
Código:
<?php include('../conect.php');
       $link=Conectarse();
       $action=$_POST['action'];
       $id=$_POST['id'];
       
       $foto=strtolower($_FILES['foto']['name']);
       $nom=$_POST['nombre'];
       $des=$_POST['descripcion'];
       $arc=$_FILES['archivo']['name'];
       $cat=(int)$_POST['categoria'];
       $i=$_POST['conteo'];
       for($j=0;$j<=$i;$j++)
       {
           $id_aut[$j]=$_POST['autor'.$j];
       }
       $pref=substr(md5(uniqid(rand())),0,15);
       $trozos=explode(".",$arc);
       $ext_arc=end($trozos);
       $trozos=explode(".",$foto);
       $ext_foto=end($trozos);
       $des_arc="uploads/".$pref.".".$ext_arc;
       $des_foto="uploads/".$pref.".".$ext_foto;
       $des_1="modulos/ingresos/".$des_arc;
       $des_2="modulos/ingresos/".$des_foto;
       $query="insert into `libro` (foto,titulo,descripcion,id_categoria,archivo) values ('".$des_2."','".$nom."','".$des."',$cat,'".$des_1."')";
                   
       if($action=='nuevo')
       {
           if ($arc!= "")
            {
                    // guardamos el archivo a la carpeta files
                   
                    if (copy($_FILES['archivo']['tmp_name'],$des_arc) and copy($_FILES['foto']['tmp_name'],$des_foto))
                    {
                        include('../conect.php');
                        $link=Conectarse();
                        mysql_query($query);
                        $id= mysql_insert_id($link);
                        for($j=0;$j<=$i;$j++)
                        {
                            mysql_query("insert into autor_a_libro values ('$id','$id_aut[$j]')",$link);
                        }
                    }
            }
           
           echo "<script>location.href='../libros.php?do=nuevo'</script>";
       } ?>


Título: Re: Error en al insertar
Publicado por: Runex en 6 Abril 2012, 19:48 pm
Has probado lo que te he dicho antes?

Código
  1.  $query="insert into libro(foto,titulo,descripcion,id_categoria,archivo) values($des_2,$nom,$des,$cat,$des_1)";

Y acuérdate de usar addslashes() para eliminar la posibilidad de magic quotes :)

Un saludo :)


Título: Re: Error en al insertar
Publicado por: jagltoro en 6 Abril 2012, 21:28 pm
Solucione el error rehaciendo todo el codigo, muchas gracias por la ayuda, sin embargo sigo sin entender que paso, porque las instrucciones son identicas a las que tenia, solo movi un poquito y cambie algunos nombres de variables, sin embargo en teoria es lo mismo.

Ah por cierto Runex, el comando que me diste no funciono, daba un error Unknown field, si no me equivoco


Título: Re: Error en al insertar
Publicado por: :ohk<any> en 7 Abril 2012, 02:02 am
Que extraño, podria preguntar que hace esta funcion?

Código
  1. $link=Conectarse();

Porque es una funcion que la envias sin parámetros, quiza puede ser eso, como tambien no :xD

Pero como ya lo solucionaste no hay problema.


Título: Re: Error en al insertar
Publicado por: jagltoro en 8 Abril 2012, 20:14 pm
La funcion $link=Conectarse();

viene del conect.php

function Conectarse()
{
     $db_host="****";
     $db_nombre="****";
     $db_user="****";
     $db_pass="*****";

     $link=mysql_connect($db_host,$db_user,$db_pass) or die ("error");
     mysq_select_db($db_nombre,$link);
     
     return $link;
}