Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2012, 11:50
Avatar de kimmy
kimmy
 
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
El for me agrega una fila vacia en la BD

Hola amigos:

Tengo un formulario en donde se pueden seleccionar unas frases (etiquetas) que ya existen y además se pueden agregar nuevas. Para seleccionar las que existen utilizo una lista de selección múltiple en donde puedo agregar varias. El problema es que cuando almaceno las de esa selección me las guarda pero me agrega una fila en blanco y no se porque. Este es el formulario:

Código PHP:
Ver original
  1. <script>
  2. function agregarFila2(obj){
  3.         $("#cant_campos2").val(parseInt($("#cant_campos2").val()) + 1);
  4.         var oId = $("#cant_campos2").val();
  5.         var etiquetaPlan = $("#txtEtiquetaPlan").val();
  6.  
  7.         var strHtml1 = "<td>" + etiquetaPlan + '<input type="hidden" id="txtEtiquetaPlan' + oId + '" name="txtEtiquetaPlan[]' + oId + '" value="' + etiquetaPlan + '"/></td>';
  8.         var strHtml2 = '<td><img src="../../images/delete.png" width="16" height="16" alt="Eliminar" onclick="if(confirm(\'Realmente desea eliminar este detalle?\')){eliminarFila2(' + oId + ');}"/>';
  9.         strHtml2 += '<input type="hidden" id="hdnIdCampos2_' + oId +'" name="hdnIdCampos2[]" value="' + oId + '" /></td>';
  10.         var strHtmlTr = "<tr id='rowDetalle2_" + oId + "'></tr>";
  11.         var strHtmlFinal = strHtml1 + strHtml2;
  12.         //tambien se puede agregar todo el HTML de una sola vez.
  13.         //var strHtmlTr = "<tr id='rowDetalle_" + oId + "'>" + strHtml1 + strHtml2 + strHtml3 + strHtml4 + strHtml5 + strHtml6 +"</tr>";
  14.         $("#tbDetalle2").append(strHtmlTr);
  15.         //si se agrega el HTML de una sola vez se debe comentar la linea siguiente.
  16.         $("#rowDetalle2_" + oId).html(strHtmlFinal);
  17.         return false;
  18.     }
  19.     function eliminarFila2(oId){
  20.         $("#rowDetalle2_" + oId).remove(); 
  21.         return false;
  22.     }
  23.  
  24.     function cancelar2(){
  25.         $("#tbDetalle2").html(""); 
  26.         return false;
  27.     }
  28.  
  29. </script>
  30.     <form action="plan_add.php" name="form2" enctype="multipart/form-data" id="form2" method="post" onSubmit="return validar(this)" >
  31.         <input type="hidden" id="num_campos" name="num_campos" value="0" />
  32.         <input type="hidden" id="cant_campos" name="cant_campos" value="0" />
  33.         <input type="hidden" id="num_campos2" name="num_campos2" value="0" />
  34.         <input type="hidden" id="cant_campos2" name="cant_campos2" value="0" />
  35.  
  36. <table>
  37.         <tr>
  38.             <td>Etiquetas Actuales:</td>
  39.             <td><select name="select3[]" size="1" multiple id="select3">
  40.             </select>
  41.             </td>
  42.         </tr>
  43. <tbody>
  44. <fieldset>  
  45.  <tr>
  46.  <th colspan="2">Etiquetas del Plan</th>
  47.  </tr>  
  48.  <tr>
  49.  <td>Nombre Etiqueta:</td>
  50.  <td><input name="txtEtiquetaPlan[]" id="txtEtiquetaPlan"  type="text" class="textbox"  /></td>
  51.  </tr>
  52. </fieldset>
  53.  <tr>
  54.     <td align="center"></td>
  55.     <td align="center">
  56.     <div class="button_div">    
  57.     <input type="button" id="btnAgregar" name="btnAgregar" value="Agregar Etiqueta" class="buttons_aplicar" onClick="agregarFila2(document.getElementById('cant_campos2'));" />
  58.     </div></td>
  59.     </tr>
  60.     <tr>
  61.     <td colspan="2">
  62.     <fieldset class="fieldset">
  63.              <legend class="legend">
  64.             Etiqueta
  65.            </legend>
  66.             <div class="clear"></div>
  67.             <div id="form3" class="form-horiz">
  68.             <table width="100%" id="tblDetalle2" class="listado">
  69.             <thead>
  70.             <tr>
  71.                 <th>Etiquetas</th>
  72.                 <th>Accion</th>
  73.             </tr>
  74.             </thead>
  75.             <tbody id="tbDetalle2"></tbody>
  76.             </table>
  77.             </div>
  78.             </fieldset>
  79.             </td></tr>
  80. </tbody>
  81. </table><!-- FIN TABLA 1_B -->
  82. </form>

aqui el archivo donde guardo:

Código PHP:
Ver original
  1. $id_campos2 = $_POST['hdnIdCampos2'];
  2. $num_campos2= $_POST['num_campos2'];
  3. $cant_campos2= $_POST['cant_campos2'];
  4. $etiq = $_POST['select3'];
  5. $etiqueta_plan = $_POST['txtEtiquetaPlan'];
  6.  
  7. $contador = count($_POST['select3']);
  8.  
  9. for($i=0;$i<=$contador;$i++) {
  10.       $sql_ins1 = mysql_query("INSERT INTO detalle_etiquetas (id_plan, nombre_etiqueta) VALUES ('$id_plan', '$etiq[$i]')") or die ("Error en Insert : ".mysql_error());
  11. }
  12.  
  13. $numRows2 = count($id_campos2);
  14.  
  15. if ($id_campos2 != 0){
  16.  
  17.     for($i=0; $i<$numRows2; $i++) {
  18.           $sql_ins2 = mysql_query("INSERT INTO detalle_etiquetas (id_plan, nombre_etiqueta) VALUES ('$id_plan', '".$_POST['txtEtiquetaPlan'][$i]."')") or die ("Error en Insert : ".mysql_error());
  19.     }

que estoy haciendo mal???

Gracias
__________________
Caminando con el corazón partío