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 original
if(isset($_SESSION['usuario'])) //si no existe sesión de usuario no muestra form para enviar nuevo 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 original
public 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 { $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:
¿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?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
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
gracias :)