Ver Mensaje Individual
  #7 (permalink)  
Antiguo 14/08/2010, 13:39
Avatar de gengeru
gengeru
 
Fecha de Ingreso: agosto-2006
Mensajes: 9
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: llamada a un select para mostrar/ocultar un INPUT

Pues me tira el error en el momento en que "deshago la selección" (vuelvo atrás). Aún no conozco cómo funciona el evento onchange así que prefiero no especular con el pro qué. Yo lo he arreglado "incrustando" una orden por cada <select> tal y como has mencionado aunque eso es, precisamente, lo que quería intentar evitar.

Ah, lo de deshabilitar y habilitar el <input> es por evitar duplicar los registros en la base de datos pues, si no, también recibo errores al respecto. He dejado parte del php para que veáis como interactúa pero mejor no comentar nada al respecto para evitar que se migre el tema (ya os daré la brasa en otor momento :P).

He dejado un ejemplo de lo que ya me funciona aunque me parece, algo que has logrado evitar en tu propuesta, poco profesional y muy engorroso. Además, no sé hasta qué punto me puedo comer la memoria si intento manejar muchos campos de este tipo a la vez (estoy hablando de 20 o 30 campos a la vez en los que habría sentencias php y JS):

<tr>
<td class="descripcion" align="right">Reino:<em>(Obligatorio)</em></td>
<td>
<select name="NombreReino" onchange="if(this.value!=1){document.getElementByI d('nuevo1').style.visibility='hidden';}else{docume nt.getElementById('nuevo'+this.value).style.visibi lity='visible';document.getElementById('nuevo'+thi s.value).disabled=false;}">
<option value="">Selecciona un Reino</option>
Código PHP:
Ver original
  1. <?php
  2.          $db=mysql_connect('xxxxxxxx', 'xxxxxxxx', 'xxxxxxxx');
  3.          mysql_select_db ('parasitos');
  4.          $query = "SELECT NombreReino FROM taxonomia GROUP BY NombreReino ORDER BY NombreReino";
  5.          $result = mysql_query($query);
  6.          if($result == false)
  7.           {
  8.            user_error("La consulta falló: " . mysql_error() . "<br />\n$query");
  9.           }
  10.            elseif(mysql_num_rows($result) == 0)
  11.             {
  12.               echo "<p>Lo siento, la consulta no devolvió ninguna fila de datos.</p>\n";
  13.             }
  14.          else
  15.           {
  16.            while($query_row = mysql_fetch_assoc($result))
  17.             {
  18.              foreach($query_row as $value)
  19.               {
  20.                  echo'<option value='."$value".' />'.$value.'</option />';
  21.               }
  22.              echo "<br />\n";
  23.             }
  24.           }
  25.          ?>
<option value="1">Añadir Reino</option>
</select>
<input style="visibility:hidden" name="NombreReino" maxlength="30" size="30" disabled="disabled" id="nuevo1"></input >
</td>
</tr>
<tr>
<td align="right">Subreino:</td>
<td><input type="text" name="NombreSubreino" maxlength="30" size="30"></td>
</tr>
<tr>
<td align="right">Superfilo:</td>
<td><input type="text" name="NombreSuperfilo" maxlength="30" size="30"></td>
</tr>
<tr>
<td class="descripcion" align="right">Filo:<em>(Obligatorio)</em></td>
<td>
<select name="NombreFilo" onchange="if(this.value!=2){document.getElementByI d('nuevo2').style.visibility='hidden';}else{docume nt.getElementById('nuevo'+this.value).style.visibi lity='visible';document.getElementById('nuevo'+thi s.value).disabled=false;}">
<option value="">Selecciona un Filo</option>
Código PHP:
Ver original
  1. <?php
  2.          $db=mysql_connect('xxxxxxxxxxx', 'xxxxxxx', 'xxxxxxxx');
  3.          mysql_select_db ('parasitos');
  4.          $query = "SELECT NombreFilo FROM taxonomia GROUP BY NombreFilo ORDER BY NombreFilo";
  5.          $result = mysql_query($query);
  6.          if($result == false)
  7.           {
  8.            user_error("La consulta falló: " . mysql_error() . "<br />\n$query");
  9.           }
  10.            elseif(mysql_num_rows($result) == 0)
  11.             {
  12.               echo "<p>Lo siento, la consulta no devolvió ninguna fila de datos.</p>\n";
  13.             }
  14.          else
  15.           {
  16.            while($query_row = mysql_fetch_assoc($result))
  17.             {
  18.              foreach($query_row as $value)
  19.               {
  20.                  echo'<option value='."$value".' />'.$value.'</option />';
  21.               }
  22.              echo "<br />\n";
  23.             }
  24.           }
  25.         ?>
<option value="2">Añadir Filo</option>
</select>
<input style="visibility:hidden" name="NombreFilo" maxlength="30" size="30" disabled="disabled" id="nuevo2"></input>
</td>
</tr>
[........Y esto continua laaaaaaaaaargo y tendido............]

Adler, mil gracias de nuevo por marcarme el camino. Yo sigo indagando en el tema para mejorar este tostón, hasta luego!