PHP - recorrer un arreglo e insertar a la base

 
Vista:
sin imagen de perfil

recorrer un arreglo e insertar a la base

Publicado por javier (30 intervenciones) el 10/01/2014 22:09:58
hola estimados gracias por leer , tengo un pequeño inconveniente estoy recorriendo una tabla html con jquery y guardos sus datos en array que luego envio por ajax y lo recibo por $_POST en php y estoy intentado recorrer el array e insertar todos sus valores a una tabla de mysql cosa que se me ha complicado manipular el array espero me puedan brindar alguna idea
Saludos Cordiales
Script para recorrer la tabla html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function fn_array(){
 
 //$('#guardar').live('click',function(){
    $("#guardar").click(function(){
    var $objCuerpoTabla=$("#grilla").children().prev().parent();
         $objCuerpoTabla.find("tbody tr").each(function(){
 
               objDatosColumna= Array();
 
                var cantidad = $(this).find('td').eq(0).html();
                var descripcion = $(this).find('td').eq(1).html();
                var valorUnit =$(this).find('td').eq(2).html();
                var valorTot =$(this).find('td').eq(3).html();
                    $(this).css("background-color", "#ECF8E0");
 
                valor = Array(cantidad,descripcion,valorUnit,valorTot);
                objDatosColumna.push(valor);
 
 
                   // $.post("archivo.php", {"objDatosColumna":objDatosColumna}, function(objDatosColumna){ alert(data); },"json")
 
            $.ajax({
                    async: false,
                    type: "POST",
                    url: "archivo.php",
                    data: {
                            objDatosColumna: objDatosColumna
                            },
                    success: function(data) { if(data!="")
                    alert(data);
                    }
                });
 
            });
 
 
        });
 
 
 
}
Script PHP para obtener el array e insertar a la base de datos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
 
$lista_nombre[] = $_POST["objDatosColumna"];
 
foreach ($lista_nombre as $value) {
 
	//aqui intento hacer el insert a la base 
    $sql = insert into detall_fact(cant,descripcion,valorUnit,valorTot) VALUES(".$value[cantidad]., .$value[descripcion].,.$value[valorUnit].,.$value[valorTot].")
 
 
}
 
?>

porfa indiquemen que estoy haciendo mal.:neurotico
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

recorrer un arreglo e insertar a la base

Publicado por xve (6935 intervenciones) el 11/01/2014 08:44:02
Hola Javier, creo que te estas liando... yo lo he aria, seria enviar todos los valores del formulario en método post mediante ajax... algo mas sencillo de lo que tu has realizado...
1
2
3
$.post("archivo.php", $("#idFormulario").serialize(), function(data){
    alert(data);
});

y en el archivo.php, algo como:
1
2
$sql="INSERT INTO detall_fact (cant,descripcion,valorUnit,valorTot) VALUES
(".$_POST["cant"].", '".$_POST["descripcion"]."', ".$_POST["valorUnit"].", ".$_POST["valorTot"].")";

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

recorrer un arreglo e insertar a la base

Publicado por Javier (30 intervenciones) el 14/01/2014 14:18:28
Gracias XVE por tu gran ayuda, y disculpa que abuse de tu amabilidad pero me surgio un pequeño problema he estado revisando el codigo que me indicastes pero no me trae nada al momento de obtener los datos por $_POST he intentado de ponerle a los input text los parentesis rectos [ ] porque he leido que hay se crea un array de los datos ingresdos pero al parecer no guarda nada, y de esa maner a obtener el array por $_POST["cant"]

<input type=text name=cant[ ] id="cant" />
<input type=text name=cant[ ] id="descripcion" />
<input type=text name=cant[ ] id="valorUnit" />
<input type=text name=cant[ ] id="valorTot" />

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

recorrer un arreglo e insertar a la base

Publicado por xve (6935 intervenciones) el 14/01/2014 15:28:33
Hola Javier, recuerda que tienes que poner el id en el formulario... en el ejemplo que te muestro, tiene el id: idFormulario

te pido disculpas, ya que no te lo comente... si no te funciona, nos podrías mostrar el formulario?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

recorrer un arreglo e insertar a la base

Publicado por Alexi (30 intervenciones) el 14/01/2014 23:19:21
hola claro xve cambie en la parte que dice "idformulario" por el id de mi formulario que utilizo, te explico un poco tengo dos formularios , uno para ingresar los datos de la cabecera de la factura y otro para el detalle y tengo un boton agregar y otro guardar entonces al momento de dar click en guardar quiero enviar la informacion de los dos formularios a insertar a la base y en el segundo formulario llamo a una funcion javascript que me recorre todas las filas de la tabla y las guarda en array que paso por ajax a php pero

aqui te pongo el codigo del formulario q estoy utilizando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<div id="contenedor">
            <H2 align="center">Ingresos de Articulos</H2>
            <br/>
<div style="border-radius:5px; background-color:#EAE6E3;  font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif; color:#000000;">
 
                <br/>
<form action="javascript: fn_agregar();" method="post" id="frm_usu">
 
    <table class="formulario">
    <?php
        //Si llega el parametro error y no viene vacio
        if( isset( $_POST['error'] ) && $_POST['error'] != '' ) {
    ?>
        <tr>
            <td colspan="2" >
                <font color="red">
                <ul>
                    <?php
                        echo $_POST['msgs_error'];
                    ?>
                </ul>
                </font>
            </td>
        </tr>
    <?php
        }
    ?>
 
 
    <tr>
        <td><label for="tx_nombre">No. Factura</label></td>
        <td>
            <input type="text" name="tx_orden" enable="false" id="tx_orden"  value='' size="35"  maxlength="30" readonly />
        </td>
        <td width="90px"><label for="tx_nombre">Fecha Factura</label></td>
        <td>
            <input type="text" name="tx_fecha" id="tx_fecha" value='' size="25"  maxlength="30" />
        </td>
    </tr>
   <tr>
        <td><label for="tx_proveedor" size="50">Proveedor</label></td>
        <td>
 
                      <select name="proveedor"  style="width:200px; Height:20px;">
                            <option value="1"><SPAN>Seleccione</SPAN></option>
                            <option value="2">JuanMarcet</option>
                            <option value="3">Picca</option>
 
                        </select>
 
        </td>
 
        <td><label for="tx_fechaEntrega" >Fecha Entrega</label></td>
        <td><input type="text" name="tx_fecha" id="datepicker" value='' size="25"  maxlength="30" /></td>
 
    </tr>
 
    <tr>
        <td><label for="tx_direccion">Direccion de Entrega</label></td>
        <td>
            <input type="text" name="tx_direccion" id="tx_direccion"  value='' size="49"  maxlength="90" />
        </td>
 
    </tr>
    <tr>
       <td><label for="tx_referencia">Observación:</label></td>
        <td>
            <textarea rows="1" cols="31" ></textarea>
        </td>
    </tr>
 
 
    </table>
 
   </div >
 
 
<div style="border-radius:5px; background-color:#EAE6E3;  font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif; color:#000000;">
 
 
</table>
 
                <table class="formulario" border="0"><br />
                    <thead >
                        <tr >
                            <th colspan="8" valign="middle"><img src="../css/images/add.png"  /> Agregar Detalle</th>
                        </tr>
                    </thead>
                    <tbody border="1">
                        <tr>
                            <td>Cantidad</td>
                            <td><input name="valor_ide[0][valor_ide]" type="text" id="valor_ide" size="5"  class="required" /></td>
                            <td>Descripción</td>
                            <td><input name="valor_ide[1][valor_uno]" type="text" id="valor_uno" size="42" class="required" /></td>
                            <td>Costo Unitario</td>
                            <td><input name="valor_ide[2][valor_dos]" type="text" id="valor_dos" size="5" class="required" /></td>
                            <td>Precio</td>
                            <td><input name="valor_ide[3][valor_tres]" type="text" id="valor_tres" size="5" class="required" /></td>
                        </tr>
 
                    </tbody>
 
                    <tfoot>
 
 
                        <tr>
 
 
                            <td colspan="1"><input name="agregar" type="submit" id="agregar" value="Agregar" /></td>
 
                        </tr>
 
 
 
                    </tfoot>
                </table>
          </form>
 
         <form action="javascript: fn_array();" method="post" id="frm_arreglo">
            <table id="grilla" class="lista" border="0" >
              <thead >
                    <tr>
                        <th>Cantidad</th>
                        <th >Descripción</th>
 
                        <th>Precio Unitario</th>
                        <th>Total</th>
                    </tr>
                </thead>
                <tbody>
 
                </tbody>
                <tfoot>
                	<tr>
                    	<td colspan="8"><strong>Subtotal</strong> $<span id="span_cantidad"></span>.</td>
 
 
                    </tr>
                    <tr><td colspan="6"><strong>I.V.A</strong> $<span id="span_iva"></span>.</td></tr>
                  <tr> <td colspan="8"><strong>Total</strong> $<span id="span_total"></span>.</td></tr>
                    <tr>
                         <td colspan="1"><input name="guardar" type="submit" id="guardar" value="Guardar" /></td>
                    </tr>
                </tfoot>
 
            </table>
    </form>
            <hr />
            <br/>
            <span> ..::  ::.. </span>
    <br/>
    </div>
    <br/>
        </div>
 
    </body>
 
</html>

JavaScript para agregar las filas dinamicamente con la informacion ingresada

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function fn_agregar(){
                cadena = "<tr>";
                cadena = cadena + "<td>" + $("#valor_ide").val() + "</td>";
                cadena = cadena + "<td>" + $("#valor_uno").val() + "</td>";
                cadena = cadena + "<td>" + $("#valor_dos").val() + "</td>";
                cadena = cadena + "<td>" + $("#valor_tres").val() + "</td>";
                cadena = cadena + "<td><a class='elimina'><img src='../css/images/delete.png' /></a></td>";
                $("#grilla tbody").append(cadena);
 
 
 
                fn_cantidad();
                fn_dar_eliminar();
 
                fn_clear();
 
            };
y este JavaScript es para recorrer la tabla y crear el array. pero al momento de obtener el array me muestra asi los datos " objDatosColumna 12,MARCADORES ,0.50,6.00". y quiero recorrer el array para hacer el insert de esta manera

$sql = "insert into detalle_fact(cant,descrip,valoUnit,total) values (12,MARCADORES,0.50,6.00)"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function fn_array(){
 
 //$('#guardar').live('click',function(){
    $("#guardar").click(function(){
    var $objCuerpoTabla=$("#grilla").children().prev().parent();
         $objCuerpoTabla.find("tbody tr").each(function(){
 
               objDatosColumna= Array();
 
                var cantidad=  $(this).find('td').eq(0).html();
                var descripcion = $(this).find('td').eq(1).html();
                var valorUnit =$(this).find('td').eq(2).html();
                var valorTot =$(this).find('td').eq(3).html();
                    $(this).css("background-color", "#ECF8E0");
 
                valor = Array(cantidad,descripcion,valorUnit,valorTot);
                objDatosColumna.push(valor);
 
 
              // $.post("archivo.php", $("#frm_usu").serialize(), function(data){alert(data);});
 
            $.ajax({
 
 
                   async: false,
                    type: "POST",
                    url: "archivo.php",
                    data: {objDatosColumna:objDatosColumna},
                    success: function(data) { if(data!="")
                    alert(objDatosColumna);
                    }
                });
 
            });
 
 
        });
 
 
 
}
espero me puedas ayudar con una idea clara como puedo hacer para enviar todo el array con la informacion ingresada y recorrerlo en php e insertar a la Base, ya que llevo varios dias en esto y no le he podido dar solucion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

recorrer un arreglo e insertar a la base

Publicado por JAVIER (30 intervenciones) el 15/01/2014 04:52:38
hola XVE pase el array con ajax de esta manera

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function fn_array(){
 
 //$('#guardar').live('click',function(){
    $("#guardar").click(function(){
 
$.post("archivo.php", $("#frm_usu").serialize(), function(data){ alert(data); });
 
 
    var $objCuerpoTabla=$("#grilla").children().prev().parent();
         $objCuerpoTabla.find("tbody tr").each(function(){
 
             var  objDatosColumna = new Array();
 
                var cantidad=  $(this).find('td').eq(0).html();
                var descripcion = $(this).find('td').eq(1).html();
                var valorUnit =$(this).find('td').eq(2).html();
                var valorTot =$(this).find('td').eq(3).html();
                    $(this).css("background-color", "#ECF8E0");
 
                valor = Array(cantidad,descripcion,valorUnit,valorTot);
                objDatosColumna.push(valor);
 
               //$.post("archivo.php", {subtotal: $("#span_cantidad").val()});   
              //$.post("archivo.php",{subtotal: $("#span_cantidad").val()};
 
            $.ajax({
 
 
                   async: false,
                    type: "POST",
                    url: "archivo.php",
                    data: {objDatosColumna:objDatosColumna},
                    success: function(data) { if(data!="")
                    alert(objDatosColumna);
                    }
                });
 
            });
 
 
        });
 
 
 
}
y lo reciobi en php de esta manera pude obtener cada valor en una variable y asi poser hacer el insert
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo "<pre>";
 
 
list($cant,$descrip,$valorUnit,$total) = explode(",",$_POST["objDatosColumna"]);
 
echo "cantidad".$cant."<br/>";
 
echo "descripcion".$descrip."<br/>";
 
echo "vaorUnitario".$valorUnit."<br/>";
 
echo "total".$total."<br/>";
 
}
echo "</pre>"

Tengo una duda, lo que sucede es que tengo dos formulario uno donde tengo la informacion de ingreso y otra el detalle entonces yo quisiera saber como puedo hacer para enviar por ajax el primer formulario junto con el array del detalle como puedo hacer parar obtenerlo en php ya que tengo que hacer insert en dos tablas diferentes.

Mil disculpa que te moleste antemano gracias por la informacion brindada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar