tengo dos tablas (usuarios y posts) relacionadas entre sí por llave primaria y foránea de la siguiente manera
usuarios id|usuario|passwd posts id|titulo|id_usuarios|post|fecha la relación es el id de usuarios (tipo int, primaria y auto-incrementable)
con el id_usuarios(llave foránea y de tipo index) de posts.
para insertar un nuevo post hago lo siguiente con este código (comentado)
Código PHP:
Ver originalif(isset($_SESSION['usuario'])) //si no existe sesión de usuario no muestra form para enviar nuevo post {
if(isset($_POST["enviar_post"])) //si pulsa sobre enviar post {
//crea una instancia pasando los datos al método
$nuevo_post=new Posts();
$nuevo_post=$nuevo_post->crea_post($_POST["titulo_post"], $_SESSION["usuario"], $_POST["texto_post"], date('Y-m-d-G-i-s')); }
//formulario para enviar un nuevo post
?>
<div>
<form action="blog_index.php" method="post">
<table border="0">
<tr>
<th align="center" scope="colgroup">Introduzca un nuevo post</th>
</tr>
<tr>
<td>
Título
<input type="text" name="titulo_post" /> <!-- campo para el título del post -->
</td>
</tr>
<tr>
<td>
<textarea name="texto_post" cols="50" rows="10"></textarea> <!-- campo para el texto del post -->
</td>
</tr>
<td>
<input type="submit" name="enviar_post" value="Enviar nuevo post"/> <!-- botón para enviar el formulario por método post -->
</td>
</table>
</form>
</div>
el método a la que apunta la instancia es el siguiente(comentado)
Código PHP:
Ver originalpublic function crea_post($titulo,$usuario,$post,$fechahora) //recibe los valores necesarios para el post
{
$consulta="SELECT id, usuario from usuarios where usuario='".$usuario."'"; //selecciono el id y el usuario, donde el usuario coincida con el recibido por parámetro
$result_conexion=Conectar::connect($consulta); //conecto a la base de datos
while($resultado=mysql_fetch_array($result_conexion))//mientras $resultado reciba valores {
$id=$resultado['id']; //escojo la id del usuario
}
//finalmente con la id del usuario lo que hago en la siguiente conexion a base de datos es insertar en el campo id_usuarios el valor int obtenido anteriormente
$crea_post="INSERT INTO posts VALUES (null, titulo='".$titulo."', id_usuarios='".$id."', post='".$post."', fecha='".$fechahora."')";
$result_conexion=Conectar::connect($crea_post); //conecto a la base de datos e inserto
echo "Entrada publicada con éxito";
}
cuando realizo lo que aparece en el método me devuelve el siguiente error que no entiendo
Cita: ERROR:
Cannot add or update a child row: a foreign key constraint fails (`hoteles`.`posts`, CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`id_usuarios`) REFERENCES `usuarios` (`id`))Entrada
¿alguien sabe qué significa este error, por qué me devuelve este error, me falla el método por algún error de sintaxis, sabría alguna forma mejor o correcta de hacerlo?
gracias :)