Foros del Web » Programando para Internet » PHP »

Array en FOR

Estas en el tema de Array en FOR en el foro de PHP en Foros del Web. Buenas, Necesito copiar una fila de la tabla X en la tabla Y a través de una aplicación en php. Básicamente es leer aquellas filas ...
  #1 (permalink)  
Antiguo 21/10/2010, 08:22
Avatar de ivangd  
Fecha de Ingreso: febrero-2010
Mensajes: 28
Antigüedad: 14 años, 2 meses
Puntos: 0
Array en FOR

Buenas,

Necesito copiar una fila de la tabla X en la tabla Y a través de una aplicación en php. Básicamente es leer aquellas filas que me he marcado y copiar dicha fila en una base de datos, en cambio, las filas que no han sido eliminadas deberán ser eliminadas.

Más o menos sería algo como hacer una tabla en php tipo phpmyadmin, es decir, recoger los valores de una tabla en mysql y dicha tabla muestre los valores donde aparezca un checkbox, el cual si le marcas copiara esa fila en otro tabla de la base de datos.

Se que no me estoy explicando muy bien, he buscado por Google pero no consigo dar con la solución.

El código que tengo es:

formulario.php

Código PHP:
$sql=mysql_query("SELECT * FROM tbl_administradores WHERE nombre='".$_SESSION['usuario']."'");

        
$administradores=mysql_fetch_array($sql);
        
        
$tipo=$_POST['tipo'];
        
        echo 
"<h1>Tabla > ".$tipo."</h1>";
        
        if(
$tipo=='ideas')
        {
            
            
$sql=mysql_query("Select * From tbl_ideas_previo");
            
$contar=mysql_num_rows($sql);
            
$sql_ideas=mysql_fetch_array($sql);
                        
            
                echo 
"<form name='formu' method='post' action='validar_ok.php'>";
            echo 
"<table class='validar'>";
                echo 
"<tr  class='cabeceras'>";
                echo 
"    <td >
                        #
                        </td>"
;
                echo 
"    <td >
                        Entidad:
                        </td>"
;
                echo 
"    <td>
                        Link:
                        </td>"
;
                echo 
"    <td>
                        Utilidad:
                        </td>"
;
                echo 
"    <td>
                        Correo:
                        </td>"
;
                echo 
"    <td>
                        Valoración:
                        </td>"
;
                echo 
"    <td>
                        Descripción:
                        </td>"
;
                echo 
"</tr>";
            
                
$total=0;
                
        
            while(
$sql_ideas=mysql_fetch_array($sql))
            {
                    
                echo 
"<tr class='contenido'>";
                echo 
"<td>
                        <input type='checkbox' name='select[]' value='SI'>
                            
                        </td>"
;
                                
                echo 
"<input type='hidden' name='tipo' value='$tipo'>";
                    
                echo 
"<td>
                        <input type='text' name='Entidad[]' value='"
.$sql_ideas['Entidad']."' />     
                    </td>"
;
                echo 
"<td>
                            <input type='text' name='Link[]' value='"
.$sql_ideas['Link']."' />
                    </td>"
;
                echo 
"<td>
                        <input type='text' name='Utilidad[]' value='"
.$sql_ideas['Utilidad']."'/>
                        </td>"
;
                echo 
"<td>
                        <input type='text' name='correo[]' value='"
.$sql_ideas['correo']."' />
                        </td>"
;
                echo 
"<td>
                        <input type='text' name='Valoracion[]' value='"
.$sql_ideas['Valoracion']."'/>
                        </td>"
;
                echo 
"<td>
                <input type='text' name='Descripcion[]' value='"
.$sql_ideas['Descripcion']."'/></textarea>
                        </td>"
;
                echo 
"</tr'>";
                
$total++;
                
$i+1;
            
            }
            echo 
"<tr>";
            echo 
"<td colspan='3' align='center'>
                        <input type='submit' value='Copiar'>
            </td>"
;
            echo 
"<td colspan='3' align='center'>
                        <input type='submit' value='Eliminar'>
            </td>"
;
            echo 
"</tr>";
            echo 
"</table>";
            echo 
$total;
            echo 
"<input type='hidden' name='total' value='$total'>";
            echo 
"</form>"
Con este código consigo visualizar los diferentes valores de la tabla X, el problema es que a la hora de recogerlos en otra página no se realizar el bucle que identifique primero que fila esta seleccionada y luego insertar dicha fila en la tabla Y.

Un saludo y gracias anticipadas.

P.D. Me he equivocado al escribir el titulo del post, quería poner ARRAY en FORM.

Última edición por ivangd; 21/10/2010 a las 08:23 Razón: Titulo mal escrito.
  #2 (permalink)  
Antiguo 21/10/2010, 08:33
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Array en FOR

Hay un par de cositas que arreglar, la idea es la siguiente:

1. Se hace una query.
2. Empieza una tabla con las filas de la consulta.
3. Haz de numerar o identificar de manera única las filas de la consulta.
4. Cada fila tiene un checkbox con el nombre (ejemplo: chek_$numerofila);
5. En el script de destino, tendrás en el array $_POST algo asi:

$_POST['check_1'];
$_POST['check_2'];
$_POST['check_3'];

ahora puedes recorrerer esta parte del array y saber qué filas fueron seleccionadas.
EL resto se borran.

6. Atención a los nombres de los campos que usas en el form, no utilices [];
7. La variable $i no está declarada ni se usa, al menos en el código visible.
8. Hay una cadena rota en echo "</tr'>";

Intenta depurar con

Código PHP:
error_reporting(E_ALL);
in_set("display_errors",1); 
al principio de tu script.
Si aún así no lo sacas, postea el script corregido, salu2
  #3 (permalink)  
Antiguo 21/10/2010, 08:44
Avatar de ivangd  
Fecha de Ingreso: febrero-2010
Mensajes: 28
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Array en FOR

Soy muy nuevo en esto de la programación php y mysql, no he entendido muy bien a que te refieres.

Adjunto la otra parte del código.

validar_ok.php

Código PHP:
if($tipo=='ideas')
        {
            
$validar=$_POST['select'];
            
$descripcion=$_POST['Descripcion'];
            
$link=$_POST['Link'];
            
$utilidad=$_POST['Utilidad'];
            
$entidad=$_POST['Entidad'];
            
$correo=$_POST['correo'];
            
$total=$_POST['total'];
            
            echo 
$validar;
            echo 
$descripcion;
            echo 
$link;
            echo 
$utilidad;
            echo 
$entidad;
            echo 
$correo;
            echo 
$total;
            
            if(
$validar=='select')
            {
            
mysql_query("INSERT INTO tbl_ideas (Descripcion,Valoracion,Link,Utilidad,Entidad,correo) VALUES ('$descripcion', '$valoracion', '$link', '$utilidad', '$entidad', '$correo')");
            
            }
            
            else 
            {
                
mysql("DELETE FROM tbl_ideas_previo WHERE Entidad='$entidad' AND Link='$link'");
            
            } 
El problema es que no se como hacer saber a la página validar_ok.php que filas tengo seleccionadas en validar.php, además tampoco se aplicar el bucle correcto en validar_ok.php a la hora de hacer el "insert into" a la BD.
  #4 (permalink)  
Antiguo 22/10/2010, 02:04
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Array en FOR

Me resulta un poco difícil trabajar con tu código porque no tengo las tablas.
Hice otro ejemplo con un array que es lo mismo.
El problema actual es que no estás guardando correctamente los valores en el formulario inicial y por tanto no llegan los datos al siguiente script.
Esta es una aproximación, la solución más eficiente no es esta, pero eso tendrás que estudiarlo por tu cuenta.
Te paso dos archivos,
1.php
Hace la consulta a la DB y genera el formulario con los datos
2.php
Recoge los valores y determina qué borrar y qué insertar. Espero que sirva, saludos.

1.php
Código PHP:
<?php

// Hago una consulta a la base de datos y me devuelve esto
    
$usuarios = array(
    
=> "Pepe",
    
=> "José",
    
=> "Otro",
    
=> "Juan",
    
=> "Pedro",
    
=> "Martín",
    
=> "Kiko",
    
=> "Chichi",
    );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Pruebas de for</title>
</head>

<body><form id="form1" name="form1" method="post" action="2.php">
<table width="600" border="1" align="center">
  <tr>
    <td colspan="2"><div align="center">Listado de Usuarios (<?=count($usuarios)?> registros) </div></td>
  </tr>
  <?php
  
//Con los resultados de la consulta hago un formulario, el checkbox tiene un nombre ÚNICO para cada fila y además, el valor es el id de usuario
//En el script destino recibiré variables $_POST['checkbox_0'], $_POST['checkbox_3'], etc UNA POR CADA USUARIO SELECCIONADO
  
for($i 1;$i<count($usuarios);$i++){
  
?>
  <tr <?=($i%2==0?"bgcolor=\"#CCCCCC\"":"")?>>
    <td width="20">
        <input type="checkbox" name="checkbox_<?=$i?>" value="<?=$i?>" />    </td>
    <td width="570"><?=$usuarios[$i]?></td>
  </tr>
  <?php ?>
  <tr>
    <td colspan="2"><label>
      <div align="center">
        <input type="submit" name="Submit" value="Enviar" />
        </div>
    </label></td>
    </tr>
</table>  
</form>
</body>
</html>
2.php
Código PHP:
<?php
print_r
($_POST);
// Hago LA MISMA la base de datos y me devuelve esto
$usuarios = array(
=> "Pepe",
=> "José",
=> "Otro",
=> "Juan",
=> "Pedro",
=> "Martín",
=> "Kiko",
=> "Chichi",
);
//Ahora recogo las variables tipo $_POST['checkbox_xx']

for($i 1;$i<count($usuarios);$i++){
echo 
$i;
    if(
in_array($i$_POST)) {
        
$insertar[$i] = $i//Ahora $insertar guardará los valores de los checkbos seleccionados
    
} else
    {
        
$borrar[] = $i//Si no está seleecionado lo tenemos que borrar, el id lo guardamos en $borrar
    
}
}

echo 
"<h1>Ids a insertar</h1>";
print_r($insertar); //Ahora selecciona de la db los usuarios con estos id y los insertas
echo "<h1>Ids a borrar</h1>";
print_r($borrar); //Ahora borra lo usuarios con estos id
?>

Etiquetas: Ninguno
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 15:28.