Problema al ingresar registros a una Tabla

Iniciado por mokoMonster, 18 Febrero 2010, 20:00 PM

0 Miembros y 1 Visitante están viendo este tema.

mokoMonster

Despues de intentar varias cosas y al ver que ninguna tubo resultado es mi deber postear mi problema en el foro  ;-)

El problema es este:
Tengo un formulario "newclient.html" con action="validform.php"; que toma los datos del cliente y los inserta en la tabla 'clientlist' pero el problema es que cuando inserta los registros, los ingresa vacios, es decir.. Al registrar al cliente con ID 1 el nombre, apellido, bla bla bla.. estan en blanco, aunque el formulario haya sido llenado correctamente.
<form id="form1" name="form1" method="get" action="validform.php">
<table width="253" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
   <td width="82">name ::</td>
   <td width="165"><label>
     <input type="text" name="name" id="name" />
   </label></td>
 </tr>
 <tr>
   <td>surname ::</td>
   <td><label>
     <input type="text" name="last_name" id="last_name" />
   </label></td>
 </tr>
 <tr>
   <td><p>gender ::</p></td>
   <td><label>
     <select name="gender" size="1" id="gender">
       <option selected="selected">male</option>
       <option>female</option>
       <option>shemale</option>
     </select>
   </label></td>
 </tr>
 <tr>
   <td>birthdate ::</td>
   <td><label>
     <input type="text" name="birthdate" id="birthdate" />
   </label></td>
 </tr>
 <tr>
   <td><p>mail ::</p></td>
   <td><label>
     <input type="text" name="mail" id="mail" />
   </label></td>
 </tr>
 <tr>
   <td>phone ::</td>
   <td><label>
     <input type="text" name="phone" id="phone" />
   </label></td>
 </tr>
 <tr>
   <td>emergency ::</td>
   <td><label>
     <input type="text" name="emerg_phone" id="emerg_phone" />
   </label></td>
 </tr>
 <tr>
   <td>cc_num ::</td>
   <td><label>
     <input type="text" name="cc_info" id="cc_info" />
   </label></td>
 </tr>
 <tr>
   <td>&nbsp;</td>
   <td><label>
     cvc:
     <input type="text" name="cvc" id="cvc" />
   </label>
     <label>
       <br />
       exp:
       <input type="text" name="exp" id="exp" />
   </label></td>
 </tr>
 <tr>
   <td>comments ::</td>
   <td><label>
     <textarea name="comments" id="comments" cols="25" rows="3"></textarea>
   </label></td>
 </tr>
 <tr>
   <td>&nbsp;</td>
   <td><label>
     <input type="submit" name="send" id="send" value="Enviar" />
   </label></td>
 </tr>
</table>
</form>

*El formulario es muy simple porque lo rehice y es de prueba

en "validform.php" tengo:
<?php
include("validdb.php");
$link=Conectarse();
$no=$_GET["ID"];
$name=$_GET["name"];
$last_name=$_GET["last_name"];
$phone=$_GET["phone"];
$emerg_phone=$_GET["emerg_phone"];
$mail=$_GET["mail"];
$gender=$_GET["gender"];
$birthdate=$_GET["birthdate"];
$cc_info=$_GET["cc_info"];
$cvc=$_GET["cvc"];
$exp=$_GET["exp"];
$comments=$_GET["comments"];
mysql_query("insert into clientlist (ID,name,last_name,phone,emerg_phone,mail,gender,birthdate,cc_info,cvc,exp,comments) values ('$no','$name','$last_name','$phone','$emerg_phone','$mail','$gender','$birthdate','$cc_info','$cvc','$exp','$comments')",$link) or die(mysql_error());
header('Location: clientlist.php'
?>


El codigo en validdb.php es completamente correcto, tanto lo es que ingresa los campos vacios a la db.
Como dato: Todo este proceso funcionaba a la perfeccion, pero cuando agrege un campo a la tabla en clientlist.php para Borrar los registros -que tambien funciono perfectamente- desde ahi empeze a tener problemas con la insercion de registros.
Aunque lo mas raro -para mi- fue que hasta intente cambiando de servidor y el problema persiste.
<?php
   
include("validdb.php");
   
$link=Conectarse();
   
$result=mysql_query("select * from clientlist",$link) or die(mysql_error());
?>

<table height="36" border=1 align="center" cellpadding=0 cellspacing=0>
  <tr>
    <td width="12" height="14" bgcolor="#FFCC00"><b> # </b></td>
    <td width="49" bgcolor="#FF6600"><b> Name</b></td>
    <td width="46" bgcolor="#FFCC00"><b>Last Name</b></td>
    <td width="50" bgcolor="#FF6600"><b>Phone</b></td>
    <td width="64" bgcolor="#FFCC00"><b>Emerg Phone</b></td>
    <td width="40" bgcolor="#FF6600"><b>Email</b></td>
    <td width="41" bgcolor="#FFCC00"><b>Gender</b></td>
    <td width="58" bgcolor="#FF6600"><b>Brithdate</b></td>
    <td width="99" bgcolor="#FFCC00"><b>CC num</b></td>
    <td width="26" bgcolor="#FF6600"><b>CVC</b></td>
    <td width="43" bgcolor="#FFCC00"><b>EXP</b></td>
    <td width="123" bgcolor="#FF6600"><b>Comments</b></td>
    <td width="63" bgcolor="#FFCC00"><b>Delete</b></td>
  </tr>

  <?php  
   
while($row mysql_fetch_array($result))
    {
      
printf("<tr><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td> %s </td><td><a href=\"borra_client.php?id=%d\">Delete</a></td></tr>",$row["ID"],$row["name"],$row["last_name"],$row["phone"],$row["emerg_phone"],$row["mail"],$row["gender"],$row["birthdate"],$row["cc_info"],$row["cvc"],$row["exp"],$row["comments"],$row["ID"]) or die(mysql_error());
   }
   
   
mysql_free_result($result);
   
mysql_close($link);
?>

</table>


Espero me puedan hechar una manita; se los agradeceria mucho.
Saludos :D
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

~ Yoya ~

Esto va en la sección PHP...

Ps mira, el formulario lo envias via POST pero lo recives via GET.... Tambien pueda ser que estes ingresando datos vacio en la base de datos, puedes verificar que TODAS las variables contengan un valor o si no no se ejecuta la consulta...

Código (php) [Seleccionar]
if(!empty($name) && !empty($last_name)............)
{
    //Consulta sel hacia la BD....
.....
...

..
exit;
}else{echo "Faltan campos por llenar";}
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Nakp

si esto es para aprender php+mysql esta bien... si es un trabajo vas a ser owneado porque sos vulnerable a sqli

como ya te dijo yoyahack... estas tomando los datos por donde no debes xD usa $_POST['campo']

si podes aprender/usar mysql o PDO y prepared statements mucho mejor xD yo no usaria el codigo de arriba :P
Ojo por ojo, y el mundo acabará ciego.

mokoMonster

Creo que habia olvidado fijarme en ese pequeño detalle :( haha pero muchas gracias..
Y esto de verificar que todas las variables tengan un valor, eso lo tengo que poner en validdb.php cierto?
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

~ Yoya ~

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

mokoMonster

Cita de: Nakp en 18 Febrero 2010, 20:15 PM
si esto es para aprender php+mysql esta bien... si es un trabajo vas a ser owneado porque sos vulnerable a sqli

como ya te dijo yoyahack... estas tomando los datos por donde no debes xD usa $_POST['campo']

si podes aprender/usar mysql o PDO y prepared statements mucho mejor xD yo no usaria el codigo de arriba :P


En realidad mi nivel de mysql es muy basico aun xD
Me podrias dar una idea de como podria ir mejorado el codigo, solo una idea porfavor xD:D
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

mokoMonster

"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

Nakp

que tal andas con la POO? ;D

tienes 2 opciones (en realidad como 5 xD) usar mysql_real_scape_string() para todos los datos que te pasen y asi no ser vulnerable a sqli O utilizar prepared statements (que viene funcionando un poco diferente) por medio de mysqli o PDO

haz el intento de inyectar en tu codigo... despues agrega esto al principio del script

Código (php) [Seleccionar]
foreach ($_POST as $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}


y vuelve a probar la inyeccion

la 2da opcion sería que leas esto ;-)
http://www.petefreitag.com/item/356.cfm (ejemplo basico)
http://devzone.zend.com/article/686 (ejemplo comparativo entre el metodo tradicional y con prepared statements en mysqli)
http://php.net/manual/en/pdo.prepared-statements.php (procesos almacenados y sentencias preparadas con PDO)

tienes tarea :P


Ojo por ojo, y el mundo acabará ciego.

mokoMonster

hehe wooow xD muy bien muchisimas gracias :D:D
me gusta la tarea xD
no la de mi escuela, pero la que tenga que ver con los ordenadores me fascina
:D

Muuuuchas gracias xD
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange