Foros del Web » Programando para Internet » PHP »

Pasar información por post

Estas en el tema de Pasar información por post en el foro de PHP en Foros del Web. Buenas, hace unos dias pregunte como exportar datos de una base de datos a un archivo excel. Bueno, eso por fin lo e conseguido, mi ...
  #1 (permalink)  
Antiguo 15/05/2014, 05:05
 
Fecha de Ingreso: noviembre-2013
Mensajes: 47
Antigüedad: 10 años, 5 meses
Puntos: 0
Pasar información por post

Buenas, hace unos dias pregunte como exportar datos de una base de datos a un archivo excel. Bueno, eso por fin lo e conseguido, mi problema ahora es que en una pagina tengo un formulario en el que se filtran unos datos. Lo que e de conseguir es que me pase por POST a otra pagina en php el valor que ha de tomar para filtrar. Lo e estado probando pero no se que hago mal porque no me pasa nada por post, o no lo cojo bien desde el php. Estos son los codigos, haber si veis me podeis ayudar

Este es

Código PHP:
<div class="wrap">
    <h2>Elegir formulario</h2>

<?php

    
global $wpdb;

?>

    <!--Desplegable-->
    <form method="POST" action="">
    <select name="form">
    <option>Seleccionar</option>

<?php
                                    
    $result 
$wpdb->get_results "
    SELECT DISTINCT field_val
    FROM  wp_cformsdata
    WHERE field_name = 'title'
    GROUP BY sub_id
    ORDER BY f_id
    " 
);

    foreach ( 
$result as $page)
    {
         echo 
"<option name='$page->field_val.'>$page->field_val</option>";
    }

?>
    </select>
    <br>
    <h2>Exportar CSV</h2>
    <br>
    <input type="submit" value="Exportar" action="">
    </form>
Este es el php:

Código PHP:
<?php

$fil
=$_POST['form'];

if(isset(
$_REQUEST['form'])) {
descargar();
}


function 
descargar(){
    
$host '*';
    
$user '*';
    
$pass '*';
    
$db '*';
    
$table 'wp_cformsdata';
    
$file 'export';
    
    
    
$link mysql_connect($host$user$pass) or die("Can not connect." mysql_error());
    
mysql_select_db($db) or die("Can not connect.");

    
$result mysql_query("SHOW COLUMNS FROM ".$table."");
    
$i 0;
    if (
mysql_num_rows($result) > 0) {
        while (
$row mysql_fetch_assoc($result)) {
        
$csv_output .= $row['Field']."; ";
        
$i++;
        }
    }

    
$csv_output .= "\n";

    
$values mysql_query("SELECT field_val FROM wp_cformsdata WHERE field_name='Nombre' AND field_val='$fil'");
    
$values2 mysql_query("SELECT field_val FROM wp_cformsdata WHERE field_name='Apellidos' AND field_val='$fil'");


    for (
$j=0;$j<$i;$j++) {

    while ((
$rowr mysql_fetch_row($values)) && (($rowr2 mysql_fetch_row($values2)))) {
        
            
            
$csv_output .= $rowr[$j];
            
$csv_output .= $rowr2[$j];
            
$csv_output .= "\n";
        }
        
    }


    
$filename $file."_".date("Y-m-d_H-i",time());
    
header("Content-type: application/vnd.ms-excel");
    
header("Content-disposition: csv" date("Y-m-d") . ".csv");
    
header"Content-disposition: filename=".$filename.".csv");
    print 
$csv_output;

    exit;
    }

?>
Para enviarlo por por e probado de poner la direccion del php en el action del formulario o en el boton de enviar, por nada, no me funciona. Espero que me podais ayudar!

Gracias de antemano
  #2 (permalink)  
Antiguo 15/05/2014, 05:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Pasar información por post

<form method="POST" action="ruta y nombre del archivo donde mandas el formulario el php para entenedernos">

Analicemos algo mas:

SELECT field_val FROM wp_cformsdata WHERE field_name='Nombre' AND field_val='$fil';

field_val='$fil' luego si haces SELECT field_val solo puedes obtener $fil que sentido tiene hacer la consulta?

Creo que tienes alguna laguna en la definición de las querys. Pero claro habria que empezar por el principio y ver la estructura de la tabla.

Haz

SHOW CREATE TABLE wp_cformsdata;

y mandanos el resultado, junto con unos cuantos registros (valores).


SELECT DISTINCT field_val
FROM wp_cformsdata
WHERE field_name = 'title'
GROUP BY sub_id
ORDER BY f_id;


Esta tampoco parece tener mucho sentido.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 15/05/2014 a las 05:45
  #3 (permalink)  
Antiguo 15/05/2014, 05:57
 
Fecha de Ingreso: noviembre-2013
Mensajes: 47
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Pasar información por post

Si, tienes razon, esque veras, mi base de datos esta asi:

field_name field_val
title Formulario1
Nombre Elle
Apellidos Lawliet
title Formulario1
Nombre Andres
Apellidos Fuentes
etc

Yo tenia este codigo que habia echo que me lo filtraba y me mostraba la informacion tal qual:

Código PHP:
                        <?php

                            $fil
=$_POST["form"];

                            
$result $wpdb->get_results "
                                SELECT *
                                FROM  wp_cformsdata
                                WHERE field_val='$fil'
                                GROUP BY sub_id
                                ORDER BY f_id
                                " 
);

                                foreach ( 
$result as $page)
                                {
                                    
$subid=$page->sub_id;

                                    {
                                        
$result $wpdb->get_results "
                                            SELECT 
                                            FROM  wp_cformsdata
                                            WHERE sub_id='$subid'
                                            ORDER BY f_id
                                            " 
);
                                            
                                            foreach ( 
$result as $page)
                                            {
                                                echo 
'<b>';
                                                echo 
$page->field_name.': ';
                                                echo 
'</b>';
                                                echo 
$page->field_val.'<br/>';

                                                if (
$page->field_val == '(x)')
                                                {
                                                    echo 
'<br>';
                                                }
                                            }
                                    }
                                }
                        
?>
Con el nuevo codigo, el de la primer pagina, me muestra la informacion asi:

Nombre Apellidos Empresa
Elle Lawliet X
etc

Y al querer adaptarlo, como son bastante diferentes, e echo una chapuza, pues ahora tambien lo que necesito es filtrar bien la informacion.

Edit: La segunda consulta que pones que no tiene mucho sentido lo que hago es mostrar todos los nombres de formularios para poder elegir uno en el select
  #4 (permalink)  
Antiguo 15/05/2014, 06:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Pasar información por post

No se entienden los campos sub_id, f_id son campos que deben estar en la tabla, no será:

f_id,sub_id,field_name,field_val
1,1,title,Formulario1
2,1,Nombre, Elle
3,1,Apellidos,Lawliet
4,2,title,Formulario1
5,2,Nombre,Andres
6,2,Apellidos,Fuentes
etc

Es decir uno es el identificador del registro y el otro agrupa los registros, si es así


Código PHP:
Ver original
  1. //Mostramos el title de cada sub_id
  2.  
  3. $result = $wpdb->get_results ( "
  4.    SELECT DISTINCT sub_id,field_val
  5.    FROM  wp_cformsdata
  6.    WHERE field_name = 'title'
  7.    GROUP BY sub_id
  8.    ORDER BY f_id
  9.    " );
  10.  
  11.     foreach ( $result as $page)
  12.     {
  13.          echo "<option name='".$page->sub_id."'>".$page->field_val."(".$page->sub_id.")</option>";
  14.     }

por un lado y


//Obtenemos el nombre y apellidos del sub_id elegido en el formulario

SELECT field_val FROM wp_cformsdata WHERE field_name='Nombre' AND sub_id='$fil';
SELECT field_val FROM wp_cformsdata WHERE field_name='Apellidos' AND sub_id='$fil';

por el otro, en este caso si tendrian sentido.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 15/05/2014, 06:17
 
Fecha de Ingreso: noviembre-2013
Mensajes: 47
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Pasar información por post

Mira, al hacer el sale esto:

Table Create Table
wp_cformsdata CREATE TABLE `wp_cformsdata` (
`f_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`sub_id` int(11) unsigned NOT NULL,
`field_name` varchar(100) NOT NULL DEFAULT '',
`field_val` text,
PRIMARY KEY (`f_id`)
) ENGINE=MyISAM AUTO_INCREMENT=378 DEFAULT CHARSET=utf8

Y esta es una imagen de los registros:

  #6 (permalink)  
Antiguo 15/05/2014, 06:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Pasar información por post

Es decir como he supuesto pero con mas campos. Releete en post anterior.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #7 (permalink)  
Antiguo 15/05/2014, 06:23
 
Fecha de Ingreso: noviembre-2013
Mensajes: 47
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Pasar información por post

Si lo e visto, ahora me lo mirare bien y lo probare de hacer, supongo que me saldra bien. Muchas gracias!

Despues de probarlo te digo algo! Y de nuevo muchas gracias!
  #8 (permalink)  
Antiguo 15/05/2014, 08:51
 
Fecha de Ingreso: noviembre-2013
Mensajes: 47
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Pasar información por post

Ahora lo e probado y si funciona. El problema es que me separa los formularios que tienen el mismo nombre, y yo lo que e de hacer es que en el select solo me muestre:

Formulario 1
Formulario 2
Formulario 3

Independientemente de los registros que tenga cada formulario y claro, como lo mira por el sub_id, solo me muestra el registro de, por ejemplo, el formulario 1 con el sub_id 12. Y lo que tendria que hacer es ensenyarme todos los registros del formulario 1. Estoy mirando haber si lo puedo adaptar y consigo que funcione

Etiquetas: post
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 13:16.