Foros del Web » Programando para Internet » PHP »

Problema con tamaño de base de datos.

Estas en el tema de Problema con tamaño de base de datos. en el foro de PHP en Foros del Web. Hola a todos: Estoy trabajando en una "base de datos", que consta de unos 1500 artículos. Como ven es gigantesca ! y mi sitio se ...
  #1 (permalink)  
Antiguo 07/01/2006, 11:43
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 14 años, 2 meses
Puntos: 16
Pregunta Problema con tamaño de base de datos.

Hola a todos:

Estoy trabajando en una "base de datos", que consta de unos 1500 artículos. Como ven es gigantesca ! y mi sitio se demora demasiado en cargarla ya que se genera una copia por cada fila nueva que cree

(trabajo con la creción automática de filas, las cuales tienen un SELECT que seleccionarlo aparece automaticamente el nombre y valor del articulo en otros INPUT)

Es por esta razón que debo crear una "base de datos" de distinto nombre para cada select.

Digo "base de datos" en comillas ya que es como una base de datos. Me explico:

Trabajo con el siguiente JavaSCRIPT


<script>
function cambio$i( ITEM ) {
switch ( ITEM )
case 'D-912-B': {
document.cotizacion['articulo[$i]'].value = 'ESTE ES EL ARTICULO D-912-B';
document.cotizacion['valor[$i]'].value = '$ 150'}
break;
</script>


si se fijan el CASE seria la OPTION del select y en articulo[$i] el $i indica el numero de cuantas filas se crean (por lo que debo hacer una "base" para cada fila. Y como cada "base" es de unos 1500 articulos se me llena el block de notas y se demora mucho en cargar.


Ahora ... intente poner la "base" en un JS separada de mi web. Pero cuando la llamo desde el código de mi web, el $i no reacciona por lo que los select tampoco ni nada de eso !!

(Queda asi:
document.cotizacion['valor[$i]'].value = '$ 150'},
y deberia ser asi :
document.cotizacion['valor[Nº]'].value = '$ 150'} ---> donde Nº es la cantidad de filas que cree.)
__________________
Adios ...!!!!
  #2 (permalink)  
Antiguo 07/01/2006, 11:45
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 14 años, 2 meses
Puntos: 16
Por lo que mi pregunta seria si es que se puede hace el *.JS aparte del codigo, con toda la base de datos (si se puede) pero que reaccione tambien con el PHP de el sitio. Y si eso mejoraría la velocidad del sitio
__________________
Adios ...!!!!
  #3 (permalink)  
Antiguo 07/01/2006, 14:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero ... (para aclararnos)

Tu desde PHP generas un gigantesco código Javascript con toooooodoooosss esos "1000 y tantos" registros para entregarlo -todo- al cliente para luego operar en el ?

Si es así .. no hay "PC de escritorio" ni navegador que te aguante eso ..

No entendí muy bien para que haces ese proceso (no quieres recargar la página tal vez?). Bueno .. en ese caso podrías usar las técnicas de "Ajax" que sirven entre otras cosas para "pedir" un dato al servidor de forma transparente y sin recargar la página (como sucedería si usas -sólo- PHP).

Con "Ajax" tu irías pidiendo el dato al servidor según lo requieras, NUNCA enviarías todo al "cliente". El resto lo usarís tal cual con tus actuales rutinas DHTML/Javascript.

Disponemos en forosdelweb.com un foro para tal fin (AJAX). Revisalo.

Un saludo,
  #4 (permalink)  
Antiguo 07/01/2006, 14:23
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 14 años, 2 meses
Puntos: 16
ok gracias... pero lo que pasa es que como se me van generando filas (los nombres de los select e inputs de esta deben cambiar de nombre, ya que si no lo hacen no me funciona la operacion de relleno automatico de los input de la misma fila) ...
__________________
Adios ...!!!!
  #5 (permalink)  
Antiguo 07/01/2006, 14:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y por qué no usas definición de esos elementos del formulario como array:

<input type="text" name="nose[]">

No sé que tan dificil será aplicarlo en tus funciones javascirpt .. pero es un tema que deberías plantearlo en el foro de Javascript.

Cara a PHP de todo lo que ahí generes dinámicamente con javascript recibiras un array (o arrays) que puedes recorrer fácilmente.

Un saludo,
  #6 (permalink)  
Antiguo 07/01/2006, 15:14
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 14 años, 2 meses
Puntos: 16
De acuerdo eso ya lo hice =)

Mira aca te dejo el codigo para que veas mas menos de lo que hablo...

Código HTML:
<FONT COLOR=000000 SIZE=4 FACE=Arial>
 Seleccione el número de articulos que son
</FONT>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="get"> 
<select name="filas"> 
<? for($i=1; $i<=20; $i++){ 
echo "<option value='".$i."'>".$i."</option>";
}?> 
</select> 
<input type="hidden" name="crear" value="tabla"> 
<input type="submit" value="crear"> 
</form>

<table width="700" border="1" cellpadding=2 align="center" cellspacing=2><tr><td>
<form name="cotizacion" method="post" action="email.php" onSubmit="return chkcotizacion()">
 <input type="hidden" name="iva" value="1.19" id="iva">
 <table border="0" width=100% cellpadding=0 cellspacing=0>
  <tr>
   <td align=center colspan=2>
     <font face="Verdana, Arial, Helvetica, sans-serif" color="0099ff" size=3>
     <b>DESTINATARIO:</b><br><input type="text" name="email" size=25 value="EMAIL DESTINO"><br><br>
   </td>
  </tr>
  <tr>
   <td align=center colspan=2 width=100%>
     <table border=1 cellpadding=0 cellspacing=0 bordercolor=555555 width=680>
      <tr>
       <td align=center width=80>
        <font face="Arial, Helvetica, sans-serif" color="000000" size=3><b>CANT.</b></font>
       </td>
       <td align=center width=100>
        <font face="Arial, Helvetica, sans-serif" color="000000" size=3><b>ITEM</b></font>
       </td>
       <td align=center width=220>
        <font face="Arial, Helvetica, sans-serif" color="000000" size=3><b>ARTICULO</b></font>
       </td>
       <td align=center width=140>
        <font face="Arial, Helvetica, sans-serif" color="000000" size=3><b>V/UNIT.</b></font>
       </td>
       <td align=center width=140>
        <font face="Arial, Helvetica, sans-serif" color="000000" size=3><b>TOTAL</b></font>
       </td>
      </tr>
     </table>
<? 
if(isset($_GET["crear"])){ 
    echo '<table border="0" cellpadding="0" cellspacing="0" width="680">'; 
   for($i=1; $i<=$_GET["filas"]; $i++){ 
        echo "
<script>
function cambio$i( ITEM ) {
  switch ( ITEM )  {
    case 'A-098': {
      document.cotizacion['articulo[$i]'].value = 'ARTICULO A-098';
      document.cotizacion['valor[$i]'].value = '7311'}
      break;
    case 'A-099': {
      document.cotizacion['articulo[$i]'].value = 'ARTICULO A-099';
      document.cotizacion['valor[$i]'].value = '8824'}
      break;
  }
}
</script>
      <tr> 
       <td align=center width=80><input type=text name=cantidad[$i] id=cantidad[$i] size=5></td> 
       <td align=center width=100>
        <select type=text name=item[$i] id=item[$i] onChange='cambio$i(this.value)'>
          <option value='ITEM' selected>ITEM</option>
          <option value='A-098'>A-098</option>
          <option value='A-099'>A-099</option>
        </select></td> 
       <td align=center width=220><textarea cols=22 rows=2 name=articulo[$i] id=articulo[$i]></textarea></td> 
       <td align=center width=140>$ <input type=text name=valor[$i] id=valor[$i] size=10 onKeyUp=\"javascript: document.getElementById('total[$i]').value = document.getElementById('valor[$i]').value * document.getElementById('cantidad[$i]').value;\" onMouseMove=\"javascript: document.getElementById('total[$i]').value = document.getElementById('valor[$i]').value * document.getElementById('cantidad[$i]').value;\"></td> 
       <td align=center width=140>$ <input type=text name=total[$i] id=total[$i] size=10></td> 
      </tr>"; 
    } 
?>

----------------------------------------------

SE GENERA UNA FILA DEPENDIEDO DEL USUARIO Y A SU VEZ EN ESA FILA SE GENERA ESTO

UN INPUT CON LA CANTIDAD
UN SELECT CON LOS ITEM
UN TEXTAREA QUE SE COMPLETA SOLO AL SELECCIONAR EL ITEM
UN INPUT DE VALOR QUE SE COMPLETA SOLO AL SELECCIONAR EL ITEM
UN INPUT DE TOTAL QUE MULTIPLICA LA CANTIDAD POR EL VALOR

---------------------------------------------

Es por eso que a su vez se genera el script tantas veces como filas se creen (ahora puse 2 articulos pero son 1500) y debe ser asi ya que el select completa automaticamente los campos de ARTICULO y VALOR y si conservo solo un nombre completara solamente los de un select y no los demas ... 


Creo que ahi quedo mejor planteado 

Muchas Gracias.-
Pablo Araya.-




__________________
Adios ...!!!!
  #7 (permalink)  
Antiguo 09/01/2006, 05:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como te comenté antes ... en lugar de pre-cargar en arrays de javascript todos esos productos para que al seleccionarlos se vea su descripción, precio y otros detalles del producto. Lo que podrías usar son las técnicas de "Ajax" para traerte del servidor en el momento que selecciones uno de esos productos sus datos anexos .. pero sólo en ese momento. Así no pre-cargarías todos los productos que puedan existir .. incluso el hecho de tener que pedir "cuantos productos va a ingresar" no sería necesario, pues dinámicamente tu sólo "añades" productos (y las "filas" se crean automáticamente).

Si vas a usar Ajax .. te recomiendo revisar el foro de "Ajax" y usar (ya que vas a trabajar en PHP) la classe "XAJAX" (http://www.xajaxproject.org/) que te facilitará la vida con este tema.

Un saludo,
  #8 (permalink)  
Antiguo 09/01/2006, 19:21
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 14 años, 2 meses
Puntos: 16
Uhhh Dale Thxs
__________________
Adios ...!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:03.