Foros del Web » Programando para Internet » PHP »

El for me agrega una fila vacia en la BD

Estas en el tema de El for me agrega una fila vacia en la BD en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/12/2012, 11:50
Avatar de 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
  #2 (permalink)  
Antiguo 03/12/2012, 11:59
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: El for me agrega una fila vacia en la BD

Ya encontré que estaba mal. Era en el for. Lo tenía así:

Código PHP:
Ver original
  1. for($i=0;$i<=$contador;$i++) {
  2.       $sql_ins1 = mysql_query("INSERT INTO detalle_etiquetas (id_plan, nombre_etiqueta) VALUES ('$id_plan', '$etiq[$i]')") or die ("Error en Insert : ".mysql_error());
  3. }

y funcionó quitandole el igual. Asi:

Código PHP:
Ver original
  1. for($i=0;$i<$contador;$i++) {
  2.       $sql_ins1 = mysql_query("INSERT INTO detalle_etiquetas (id_plan, nombre_etiqueta) VALUES ('$id_plan', '$etiq[$i]')") or die ("Error en Insert : ".mysql_error());
  3. }
__________________
Caminando con el corazón partío

Etiquetas: bd, fila, formulario, html, mysql, sql, tabla, vacias
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 21:38.