2014-07-04 103 views
0

嗯,我正在使用php + postgres試圖製作一個web應用程序。我的問題是當我嘗試在表中插入數據,因爲它不「死」,但也不插入任何東西。我不能用postgres + php插入數據

這是我的視圖,在這裏都可以正常工作。

<form action="../../Controlador/agregarAlumno.php" method="post"> 
    <label for="nombre">Nombre:</label> 
     <input id="nombre" type="text" name="nombre" placeholder="Nombre Coordinador" required="true" /> 
    <label for="email">Rol:</label> 
     <input id="email" type="text" name="rol" placeholder="Rol USM" required="true" /> 
    <label for="nombre">Rut:</label> 
     <input id="nombre" type="text" name="rut" placeholder="Rut" required="true" /> 
    <label for="email">Área:</label> 
    <select name="area"> 
    <option value="">Elige un área</option> 
    <?php 

     foreach($areas as $area) 
     { 
      echo '<option value="'. $area[0] .'">'. $area[1] .'</option>'; 
     } 
    ?> 
    </select> 

    <label for="nombre">Teléfono:</label> 
     <input id="nombre" type="text" name="telefono" placeholder="Ej: +56988182965" required="true" /> 
    <label for="email">Talla Polera:</label> 
     <input id="email" type="text" name="talla" placeholder="Ej: S, M, L" required="" /> 
    <label for="nombre">Carrera:</label> 
    <select name="carrera"> 
    <option value="">Elige una carrera</option> 
    <?php 

     foreach($carreras as $carrera) 
     { 
      echo '<option value="'. $carrera[0] .'">'. $carrera[2] .'</option>'; 
     } 
    ?> 
    </select> 

    <label for="email">Correo Electrónico</label> 
     <input id="email" type="mail" name="correo" placeholder="[email protected]" required="true" /> 
    <label for="email">Contraseña</label> 
     <input id="email" type="text" name="contraseña" required="true" /> 


    <input id="submit" type="submit" name="submit" value="Enviar" /> 
</form> 

這是agregarAlumno.php,這裏的想法是插入一個用戶,然後使它的協調員,在簡單的話,我試圖做2個插入一個視圖。

<?php 

include("conexion.php"); 
include("../Modelo/alumno.php"); 
include("../Modelo/area.php"); 
include("../Modelo/coordinadoresArea.php"); 

$al = new alumno(); 

$alumnos = $al->obtenerAlumnos(); 
foreach ($alumnos as $alumno) 
{ 
    if($_POST[rol] != $alumno[0]) 
    { 
     $al->agregarAlumno($_POST[nombre],$_POST[rol],$_POST[rut],$_POST[telefono],$_POST[talla],$_POST[carrera],$_POST[correo],$_POST[contraseña]); 
    } 

} 
$cor = new coordinadoresArea(); 
$cor->agregarCoordinadorArea($_POST[rol],$_POST[area]); 
//header("Location: ../Vista/Coordinadores Area/coordinadoresArea.php"); 
?> 

這是函數agregarAlumno:

function agregarAlumno($nombre,$rol,$rut,$telefono,$talla,$id_carrera,$correo,$contraseña) 
    { 
include("conexion.php"); 
$query = "INSERT INTO alumno VALUES('".$rol."','".$id_carrera."','".$nombre."','".$rut."','".$correo."','".$contraseña."','".$telefono."','".$talla."')"; 
return $result = pg_query($query); 

pg_free_result($result); 

pg_close($db); 
    } 

這裏是功能agregarCoordinador:

function agregarCoordinadorArea($rol,$id_area) 
    { 
include("conexion.php"); 
echo "Rol:",$rol," ","Id Area:",$id_area; 
$query = "INSERT INTO coordinador_area VALUES('".$rol."','".$id_area."')"; 
$result = pg_query($query); 

pg_free_result($result); 

// Closing connection 
pg_close($db); 
    } 

最後,這是表coordinador_area:

CREATE TABLE coordinador_area 
(
    id_coordinador_area serial NOT NULL, 
    rol character varying(20) NOT NULL, 
    id_area integer NOT NULL, 
    CONSTRAINT coordinador_area_pkey PRIMARY KEY (id_coordinador_area), 
    CONSTRAINT coordinador_area_id_area_fkey FOREIGN KEY (id_area) 
     REFERENCES area (id_area) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION, 
    CONSTRAINT coordinador_area_rol_fkey FOREIGN KEY (rol) 
     REFERENCES alumno (rol) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
) 

我對不起如果我提出一個很長的問題,但我已經嘗試了一切(我知道)。

+2

YOu正在3列的表中插入2個值,沒有指定這2列.'INSERT INTO coordinador_area(rol,id_area)VALUES ...' – Mihai

+0

「COMMIT」缺失..在此之前,世界其他地方_never_不知道你插入了什麼! –

+0

你所有的POST參數都必須用單引號,例如:'$ _POST ['nombre']',我看你有'$ _POST [nombre]'現在 – martinezjc

回答

0

你所有的POST參數必須與單引號,例如:$_POST['nombre'],我看你有沒有$_POST[nombre]

的另一個問題是變量或參數名稱不得包含像ñ

$al->agregarAlumno($_POST['nombre'],$_POST['rol'],$_POST['rut'],$_POST['telefono'],$_POST['talla'],$_POST['carrera'],$_POST['correo'],$_POST['contrasenia']); 
無效字符

希望它對你有用:)

+2

它可以正常使用$ _POST [nombre]和字符ñ,問題出現在$ query =「INSERT INTO coordinador_area VALUES('」。$ rol。「'''。。$ id_area。」')「; 。無論如何非常感謝。 – Nameless999