PHP - ERROR AL INSERTAR REGISTROS EN UNA TABLA MYSQL

   
Vista:
Imágen de perfil de Miguel Angel

ERROR AL INSERTAR REGISTROS EN UNA TABLA MYSQL

Publicado por Miguel Angel (11 intervenciones) el 05/05/2017 14:06:59
Buenos días
Tengo una aplicación para insertar marcadores en una base de datos y que después me lo muestre en un mapa usando la API de google Maps, y tengo todo funcionando menos la parte de dar de alta los marcadores, es como que se me envía la información antes de darle al botón submit, le estoy dando muchísimas vueltas y no encuentro la solución, ademas, tengo un select que coge datos de la base de datos, y funciona, pero quiero que se vea el nombre (que se ve), pero que el dato que envíe sea el identificador(porque es el campo que es subclave y esta relacionado con otra tabla que contiene dicho identificador y el nombre), probablemente sea porque esta en si mismo mal el código, os pongo el código que tengo y adjunto imagen del error que me da.
El código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
include "datos.php"; //contiene los datos para conectar con la base de datos
 $con = mysqli_connect($host, $user, $pass, $db_name)or die("Error en la conexión con la base de datos");
<form method="POST" action="altaMarcadores.php" class="altaMarcadores">
        <h1>ALTA DE NUEVO MARCADOR</h1>
        <div><label for="marcador">Nuevo Marcador</label><br></div>
        <div><label>Nombre de Marcador: <br/><input type="text" name="nombre" required=""></label></div>
        <div><label>Descripcion del Marcador: <br/><input type="text" name="descripcion" required=""></label></div>
        <div><label>Coordenadas Marcador: <br/><input type="text" name="coordenadas" required=""></label></div>
        <title>Elija la categoria:</title>
        <body>Categorias<br/>
            <select name="consulta_categorias">;
                <option value="0">Seleccione una categoria</option>
//Aqui inserto la funcion con php para que el select me retorne la categoria
 <?php
            $consulta_categorias = $con->query("SELECT nombre FROM categoria");
            while($lista=mysqli_fetch_array($consulta_categorias)){
                echo '<option value="'.$lista[idcategoria].'">'.$lista[nombre].'</option>';
            }
             ?>
        </select>
        </body>
        </head>
                <br/><input type="submit" value="ENVIAR" name="enviarmarcador"/><br/><br/>
        <a href="consultaCategorias.php">Consulta de categorias</a><br/><br/>
        <a href="altaCategorias.html">Alta de marcadores</a><br/><br/>
//Y aqui hago la consulta para insertar los datos en la base de datos
        <?php
        $con = mysqli_connect($host, $user, $pass, $db_name)or die("Error en la conexión con la base de datos");
        $altaMarcador = "INSERT INTO marcador(nombre, descripcion, coordenadas, categoria) values ('$_POST[nombre]', '$_POST[descripcion]',"
                . "'$_POST[coordenadas]', '$_SESSION($_GET[idcategoria])')";
        $resultado = mysqli_query($con, $altaMarcador);
        if(mysqli_query($con, $altaMarcador)===TRUE){
        echo "<br/>"."<h2>"."Marcador ".$_POST['nombre']." dado de alta correctamente!"."</h2>";
        echo "<a href='altaMarcadores.php'>Volver a alta de marcadores</a><br/><br/>";
        echo "<a href='mostrarMapa.php'>Mostrar el mapa</a><br/>";
        }else{
        echo "Error al crear el marcador.".$altaMarcador."<br/>".$con->error;
        }
mysqli_close($con);
        ?>
</form>

error-insertar-registros-en-mysql
Como veis, el error me da nada mas ejecutar el archivo, cuando todavía no se ha enviado el formulario, por favor, a ver si alguien me hecha una mano,
Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Fernando

ERROR AL INSERTAR REGISTROS EN UNA TABLA MYSQL

Publicado por Fernando (5 intervenciones) el 05/05/2017 17:53:21
Te recomiendo que valides si el formulario fue enviado, sino nunca te reconocerá las variables..

1
2
3
4
5
6
7
8
if(isset($_POST['enviarmarcador'])){
}
 
//Asignes variables a los $_POST y $_SESSION y luego los llamas en la consulta sql
$nombre = $_POST['nombre'];
etc..
 
}

El archivo que recibe que los datos en el action, altaMarcadores.php, seria bueno que pusieras el código por si aun sigues con el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Miguel Angel

ERROR AL INSERTAR REGISTROS EN UNA TABLA MYSQL

Publicado por Miguel Angel (11 intervenciones) el 05/05/2017 20:04:36
Hola, sigo con el problema, este es mi altaMarcadores.php, esta en el mismo archivo todo junto porque me venia bien para hacer lo del select, con lo que dentro del php esta el propio formulario
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<form method="POST" action="altaMarcadores.php" class="altaMarcadores">
        <h1>ALTA DE NUEVO MARCADOR</h1>
        <div><label for="marcador">Nuevo Marcador</label><br></div>
        <div><label>Nombre de Marcador: <br/><input type="text" name="nombre" required=""></label></div>
        <div><label>Descripcion del Marcador: <br/><input type="text" name="descripcion" required=""></label></div>
        <div><label>Coordenadas Marcador: <br/><input type="text" name="coordenadas" required=""></label></div>
        <title>Elija la categoria:</title>
        <body>Categorias<br/>
            <select name="consulta_categorias">;
                <option value="0">Seleccione una categoria</option>
         <?php
            $consulta_categorias = $con->query("SELECT nombre FROM categoria");
            while($lista=mysqli_fetch_array($consulta_categorias)){
                echo '<option value="'.$lista[idcategoria].'">'.$lista[nombre].'</option>';
            }
             ?>
        </select>
        </body>
        </head>
        <?php
        $con = mysqli_connect($host, $user, $pass, $db_name)or die("Error en la conexión con la base de datos");
        $nombre = $_POST[nombre];
        $descripcion = $_POST[descripcion];
        $coordenadas = $_POST[coordenadas];
        $categoria = $_POST[categoria];
        $idcategoria = $_POST[idcategoria];
        if($_SESSION($_POST[enviarmarcador])!=NULL){
        $altaMarcador = "INSERT INTO marcador(nombre, descripcion, coordenadas, categoria) values ('$_POST[nombre]', '$_POST[descripcion]',"
                . "'$_POST[coordenadas]', '$_POST[idcategoria]')";
        $resultado = mysqli_query($con, $altaMarcador);
        if(mysqli_query($con, $altaMarcador)===TRUE){
        echo "<br/>"."<h2>"."Marcador ".$_POST['nombre']." dado de alta correctamente!"."</h2>";
        echo "<a href='altaMarcadores.php'>Volver a alta de marcadores</a><br/><br/>";
        echo "<a href='mostrarMapa.php'>Mostrar el mapa</a><br/>";
        }else{
        echo "Error al crear el marcador.".$altaMarcador."<br/>".$con->error;
        }
        }
mysqli_close($con);
        ?>
        <br/><input type="submit" value="ENVIAR" name="enviarmarcador"/><br/><br/>
        <a href="consultaCategorias.php">Consulta de categorias</a><br/><br/>
        <a href="altaCategorias.html">Alta de marcadores</a><br/><br/>
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Miguel Angel

ERROR AL INSERTAR REGISTROS EN UNA TABLA MYSQL

Publicado por Miguel Angel (11 intervenciones) el 05/05/2017 21:23:00
Ya me funciona la primera parte, tenia mal colocado el isset que lo tenia después de las variables y no antes, pero ahora viene la segunda duda, ¿porque me da error al insertar los datos en la table?
El problema es que con el select cojo el nombre, que es lo correcto, porque nadie se va a saber los indices, pero como el indice es que esta relacionado con la tabla de categorías, ¿como hago para mostrar el nombre pero pasar el id?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando

ERROR AL INSERTAR REGISTROS EN UNA TABLA MYSQL

Publicado por Fernando (5 intervenciones) el 05/05/2017 22:28:45
En la consulta solo estas cargando el nombre de la categoria, pon idcategoria, o simplemente carga todo *

1
$consulta_categorias = $con->query("SELECT * FROM categoria");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar