Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2012, 15:09
Avatar de estudioplateado
estudioplateado
 
Fecha de Ingreso: diciembre-2009
Mensajes: 71
Antigüedad: 14 años, 4 meses
Puntos: 2
Pregunta error al insertar datos en tabla mysql desde form

amigos:

estoy armando un script en php que se compone de un formulario. Se conecta a una base de datos mysql y tengo el problema que no me funciona la inserción de datos en la tabla ...

conectarse con la dbase se conecta dado que el select dinámico del form logra extraer datos de las filas de una de las tablas, pero a la hora de completar el formulario y enviarlo hago el chequeo en phpmyadmin -tanto de localhost como de servidor online- y no me da resultado, no se cargan los datos del form.

No puedo lograr insertar en la tabla 'alumno' los datos que se cargan el el form ...

El mismo form sí puede obtener datos de otra tabla, la tabla sexo p/ el select del sexo del alumno, o sea ahi esta la prueba de que la conexión anda ...


a continuacion el script php

Código PHP:
<?php $servidor "localhost";
$usuario "root";
$password "";
$nombrebase "app_escuela";


$cnx mysql_pconnect($servidor$usuario$password) or die("Error en la conexión");
mysql_select_db($nombrebase$cnx) or die ("Verifique la Base de Datos");

//session_start();

function clean($s) {
    if(
is_array($s)) {
        foreach(
$s as $c => $v) {
                    
$s[$c] = mysql_real_escape_string($v);        
        }
    } else 
$s mysql_real_escape_string($s);
    return 
$s;
}  
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Alta de Alumnos</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<?php
// include 'menu.php';

if($_POST[subgrabar]) {
    
    
$_POST clean($_POST);
    
    
mysql_query('BEGIN WORK');
    
    if(
$_POST[nombre]) {
        
$res mysql_query("select max(cod_a) as M from alumno");
        
        
$row mysql_fetch_array($res);
        
// comprobamos la conexion ---------------------------------------------------------------
        
echo $row[M];
        if(
$row[M])
                
$max $row[M] +1;
        else 
                
$max 1;
                
// comprobamos la conexion ---------------------------------------------------------------
                
echo '<br />'.$max;
        
$fecha date("Y-m-d");
        
        
$sql "insert into alumno values (";
        
$sql .= $max.", ";
        
$sql .= "'".$_POST[nombre]."', ";
        
$sql .= "'".$_POST[apellido]."', ";
        
$sql .= $_POST[sexo].", ";
        
$sql .= "'".$_POST[dni]."', ";
        
$sql .= "'".$_POST[fecha_nac]."', ";
        
$sql .= "'".$_POST[antecedentes]."', ";
        
$sql .= "'".$_POST[mail]."', ";        
        
$sql .= "'".$_POST[facebook]."', ";        
        
$sql .= $_POST[secundario].", ";        
        
$sql .= "'".$_POST[otros_estudios].", ";            
        
$sql .= "'".$fecha."')";                        
        
        
$res mysql_query($sql);
        
        
mysql_query('COMMIT');
        
        }
}
        
echo 
'<form action="?" method="post">';        

$res mysql_query("select * from sexo order by nom_s asc");

if (!
$res) { 
    
$message  'Error en la consulta: ' mysql_error() . "\n"
    die(
$message); 
}  

while(
$row mysql_fetch_array($res)) {
    
$select1 .= '<option value="'.$row['cod_s'].'">'.$row['nom_s'].'</option>';
}

echo 
'<table cellspacing="0">';
echo 
'<tr>';
echo 
'<td>Nombre</td><td><input type=text name=nombre></td>';        
echo 
'</tr>';        
echo 
'<tr>';
echo 
'<td>Apellido</td><td><input type=text name=apellido></td>';        
echo 
'</tr>';        
echo 
'<tr>';
echo 
'<td>Sexo</td><td><select name=sexo>'.$select1.'</select></td>';        
echo 
'</tr>';        
echo 
'<tr>';
echo 
'<td>DNI | LC | Pasaporte</td><td><input type=text name=dni></td>';        
echo 
'</tr>';            
echo 
'<tr>';
echo 
'<td>Fecha de nacimiento</td><td><input type=text name=fecha_nac></td>';        
echo 
'</tr>';        
echo 
'<tr>';
echo 
'<td>Antecedentes Médicos</td><td><input type=text name=antecedentes></td>';        
echo 
'</tr>';            
echo 
'<tr>';
echo 
'<td>Mail principal</td><td><input type=text name=mail></td>';        
echo 
'</tr>';        
echo 
'<tr>';
echo 
'<td>Secundario Terminado?</td><td><select name=secundario>';
echo 
'<option value="n">No</option>';
echo 
'<option value="s">Sí</option>';
echo 
'</select></td>';        
echo 
'</tr>';
echo 
'<tr>';
echo 
'<td>Otros Estudios</td><td><input type=text name=otros_estudios></td>';        
echo 
'</tr>';
echo 
'<tr>';    
echo 
'<td colspan="2"><input value="Dar de Alta" type="submit" name="subgrabar"></td>';
echo 
'</tr>';
echo 
'</table>';

echo 
'</form>';

?>
</body>
</html>

Y este es el codigo con el cual armo las tablas:

Código:
DROP TABLE IF EXISTS alum_domicilio;
DROP TABLE IF EXISTS domicilio;
DROP TABLE IF EXISTS tel_contacto;
DROP TABLE IF EXISTS asignac_c;
DROP TABLE IF EXISTS compra;
DROP TABLE IF EXISTS modal_cursado;
DROP TABLE IF EXISTS pago_cuota;
DROP TABLE IF EXISTS modal_comercial;
DROP TABLE IF EXISTS asistencias;
DROP TABLE IF EXISTS clases;
DROP TABLE IF EXISTS curso;
DROP TABLE IF EXISTS alumno;
DROP TABLE IF EXISTS sexo;

CREATE TABLE alumno (
cod_a int(5) default '0' NOT NULL,
nom_a varchar(80) default '' NOT NULL,
ape_a varchar(80) default '' NOT NULL,
cod_s int(1) default '0' NOT NULL,
dni_a varchar(80) default '' NOT NULL, 
fec_n date default NULL,
ante_m varchar(250) default NULL,
mail_a varchar(80) default NULL,
face_a varchar(80) default NULL,
secu_a varchar(1) default 'n',
otros_e varchar(250) default NULL,
fec_a date default NULL,
PRIMARY KEY (cod_a)
) ENGINE=innodb;

CREATE TABLE sexo (
cod_s int(1) NOT NULL auto_increment,
nom_s varchar(80) default '' NOT NULL,
PRIMARY KEY (cod_s)
) ENGINE=innodb;

CREATE TABLE domicilio (
nom_c varchar(80) default '' NOT NULL,
num_d int(5) default '0' NOT NULL,
dep_d varchar(80) default NULL,
ciud_d varchar(80) default '' NOT NULL,
prov_d varchar(80) default '' NOT NULL,
bar_d varchar(80) default NULL,
cod_d int(5) default '0' NOT NULL,
sal_p varchar(1) default 'n',
PRIMARY KEY (cod_d)
) ENGINE=innodb;

CREATE TABLE alum_domicilio (
cod_d int(5) default '0' NOT NULL,
cod_a int(5) default '0' NOT NULL,
PRIMARY KEY (cod_d,cod_a),
KEY cod_d (cod_d),
KEY cod_a (cod_a)
) ENGINE=innodb;

CREATE TABLE tel_contacto (
car_t int(5) default '0' NOT NULL,
num_t int(11) default '0' NOT NULL,
cod_a int(5) default '0' NOT NULL,
PRIMARY KEY (num_t,cod_a),
KEY num_t (num_t),
KEY cod_a (cod_a)
) ENGINE=innodb;

CREATE TABLE compra (
cod_c int(5) default '0' NOT NULL,
mon_c float(5.2) default '0',
fec_c date default NULL,
PRIMARY KEY (cod_c)
) ENGINE=innodb;

CREATE TABLE asignac_c (
cod_c int(5) default '0' NOT NULL,
cod_a int(5) default '0' NOT NULL,
com_c varchar(1) default 'n',
cant_c smallint(3) NOT NULL default '1',
PRIMARY KEY (cod_c,cod_a),
KEY cod_c (cod_c),
KEY cod_a (cod_a)
) ENGINE=innodb;


CREATE TABLE curso (
cod_c smallint(3) NOT NULL auto_increment,
nom_c varchar(80) default '' NOT NULL,
desc_c varchar(250) default '' NOT NULL,
PRIMARY KEY (cod_c)
) ENGINE=innodb;


CREATE TABLE modal_cursado (
hor_c varchar(80) default '' NOT NULL,
dias_c varchar(80) default '' NOT NULL,
cod_a int(5) default '0' NOT NULL,
cod_c smallint(3) default '0' NOT NULL,
PRIMARY KEY (cod_a,cod_c),
KEY cod_c (cod_c),
KEY cod_a (cod_a)
) ENGINE=innodb;

CREATE TABLE modal_comercial (
cant_c smallint(3) default '1' NOT NULL,
mon_c int(5) default '200' NOT NULL,
cod_m smallint(3) default '0' NOT NULL,
PRIMARY KEY (cod_m)
) ENGINE=innodb;

CREATE TABLE pago_cuota (
fec_p date default NULL,
cod_a int(5) default '0' NOT NULL,
num_c smallint(3) default '0' NOT NULL,
cod_m smallint(3) default '0' NOT NULL,
PRIMARY KEY (cod_a,cod_m),
KEY cod_a (cod_a),
KEY cod_m (cod_m)
) ENGINE=innodb;

CREATE TABLE clases (
cod_cl int(5) default '0' NOT NULL,
fec_c date default NULL,
cod_c smallint(3) default '0' NOT NULL,
PRIMARY KEY (cod_cl)
) ENGINE=innodb;

CREATE TABLE asistencias (
cod_cl int(5) default '0' NOT NULL,
cod_a int(5) default '0' NOT NULL,
conf_a varchar(1) default 's',
PRIMARY KEY (cod_cl,cod_a),
KEY cod_cl (cod_cl),
KEY cod_a (cod_a)
) ENGINE=innodb;

ALTER TABLE alumno add FOREIGN KEY(cod_s) REFERENCES sexo(cod_s) ON DELETE RESTRICT ON UPDATE CASCADE; 

ALTER TABLE alum_domicilio add FOREIGN KEY(cod_d) REFERENCES domicilio(cod_d) ON DELETE RESTRICT ON UPDATE CASCADE; 
ALTER TABLE alum_domicilio add FOREIGN KEY(cod_a) REFERENCES alumno(cod_a) ON DELETE RESTRICT ON UPDATE CASCADE; 

ALTER TABLE tel_contacto add FOREIGN KEY(cod_a) REFERENCES alumno(cod_a) ON DELETE RESTRICT ON UPDATE CASCADE; 

ALTER TABLE asignac_c add FOREIGN KEY(cod_c) REFERENCES compra(cod_c) ON DELETE RESTRICT ON UPDATE CASCADE; 
ALTER TABLE asignac_c add FOREIGN KEY(cod_a) REFERENCES alumno(cod_a) ON DELETE RESTRICT ON UPDATE CASCADE; 

ALTER TABLE modal_cursado add FOREIGN KEY(cod_a) REFERENCES alumno(cod_a) ON DELETE RESTRICT ON UPDATE CASCADE; 
ALTER TABLE modal_cursado add FOREIGN KEY(cod_c) REFERENCES curso(cod_c) ON DELETE RESTRICT ON UPDATE CASCADE; 

ALTER TABLE pago_cuota add FOREIGN KEY(cod_a) REFERENCES alumno(cod_a) ON DELETE RESTRICT ON UPDATE CASCADE; 
ALTER TABLE pago_cuota add FOREIGN KEY(cod_m) REFERENCES modal_comercial(cod_m) ON DELETE RESTRICT ON UPDATE CASCADE; 

ALTER TABLE clases add FOREIGN KEY(cod_c) REFERENCES curso(cod_c) ON DELETE RESTRICT ON UPDATE CASCADE; 

ALTER TABLE asistencias add FOREIGN KEY(cod_cl) REFERENCES clases(cod_cl) ON DELETE RESTRICT ON UPDATE CASCADE; 
ALTER TABLE asistencias add FOREIGN KEY(cod_a) REFERENCES alumno(cod_a) ON DELETE RESTRICT ON UPDATE CASCADE; 

INSERT INTO sexo (nom_s) VALUES ('hombre');
INSERT INTO sexo (nom_s) VALUES ('mujer');
INSERT INTO sexo (nom_s) VALUES ('transgénero');

INSERT INTO alumno (cod_a,nom_a,ape_a,cod_s,dni_a,fec_n,mail_a,secu_a) VALUES (1,'Antonio','Mure',1,'8.255.397','1950-01-19','[email protected]','s');

INSERT INTO curso (nom_c,desc_c) VALUES ('peluqueria 1','curso inicial de peluquería de Gustavo Falcón');
INSERT INTO curso (nom_c,desc_c) VALUES ('peluqueria 2','curso intermedio de peluquería de Gustavo Falcón');
INSERT INTO curso (nom_c,desc_c) VALUES ('peluqueria 3','curso avanzado de peluquería de Gustavo Falcón');
gracias desde ya,