Hola chicos de SoloCodigo, como están???, bien, pos yo no
A ver les cuento la historia de mi vida, yo nací por alla en el 83, no no no no, esto no es, ese es otro problema, ahh es que se me olvida; ese sera mi secreto hasta la muerte.
Ahora si en serito que pasa?, Pos estoy trabajando sobre un sistema B2B ya hecho por otra persona que maneja cierta DB y unas tablas, las cuales me toco modificar un poco (afecta bastante la modificación), a ver explico:
1.) Existe una tabla X cuyo campo Llave Primaria era autoincrement.
2.) Yo modifique la tabla y le agregue un campo de +
3.) Yo modifique la tabla y quite que el campo Llave primaria no fuera autoincrement, y lo deje de insercción manual, que por que?, pues por que toco sino no hubiera agregado el campo anterior.
4.) Lo feo se pone en es este código que agregue en el script original:<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>
HTML </td></tr><tr><td id='CODE'><!--html1-->/*------------------------------------------------------------
MODIFICACION PARA AGREGAR LA REPOSICION CON LOS DATOS DE 'ENVIA'
--------------------------------------------------------------*/
$cantidad_minima=100;
//UTILIZAMOS LA SESION PARA SELECCIONAR EL CLIENTE
echo $query_ses = "SELECT * FROM tbsesiones WHERE ses LIKE '".$sesion."'";
$result_ses = mysql_query($query_ses);
while ($row=mysql_fetch_array($result_ses))
{
$val_conus = $row["conus"];
$cli_nom = $row["nom"];
}
echo "<
br>";
//SE USARA $val_conus PARA MANEJAR EL C0NSECUTIVO
echo $query_cli = "SELECT * FROM tbclientes_db WHERE con=".$val_conus;
$result_query = mysql_query($query_cli);
while ($row=mysql_fetch_array($result_query))
{
$conse = $row["fk_idconse"];
$cli_nom = $row["nom"];
}
echo "<
br>";
echo $query_select = "SELECT * FROM tbcode_consecutivo WHERE idconse=".$conse;
$resulta = mysql_query($query_select);
//SE AVERIGUA EL VALOR ACTUAL DEL CONSECUTIVO
while ($row=mysql_fetch_array($resulta))
{
$centro = $row["nombre"];
$vr_act = $row["vr_actual"];
$vr_fin = $row["vr_final"];
echo "<
br>";
echo $query_save = "INSERT INTO tbsolicitud_db VALUES ('$vr_act','$p_sesion','$p_con_usuario','$p_conus',
'$p_conus','',0,'$p_dire','$p_tele','$p_correo','$f_ciu',
'$p_depe',now(),now(),now(),now(),0,0,'0','','',0)";
//GUARDAMOS
if ($vr_fin >= $vr_act+1)
{
//echo "<
br>".$vr_fin." - ".$cantidad_minima." = = ".$vr_act."<
br>";
if ($vr_fin-$cantidad_minima == $vr_act)
{
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
//dirección del remitente
$headers .= "From: Portal <
portal@x.com.co>\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To:
jeje@x.com.co\r\n";
$consecutivo_portal = "<
br>Le quedan ".$cantidad_minima." para sobrepasar el límite de facturas.<
br>";
$consecutivo_portal .= "<
table border='
0' cellspacing='
2' cellpadding='
2'>
<
tr>
<
td>FAVOR PEDIR A <
/td>
<
td><
img src='
http://www.supertiendaonline.com/plantilla/images/logo_envia.jpg' border='
0'><
/td>
<
td>NUEVA CANTIDAD DE CONSECUTIVO<
/td>
<
/tr>
<
/table>";
mail("x@x.com.co","Consecutivo Portal",$consecutivo_portal,$headers);
}
$result_save=mysql_query($query_save);
}
//SE ACTUALIZA LA TABLA tbcodeconsecutivo PARA IR SUBIENDO EL VALOR DEL CONSECUTIVO
$vr_act = $vr_act + 1;
echo "<
br>";
echo $query_update = "UPDATE tbcode_consecutivo SET vr_actual="
.$vr_act." WHERE idconse=".$conse;
//SE VERIFICA QUE EL VALOR ACTUAL NO SEA MAYOR QUE EL LIMITE PERMITIDO
if ($vr_fin > $vr_act)
{
$result_update=mysql_query($query_update);
}
else
{
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
//dirección del remitente
$headers .= "From: Portal <
portal@x.com.co>\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To:
jeje@x.com.co\r\n";
$consecutivo_portal = "<
br>Ha llegado al limite de recibos<
br>";
$consecutivo_portal .= "<
table border='
0' cellspacing='
2' cellpadding='
2'>
<
tr>
<
td>FAVOR PEDIR A <
/td>
<
td><
img src='
http://www.supertiendaonline.com/plantilla/images/logo_envia.jpg' border='
0'><
/td>
<
td>NUEVA CANTIDAD DE CONSECUTIVO<
/td>
<
/tr>
<
/table>";
mail("x@x.com.co","Finalización Consecutivo Portal",$consecutivo_portal,$headers);
}
}
echo "<
br>";
//SELECT MAX(con) FROM tbsolicitud_db
echo $query_maximo = "SELECT * FROM tbsolicitud_db WHERE con=(SELECT MAX(con) FROM tbsolicitud_db)";
$result_maximo = mysql_query($query_maximo);
while ($row=mysql_fetch_array($result_maximo))
{
$p_maximo = $row["con"];
}
//ESTA SOLA PARTE HACIA TODO LO QUE YO MODIFIQUE ARRIBA ARRIBA
/*$query = "INSERT INTO tbsolicitud_db VALUES (null,'$p_sesion','$p_con_usuario',
'$p_conus','$p_conus','',0,'$p_dire','$p_tele','$p_correo',
'$f_ciu','$p_depe',now(),now(),now(),now(),0,0,'0','','',0)";
$result = MYSQL_QUERY($query);
if ($result == 0)
{
mysql_close();
$errmsg="Error Creando la Licitación";
malo($errmsg);
}
/*AQUI CAPTURAMOS EL VALOR DEL ULTIMO INSERT
//Y SE LO ASIGNAMOS A 'num_licitacion' EN LA LINEA 394
//parent.location = ("./resumen_rep.php?num_licitacion=<?echo "$p_num_licitacion"?>");*/
/*$p_maximo = MYSQL_INSERT_ID();*/
//HASTA AQUI
echo "<
br>";
echo $p_num_licitacion = $p_maximo;
/*HASTA AQUI LLEGA LA MODIFICACION
--------------------------------------------------------------*/
<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
A ver explico un poquito; antes lo único que se hacia era agregar el dato dentro de la tabla 'tbsolicitud_db' y se sabia por medio de 'MYSQL_INSERT_ID()', cual fue el último registro insertado.
Qué hice yo?; Cree una tabla 'tbcode_consecutivo' la cual manejara los consecutivos de la requisición por empresa, que por que asi; por que ENVIA manejara unos códigos de barras y para cada empresa el consecutivo debe ser diferente, no puede ser el mismo.
POR EJEMPLO:
Empresa Valor Inicial Valor Final
X 1 10
Y 11 20
Z 21 30
Entonces cuando la empresa 'X' llegue a 10 esta no podra pasar a 11, en la tabla 'tbcode_consecutivo' yo debere asignar el sgte valor que me de la empresa 'ENVIA' para eso, y no podra estar entre el rango de las empresas 'Y' y 'Z', ese valor que que tomo de 'Valor Inicial' se lo asigno al campo Llave Primaria donde antes se hacia por autoincrement y lo inserto manual.
Listo el problema viene en esta línea:
SELECT * FROM tbsolicitud_db WHERE con=(SELECT MAX(con) FROM tbsolicitud_db)
por que, osea, esta me tomara el último valor ingresado en la tabla 'tbsolicitud_db' y pasara el campo Llave primaria a la variable '$p_maximo', del último registro ingresado vuelvo y aclaro, que pasa, pues al principio todo era hermoso, el paraiso ADAN - EVA y los animalitos (ahhh otra vez me sali del contexto ), no ahora si de verdad, al principio comence a probar con la empresa 'Z', osea, que se estában guardando datos del 21 al 30, después me pase a probar con la empresa 'X' y aquí vino el problema.....
Cuando hago la consulta 'SELECT * FROM tbsolicitud_db WHERE con=(SELECT MAX(con) FROM tbsolicitud_db)', esta toma el dato último de la tabla Ejemplo en el caso de que se haya ingresado por 'Z' el 23, y lo va a asignar a la variable '$p_maximo', sabiendo que el último dato en la empresa 'X' Ejemplo fue 14.
Nota Aclaratoria: El valor del consecutivo si se esta ingresando correctamente aca:
INSERT INTO tbsolicitud_db VALUES ('$vr_act','$p_sesion','$p_con_usuario','$p_conus','$p_conus',
'',0,'$p_dire','$p_tele','$p_correo','$f_ciu','$p_depe',now(),
now(),now(),now(),0,0,'0','','',0)";
y guarda el dato 14.
Que pasa?, pues me toca devolverme una forma, osea, antes de decir grabar y entrar al formulario que hace lo del script de arriba y volver a decir grabar, para que me tome el dato 14 y si me haga correctamente el 'SELECT * FROM tbsolicitud_db WHERE con=(SELECT MAX(con) FROM tbsolicitud_db)'.
Alguien sabe como puedo remediar esto?
Alguna Solución?
La más importante ¿ME ENTENDIERON?
Gracias Chao.