FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Que estoy Haciendo mal
La bronca de este codigo es q a segun me registra mis variables en mi BD, pero al consultar esta me dice q las tablas q utilizo (SOCIOS, Titulares:Adicionale) estan vacias alguien me puede ayudar, ya le busq y namas no le encuentro...
<HTML> <?php session_start(); function EANCorrecto($Numero){ $sum=0; $digito=0; $N= strlen($Numero); for($i=1;$i<=$N;$i++){ if (($i % 2)==0) { if ($N==12) { $sum=$sum+$Numero[$i-1]*3;} else { $sum=$sum+$Numero[$i-1];} } else { if ($N==12) { $sum=$sum+$Numero[$i-1];} else { $sum=$sum+$Numero[$i-1]*3;} } } if ($sum>99) { $extra=($sum % 100); $digito=10-($extra % 10); } else {$digito=10-($sum % 10);} if ($digito==10) {$digito=0;} $Numero= $Numero . $digito; return $Numero; } ?> <body> <? mysql_connect("localhost",$_SESSION['Usuario'],$_SESSION['Password']); $ValorId=mysql_db_query("VIDEODROMO","Select Last_Insert_ID() from socios"); // Obtengo el valor del Ultimo no_de Socio, y lo complemento a 6 digitos si es Necesario if ($ValorId=="") {$ValorId="000001";} else { $NuevoReg= $ValorId + 1; $tam=strlen($NuevoReg); $nuevovalor=""; $ValorId="000000"; for($i=0;$i<=5-$tam;$i++){ $nuevovalor=$nuevovalor . $ValorId[$i]; } $ValorId= $nuevovalor . $NuevoReg; } // Agrego un digito predifinido indicando el tipo de tabla y llamo a la funcion EAN para determinar el digito de Verificacion y tener mi EAN8 $idSocio=EANCOrrecto("3".$ValorId); //Procedo a Insertar los datos a mis respectivas tablas. MI EAN8 y los DATOS RECIBIDOS DE UN FORMULARIO $sSQL="Insert into socios(id_Socio,No_Socio,calle,No_Int,No_Ext,Colonia,DelegMunicipio,Estado,Identificacion)"; $sSQL= $sSQL. "Values('$idSocio',NULL,".$_POST['Calle'].",".$_POST['No_Int'].",".$_POST['No_Ext'].",".$_POST['Colonia'].",".$_POST['DelegMunicipio'].",".$_POST['Estado'].",".$_POST['Identificacion'].")"; mysql_db_query("VIDEODROMO",$sSQL); $sSQL="Insert into Titulares_Adicionales(id_Titular_Adicional,Id_Socio,Ap_Paterno,Ap_Materno,Nombre,Telefono_1,Telefono _2,Email,Fecha_Nacimiento,Status,Quien)"; $sSQL= $sSQL . " Values(NULL,'$idSocio',".$_POST['Ap_Paterno'].",".$_POST['Ap_Materno'].",".$_POST['Nombre'].",".$_POST['Telefono1'].",".$_POST['Telefono2'].",".$_POST['Email'].",".$_POST['Fecha'].",1,1)"; mysql_db_query("VIDEODROMO",$sSQL); ?> </body> </HTML> |
#2
|
||||
|
||||
La primera cosa es pedirte que formatees bien el código porque es muy difícil leerlo así- usa las etiquetas php.
En lo que he visto de tu código hay por lo menos dos puntos que no están bien. El primero es que last_insert_id() siempre te va a devolver 0. Esta función no te devuelve el próximo valor del campo auto incremental, te devuelve el último valor autoincremental que el servidor haya asignado en una operación INSERT, que no es lo mismo. Y este valor depende de la conexión- si dos clientes realizan inserciones simultáneas a una tabla o distintas tablas que tengan campos auto incrementales, cada cliente tendrá un número distinto según la inserción que hayan hecho. Por ello, cuando recién te has conectado, como es tu caso, last_insert_id() te devuelve 0 pues en esa conexión no has realizado ninguna inserción. Por otra parte, aun cuando una consulta como last_insert_id() devuelva un sólo valor, esto no significa que puedes recoger este valor directamente del resultado de mysql_db_query. En consultas que devuelven registros, mysql_db_query siempre regresa una referencia al conjunto de registros, los cuales debes recorrer usando mysql_fetch_row o similar. En este caso debiera ser: Código PHP:
que te devolverá un registro con información de la tabla socios. Una columna de este registro es el campo que buscas: Código PHP:
|
|
|
|