Foros del Web » Programando para Internet » PHP »

Como recorrer array para insertar en base de datos

Estas en el tema de Como recorrer array para insertar en base de datos en el foro de PHP en Foros del Web. Tengo el siguiente formulario Código PHP: <td><input name="cod_jugador[]" type="hidden" value=" <?php  echo  $row_Recordset1 [ 'id_jugadores' ];  ?> " />                                            <?php  echo  $row_Recordset1 [ 'jugador' ];  ?> </td>                                           <td> ...
  #1 (permalink)  
Antiguo 04/04/2010, 09:26
Avatar de grecacer  
Fecha de Ingreso: mayo-2005
Ubicación: Las Palmas de Gran Canari
Mensajes: 312
Antigüedad: 19 años, 6 meses
Puntos: 0
Como recorrer array para insertar en base de datos

Tengo el siguiente formulario

Código PHP:
<td><input name="cod_jugador[]" type="hidden" value="<?php echo $row_Recordset1['id_jugadores']; ?>" />
                                          <?php echo $row_Recordset1['jugador']; ?></td>
                                          <td><?php echo $row_Recordset1['desc_equiporig']; ?></td>
                                          <td><input name="puntos" type="text" id="puntos" size="3" maxlength="2" /></td>
                                          <td><select name="juega" size="1" id="juega">
                                            <option value="1">si</option>
                                            <option value="2" selected="selected">no</option>
                                          </select>                                          </td>
                                        </tr>
                                        <?php } while($row_Recordset1 mysql_fetch_array($Recordset1))  ?>
Que recojo aquí para insertar, lo que pasa que los valores de puntos (campo de texto) y juega (lista desplegable) no me los recoge

Código PHP:
$cod_jornada$_POST['cod_jornada'];
$jugador=$_POST['cod_jugador'];
$puntos=$_POST['puntos'];
$cod_juega=$_POST['juega'];


foreach (
$jugador as $jugador_insertar){
echo 
$puntos;
echo 
$cod_juega
En puntos me muestra
arrayarrayarray.... tantas veces como valores hay
y en cod_juega me muestra 2 que es uno de los valores de la lista desplegable aunque haya seleccionado otros valores en alguno de los elementos del formulario.

Gracias por adelantado de un novatillo.
__________________
Tu sexshop online
  #2 (permalink)  
Antiguo 04/04/2010, 09:53
Avatar de mauroave  
Fecha de Ingreso: julio-2009
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

Hola hermano.
Según lo que puedo ver, la salida "arrayarrayarray" te la debería mostrar la variable $jugador, ya que es esta la que recibe por $_POST el array de hidden. No obstante, para recibir un array y mostrar sus datos debes especificarle el indice, me explico?
Sería algo asi:
Código PHP:
$jugador1=$_POST['cod_jugador'][1];
$jugador2=$_POST['cod_jugador'][2];
$jugador3=$_POST['cod_jugador'][3];
//etc.... 
Obviamente puedes hacerlo en un bucle, esto es a modo de ejemplo
  #3 (permalink)  
Antiguo 04/04/2010, 10:08
Avatar de grecacer  
Fecha de Ingreso: mayo-2005
Ubicación: Las Palmas de Gran Canari
Mensajes: 312
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

A ver si me explico algo mejor:

Tengo un formulario que me saca de la base de datos el nombre de un jugador y yo le añado un campo de texto y un lista desplegable con dos opciones:

Sería mas o menos así:

jugador puntos juega

pepito 4 si
juanito 8 no


Con el codigo que puse en el primer post del tema me inserta bien pepito y juanito con una instrucción de inserción pero no me recoge los valores puntos y juega.
__________________
Tu sexshop online
  #4 (permalink)  
Antiguo 04/04/2010, 10:13
Avatar de mauroave  
Fecha de Ingreso: julio-2009
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

Entendi. Trata de hacer un echo de las variables en el primer formulario, para ver si te las traes bien de la base de datos. Una vez hecho eso, si te las muestra bien, entonces fijate si las estas recibiendo bien por $_POST en el otro formulario. El codigo parece estar bien, por eso no te puedo decir otra cosa. Estoy seguro que la mano viene por la base de datos
  #5 (permalink)  
Antiguo 04/04/2010, 10:26
Avatar de grecacer  
Fecha de Ingreso: mayo-2005
Ubicación: Las Palmas de Gran Canari
Mensajes: 312
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

Código PHP:
$cod_jornada$_POST['cod_jornada'];
$jugador=$_POST['cod_jugador'];
$puntos=$_POST['puntos'];
$cod_juega=$_POST['juega'];


foreach (
$jugador as $jugador_insertar){
instrucci&#243;n} 
El tema está aquí creo ya que tanto puntos como cod_juega son tambien arrays y esto es lo que no se hacer, no se como recorrer estos tres arrays para que me los vaya insertando fila a fila.
__________________
Tu sexshop online
  #6 (permalink)  
Antiguo 04/04/2010, 10:33
Avatar de mauroave  
Fecha de Ingreso: julio-2009
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

Mira, acabo d hacer una pequeña prueba de tu código, y parece estar bien. A mi me muestra los 3 valores,

Código PHP:
$jugador=$_POST['cod_jugador'];
$puntos=$_POST['puntos'];
$cod_juega=$_POST['juega']; 
$puntos y $cod_juega no son arrays, dado que son valores que recibis de un campo de text y de un select
  #7 (permalink)  
Antiguo 04/04/2010, 10:39
Avatar de grecacer  
Fecha de Ingreso: mayo-2005
Ubicación: Las Palmas de Gran Canari
Mensajes: 312
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

es que en el codigo que puse arriba se me olvidó ponerlo como array porque es un campo de texto y una lista asociada a cada "jugador"

Código:
<td><input name="puntos[]" type="text" id="puntos" size="3" maxlength="2" /></td>
                                          <td><select name="juega[]" size="1" id="juega">
                                            <option value="1">si</option>
                                            <option value="2" selected="selected">no</option>
                                          </select>

O sea tengo que recoger los valores así en fila para insertarlos

pepito 4 si
juanito 2 no
...........
__________________
Tu sexshop online
  #8 (permalink)  
Antiguo 04/04/2010, 11:19
Avatar de mauroave  
Fecha de Ingreso: julio-2009
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

Aha.... tendría que entender mas la lógica de lo que quieres hacer, pero lo que te puedo decir es que si es un arreglo, debes recibirlo indicando el índice, así:

Código PHP:
$elem1=$_POST["arreglo"][1];
$elem2=$_POST["arreglo"][2];
//etc.... 
  #9 (permalink)  
Antiguo 04/04/2010, 11:39
Avatar de grecacer  
Fecha de Ingreso: mayo-2005
Ubicación: Las Palmas de Gran Canari
Mensajes: 312
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

Antes que nada gracias por el interes y la ayuda.

A ver la idea es la siguiente tengo una base de datos con un listado de jugadores, yo los saco dinamicamente y a cada jugador le tengo que poner unos puntos y una expresion juega si o no, el formulario me genera esos campos,

Entonces tengo que pasar el id_jugador, que lo paso como hidden, y los puntos de cada uno y el si o no de cada uno tambien para insertarlo en otra tabla de la base de datos.

Esa es la idea.

Por lo tanto necesito recoger las variables y recorrer el arreglo entero para poder hacer la inserción.
__________________
Tu sexshop online
  #10 (permalink)  
Antiguo 04/04/2010, 12:46
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años, 6 meses
Puntos: 14
Respuesta: Como recorrer array para insertar en base de datos

Hola hombre, me parecio curioso esto que requerias y por eso implemente eso de la siguiente forma:

Código PHP:
<?php

$link 
mysql_connect("localhost","root");
$db mysql_select_db"prueba",$link);

$sql "SELECT * FROM test";
$eject mysql_query($sql$link);
?>
<html>
    <body>
        <table>
            <form action="save_data.php" method="post">
            <?php while( $ls mysql_fetch_array($eject) ) { ?>
            <tr>
                <td>
                    <input name="cod_jugador[]" type="hidden" value="<?php echo $ls[0]; ?>" />
                    <?php echo $ls[1]; ?>
                </td>
                <td>
                    <input name="puntos<?php echo $ls[0]; ?>" type="text" size="3" maxlength="2" />
                </td>
                <td>
                    <select name="juega<?php echo $ls[0];?>" size="1" >
                        <option value="1">si</option>
                        <option value="2" selected="selected">no</option>
                    </select>
                </td>
            </tr>
            <?php ?>
            <tr><td colspan="3"><input type="submit" value="Enviar >>"></td></tr>
            </form>
        </table>
    </body>
</html>
Lo importante de esta parte es que para poder luego recuperar el valor de la variable "puntos" y "juega" lo que se hace es en el nombre de estos dos campos concatenar el id del jugador.

Código PHP:
<select name="juega<?php echo $ls[0];?>" size="1" >
y

Código PHP:
 <input name="puntos<?php echo $ls[0]; ?>" type="text" size="3" maxlength="2" />
Por lo tanto en el archivo que recibe la información sólo debemos hacer un foreach para recorrer la variable "cod_jugador" que es un arreglo.

Código PHP:
 <?php foreach( $_POST['cod_jugador'] as $jugador ) { ?>
Y en cada iteración concatenamos la palabra clave que fue "puntos" y "juega" con su respectivo id del jugador que sería "$jugador" que fue el que se puso en el foreach, total podemos recibir los datos así:

Código PHP:
<?php

$link 
mysql_connect("localhost","root");
$db mysql_select_db"prueba",$link);

$sql "SELECT * FROM test";
$eject mysql_query($sql$link);

?>
<html>
    <body>
        <table>
            <?php foreach( $_POST['cod_jugador'] as $jugador ) { ?>
            <?php
            $puntaje 
"puntos".$jugador;
            
$juega "juega".$jugador;
            
?>
            <?php $jugador mysql_fetch_rowmysql_query("SELECT cam FROM test WHERE idTab = '$jugador'")) ?>
            <tr>
                <td><?php echo $jugador[0]; ?></td>
                <td><?php echo $_POST[$puntaje];?></td>
                <td><?php echo $_POST[$juega];?></td>
            </tr>
            <?php ?>
        </table>
    </body>
</html>
Nota que en cada iteración hacemos esto:

Código PHP:
            <?php
            $puntaje 
"puntos".$jugador;
            
$juega "juega".$jugador;
            
?>
Que es donde hace la concatenación para luego poder usar:

Código PHP:
                <td><?php echo $_POST[$puntaje];?></td>
                <td><?php echo $_POST[$juega];?></td>
Espero te haya servido yo lo probé y funciono perfectamente, cualquier cosa avisas.

Saludos!!

PD: He adaptado los nombres de los campos dentro de la DB a una base de pruebas que tengo jeje, tienes que colocar los tuyos allí.
  #11 (permalink)  
Antiguo 04/04/2010, 14:24
Avatar de grecacer  
Fecha de Ingreso: mayo-2005
Ubicación: Las Palmas de Gran Canari
Mensajes: 312
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Como recorrer array para insertar en base de datos

perfecto, muchisimas gracias delta132, era exactamente eso lo que quiero hacer.

Ya solo tengo un problema con este codigo aunque creo que esto ya es tema de mysql
Código PHP:
mysql_query("REPLACE INTO puntuaciones  (id_puntuaciones,cod_jugador,cod_jornada,puntos,juega) SELECT  '','".$jugador."','".$cod_jornada."','".$_POST[$puntaje]."','".$_POST[$juega]."'  FROM dual WHERE not exists (select * from puntuaciones where  cod_jugador='".$jugador."' and cod_jornada='".$cod_jornada."')"); 
Si no existe el registro hace bien el insert pero si existe no hace nada.


Repito muchisimas gracias.
__________________
Tu sexshop online

Etiquetas: recorrer
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 06:38.