Foros del Web » Programando para Internet » PHP »

Rellenar un base de datos con un formulario

Estas en el tema de Rellenar un base de datos con un formulario en el foro de PHP en Foros del Web. Hola!!! Soy nueva en la programacion en php y tengo algunos problemillas q me estan quebrando la cabeza, asiq por si alguno me puede ayudar ...
  #1 (permalink)  
Antiguo 02/02/2006, 04:25
 
Fecha de Ingreso: febrero-2006
Mensajes: 32
Antigüedad: 18 años, 9 meses
Puntos: 0
Rellenar un base de datos con un formulario

Hola!!!
Soy nueva en la programacion en php y tengo algunos problemillas q me estan quebrando la cabeza, asiq por si alguno me puede ayudar aqui les digo mi problema:
A ver, hecho un formulario para rellenar unas tablas de una base de datos y de las 4 tablas que se se supone q tiene q insertar datos hay en una q me da un erro. El codigo es el siguiente:
Código PHP:
echo <<< HTML
 <form method="post" action="$PHP_SELF?accion=hacernuevo">
  <table width="392" border="0" cellspacing="0" cellpadding="4" align="center">
    <tr bordercolor="#CCCCCC" bgcolor="#f7f7f4"> 
      <td height="30" colspan="2"> <div align="center"><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="3" color="#003399"><b>Nuevo Cliente </b></font></div></td>
      <td bgcolor="f7f7f4">&nbsp;</td>
    </tr>
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font face="tahoma,Verdana, Arial, Helvetica, sans-serif" size="2"><b> Cif:</b></font></div></td>
      <td width="144"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="clientecif" size=25 type="text" class="imputbox" size="12" maxlength="15"></font></b></td>
    </tr>
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font face="tahoma,Verdana, Arial, Helvetica, sans-serif" size="2"><b>Razón Social:</b></font></div></td>
      <td width="144"><b><font face="tahoma,Verdana, Arial" size="2"> 
        <input type="text" size="45" name="clientenombre" class="imputbox" maxlength="100"></font></b></td>
    </tr>    
     <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font face="tahoma,Verdana, Arial, Helvetica, sans-serif" size="2"><b>Persona de contacto:</b></font></div></td>
      <td><b><font face="tahoma,Verdana, Arial" size="2"> </font></b><font face="tahoma,Verdana, Arial" size="2"><font size="-3"><b><font face="tahoma,Verdana, Arial" size="2">
        <input type="text" size=35 name="clientecontacto" class="imputbox" maxlength="100"></font></b></font></font></td>
    </tr>
     <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b> Dirección</font>:<b/></div></td>
      <td colspan="2"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="clientedireccion" type="text" class="imputbox" size="60" maxlength="100"></font></b></td>
    </tr>
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b> Email</font>:</b></div></td>
      <td colspan="2"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="email" type="text" class="imputbox" size="60" maxlength="100"></font></b></td>
    </tr>  
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b> Tel&eacute;fono:</b></font></div></td>
      <td width="144"><b><font face="tahoma,Verdana, Arial" size="2">
        <input type="text" name="clientetelefono" class="imputbox" size="25" maxlength="12"></font></b></td>
      <td width="77"><font face="tahoma,Verdana, Arial" size="2"><b>Fax:</b></font></td>
      <td colspan="2"><font face="tahoma,Verdana, Arial" size="2">
        <input type="text" name="clientefax" class="imputbox" size="25" maxlength="12"></font></td>
    </tr>
     <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b> Contrato Mantenimiento:</font><b/></div></td>
      <td colspan="2"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="contratoMant" type="text" class="imputbox" size="60" maxlength="100"></font></b></td>
    </tr> 
     <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b>Número usuarios del contrato:</font><b/></div></td>
      <td colspan="2"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="num_usuarios" type="text" class="imputbox" size="60" maxlength="100"></font></b></td>
    </tr>
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b>Fecha de inicio del contrato:</font><b/></div></td>
      <td colspan="2"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="fe_inicio" type="text" class="imputbox" size="60" maxlength="100">
        </font></b></td>
    </tr>
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b>Periocidad:</font><b/></div></td>
      <td colspan="2"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="periocidadMant" type="text" class="imputbox" size="60" maxlength="100"></font></b></td>
    </tr>
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b>Fecha de fin del contrato:</font><b/></div></td>
      <td colspan="2"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
        <input name="fe_fin" type="text" class="imputbox" size="60" maxlength="100"></font></b></td>
    </tr>    
    <tr bgcolor="#f7f7f4"> 
      <td width="67"> <div align="left"><font size="2" face="tahoma,Verdana, Arial"><b>Precio del contrato:</font><b/></div></td>
        <td colspan="3"><b><font face="Tahoma, Verdana,Arial, sans-serif" size="2">
          <form action="subearchivo.php" method="post" enctype="multipart/form-data">
              <input type="hidden" name="MAX_FILE_SIZE" value="100000">
            <input name="userfile" type="file" size="30"></div></td></form>
    </tr>
     <tr bgcolor="#f7f7f4"> 
      <td colspan="2" height="40"> <div align="center"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <input type="submit" name="Submit" align="center" value="  Registrar  " class="botones" ></font></b> </div></td><td bgcolor="#f7f7f4"></td>
    </tr> 
  </table>
  <div align="center"><b><font face="Tahoma, Verdana, Arial, Helvetica, sans-serif" size="2"> 
    </font></b> </div>
</form>
HTML;
}
//fin if nuevo
if ($_GET['accion']=="hacernuevo"){

$cif=$_POST['clientecif'];
$nombre=$_POST['clientenombre'];
$contacto=$_POST['clientecontacto'];
$telefono=$_POST['clientetelefono'];
$fax$_POST['fax'];
$direccion=$_POST['clientedireccion'];
$email=$_POST['email'];
$contratoMant=$_POST['contratoMant'];
$num_usuarios=$_POST['num_usuarios'];
$fe_inicio=$_POST['fe_inicio'];
$periocidadMant=$_POST['periocidad'];
$fe_fin=$_POST['fe_fin'];
$precioMant=$_POST['precioMant'];

if (
$cif=="" or $nombre=="") {
  if (
$cif=="") {
     
header ("Location: $pag?accion=nuevo&error=5"); 
     exit;
   }     
  elseif (
$nombre=="") {     
       
header ("Location: $pag?accion=nuevo&error=6");
       exit;
      } 
}
//insertamos en la tabla clientes los datos del cliente
mysql_query("INSERT INTO clientes(cif,nombre,contacto,email) values('$cif','$nombre','$contacto','$email')") or die(mysql_error());

$consulta=mysql_query("select claveC from clientes where cif='$cif'") or die(mysql_error());
$clave=mysql_fetch_array($consulta);

//si ponemos un telefono tenemos q insertar en la tabla de telefonos
if ($telefono != "") {
 
mysql_query("INSERT INTO telefonos values('$clave[claveC]','$telefono','$fax')") or die(mysql_error());
}
//si ponemos una direccion tenemos q insertar en la tabla de direcciones
if ($direccion != "") {
 
mysql_query("INSERT INTO direcciones values('$clave[claveC]','$direccion')") or die(mysql_error());
}

[
B]if($contratoMant==""){//sino tiene contrato ponemos un 0 que es como un false
    
$contrat='0';
    
mysql_query("UPDATE clientes SET contratoMant= '$contrat' WHERE claveC='$clave[claveC]'");
}
if(
$contratoMant!=""){//si rellenamos el campo de contrato esq este cliente si tiene contrato de mantenimiento
    
$contrat='1';
    
mysql_query("UPDATE clientes SET contratoMant= '$contrat' WHERE claveC='$clave[claveC]'");
    
//tb tenemos que rellenar la tabla del contrato de mantenimiento si el cliente tiene contrato.
    
mysql_query("INSERT INTO mantenimientoC(nombreMant,num_usuarios,fe_inicio,periocidadMant,fe_fin,codCliente) values('$contratoMant','$num_usuarios','$fe_inicio,'$periocidadMant','$fe_fin','$clave[claveC]')") or die(mysql_error());[/B]

}


echo <<<HTML
         <img src="../media/masmedia/nuevo.gif" width="154" height="193" align="absmiddle">&nbsp;Se añadió correctamente el cliente a la lista.$fimplantacion
         <font size="2" face="Tahoma, Arial, Verdana"><a href=clientes.php?id=$_GET
[id] class="enlace3" >[seguir] $fimplantacion</a> </font>
   
       
HTML;
mysql_free_result($consulta);
mysql_close();
}
//fin hacernuevo 
Imagino q me vais a decir q es muy lioso y habra otra manera mas sencilla pero lo hecho como he sabido, esq aun toy muy verde.
Bueno el problema viene a la hora de insertar en la tabla mantenimientoC, se supone q en esta tabla solo tiene q insertar cuando escribimos algo en el campo de contrato de mantenimiento, si lo dejamos en blanco esa tabla no tiene q rellenarse con nada(asiq cuando lo dejamos en blanco todo funciona muy bien)
El fallo q da es el siguiente:" You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '19-01-2006','58')' at line 1"
Bueno a ver si alguien me puede echar una mano, gracias

Última edición por jam1138; 02/02/2006 a las 04:43
  #2 (permalink)  
Antiguo 02/02/2006, 06:00
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Se ve que usas mysql, por tanto tus fechas deberían ir en formato aaaa-mm-dd
y en el error se ve claramente que esta en formato dd-mm-yyyy.
  #3 (permalink)  
Antiguo 02/02/2006, 06:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 32
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta

Hola Claudio!!
Muchas gracias, pero me sigue dando el mismo problema aunq ponga la fecha como tu dices:" You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2007-01-19',62)' at line 1"
El campo donde va la fecha en la base de datos no lo tengo puesto como date sino como varchar, puede ser eso lo q falle??
  #4 (permalink)  
Antiguo 02/02/2006, 06:31
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Haz un echo("insert ...") de ese INSERT para ver en detalle como queda construida la sentencias sql y determinar cual es el error de sintaxis.
  #5 (permalink)  
Antiguo 02/02/2006, 06:45
 
Fecha de Ingreso: febrero-2006
Mensajes: 32
Antigüedad: 18 años, 9 meses
Puntos: 0
Sonrisa

Vale, hecho lo que mas dicho y sale lo siguiente:
INSERT INTO mantenimientoC(nombreMant,num_usuarios,fe_inicio,p eriocidadMant,fe_fin,codCliente) values('Licencia antivirus',6,'20-01-2006,'anual','19-01-2006',64)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'anual','19-01-2006',64)' at line 1.
Nose si te aclarara algo, espero que si
  #6 (permalink)  
Antiguo 02/02/2006, 07:04
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Falta una "comilla" y la fecha en otro formato.

Esto:
INSERT INTO mantenimientoC(nombreMant,num_usuarios,fe_inicio,p eriocidadMant,fe_fin,codCliente) values('Licencia antivirus',6,'20-01-2006,'anual','19-01-2006',64)

Debiera ser:

INSERT INTO mantenimientoC(nombreMant,num_usuarios,fe_inicio,p eriocidadMant,fe_fin,codCliente) values('Licencia antivirus',6,'2006-01-20','anual','2006-01-19',64)
  #7 (permalink)  
Antiguo 02/02/2006, 07:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 32
Antigüedad: 18 años, 9 meses
Puntos: 0
muchisimas gracias

Muchas gracias Claudio!!!!
Ya funciona bien, en serio muchas gracias q me has quitado un buen problema de encima, muchas gracias de verdad.
Un beso
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:59.