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:
Citarinsert 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
Citarmysql_query("insert into libro (foto,titulo,descripcion,id_categoria,archivo) values ('$des_2','$nom','$des','$cat','$des_1')")
lo cambie por:
Citarmysql_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
mysql_query("insert into libro(foto,titulo,descripcion,id_categoria,archivo) values($des_2,$nom,$des,$cat,$des_1)",$link);
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 :)
el formulario:
<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
<?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>";
} ?>
Has probado lo que te he dicho antes?
$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 :)
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
Que extraño, podria preguntar que hace esta funcion?
$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.
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;
}