• Lunes 23 de Diciembre de 2024, 01:13

Autor Tema:  Una Díficil Pa' Mi  (Leído 934 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Una Díficil Pa' Mi
« en: Miércoles 7 de Marzo de 2007, 23:32 »
0
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 :whistling:  :whistling: que pasa?,  :P 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 :P ), 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? :whistling:  :P

Gracias Chao.
El pasado son solo recuerdos, el futuro son solo sueños

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Una Díficil Pa' Mi
« Respuesta #1 en: Jueves 8 de Marzo de 2007, 14:07 »
0
Hoy, a eso de las 6:30 de la mañana, iba yo muy tranquilo al baño (como lo hago todos los días después de bañarme, desayunar y lavar la ropa interior), se me ocurrio, RadicalEd tú si eres bruto, pa' que consultas el último ingresado si ya hay una variable que tiene ese valor.

Entonces que paso que en vez de hacer esto:

//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"];
}

Hice esto:

$p_maximo = $vr_act;

Y wala ahora si funciono :smartass:


Bye Se Cuidan!!!!!
El pasado son solo recuerdos, el futuro son solo sueños