Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-11-2004
jostrix jostrix is offline
Miembro
 
Registrado: ago 2003
Posts: 21
Poder: 0
jostrix Va por buen camino
Unhappy 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>
Responder Con Cita
  #2  
Antiguo 01-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:
$rs mysql_db_query('VIDEODROMO''select last_insert_id()');
$row mysql_fetch_row($rs);
$valorId $row[0]; 
Por último, para obtener lo que quieres puedes usar la consulta:

Código SQL [-]
show table status like "socios"

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:
$rs mysql_db_query('VIDEODROMO''show table status like "socios"');
$row mysql_fetch_array($rs);
$valorId $row['Auto_increment']; 
// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:03:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi