Autor Tema: php... pasar parámetros a javascript para construir una url  (Leído 6590 veces)

anroux

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
php... pasar parámetros a javascript para construir una url
« en: 25 de Diciembre 2014, 04:39 »
a ver si logro explicarme...
tengo un codigo php, hago la consulta a la bd...
tengo un boton que me permite imprimir en pdf...
como de la consulta se generan varios formularios para imprimir, deseo colocar ese boton al frente del formulario resultado del ciclo while, para que al darle clic imprima solo esa consulta, que en la bd es la llave principal... este es el codigo:
Código: [Seleccionar]
<?php
    
include ("../menu.php");
    include(
"../../clases/ReporCitacion/ReporCitacion.php");
    include(
"../../conexion/conexion.php");
?>

<html>
    <head>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
        transitional.dtd">
        <title>.:: Pdf_Citaciones ::.</title>
        <style type="text/css">
            input
            {
                font-size:13px;
                font-family: Arial, helvetica;
                outline:none;
                transition: all 0.30s ease-in-out;
                -webkit-transition: all 0.30s ease-in-out;
                -moz-transition: all 0.30s ease-in-out;
                border-radius:3px;
                -webkit-border-radius:3px;
                -moz-border-radius:3px;
                border:1px solid rgba(0,0,0, 0.2);
                color:gray;
                background-color:#eee;
                padding: 6px;
            }
             
            input:focus
            {
                box-shadow: 0 0 10px #0066FF;
                -webkit-box-shadow: 0 0 10px #0066FF;
                -moz-box-shadow: 0 0 10px #0066FF;
                border:2px solid #999;
                border-radius: 5px;
                background-color:white;
            }
        </style>
            <link rel="stylesheet" href="../../css/menu2.css">
            <link rel="stylesheet" type="text/css" href="../../css/estilobeneficiario.css">
    </head>
    <body>
    <script type="text/javascript" language="javascript">
        function ImprovedTable()
        {
            documento=document.raiz.ident.value;
            //fichanumber=document.raiz.fich.value;
            doc01=document.raiz.ident01.value;
           // window.open('ReporCitacion.php?doc='+documento, 'impresion', 'status=no, resizable=yes, width=1200, height=700');
            window.open('ReporCitacion.php?doc='+documento+'&doc01='+doc01, 'impresion', 'status=no, resizable=yes, width=1200, height=700');
        }
     </script>
    <body background="">
    <div id="capaAnimada">
        <div id="conte">
       
        <form type=type name=raiz id=raiz method=post  action='#' ><br>
        <center><br>
            <table class="tabla" bgcolor='#CCE5FF' cellpadding='2' cellspacing='2' border='3'>
            <td><font color=#000000>&nbspIDENTIFICACI&OacuteN<br><input type="text" id="ident" name="ident" size="20"></td><tr>
           
            <!--<td><font color=#000000>&nbspEXPEDIDO POR<br><input type="text" id="fich" name="fich" size="40" ></font></td>
            <td><font color=#000000>&nbspCARGO<br><input type="text" id="ident01" name="ident01" size="10" value="<?php echo $bus?>"></td><tr>-->
           
            <td><font color=#000000><input type="button" value="Aceptar" onClick= "ImprovedTable()" ></font></td>
            <td><input type='reset' value='Nuevo PDF'></td>
            </table><br>
        </form>
    </body>
    </html>

    <?php
if(isset($_POST["btn1"]))
{
    
$btn=$_POST["btn1"];
    
$bus=$_POST["txtbus"];
    if(
$btn=="Validar")
    {
            
$consulta_mysql="select citacion.IDBeneficiario,citacion.Apellido1Citado,citacion.Apellido2Citado,citacion.Nombre1Citado,citacion.Nombre2Citado,
                            citacion.FechaCitacion,citacion.HoraCitacion,citacion.NumeroCitacion,citacion.NumDocCitacion
                                from citacion 
                                    where IDBeneficiario='
$bus'";
        
$resultado_consulta_mysql1=mysql_query($consulta_mysql,$cn);
        echo
"<center>";
          echo
"<table border='5' cellspacing='0' bordercolor='2F4F4F' align='center'><br>";
            echo
"<tr>";
                echo
"<th colspan='4' align='center'>CITACION(ES)</th>";
            echo
"</tr>";
            echo
"<tr>";
                echo
"<th align='center'>CITADO</th>";
                echo
"<th align='center'>Fecha Citacion</th>";
                echo
"<th align='center'>Hora</th>";
                echo
"<th align='center'>Historia No.</th>";
                echo
"<th align='center'>Cintacion No.</th>";
                echo
"<th align='center'>Imprimir</th>";
            echo
"</tr>";
            while(
$fila=mysql_fetch_array($resultado_consulta_mysql1))
            {
                echo 
"<tr>";
                    echo
'<td align="center">'.$fila['Nombre1Citado'].'&nbsp'.$fila['Nombre2Citado'].'&nbsp'.$fila['Apellido1Citado'].'&nbsp'.$fila['Apellido2Citado'].'</td>';
                    echo
'<td align="center">'.$fila['FechaCitacion'].'</td>';
                    echo
'<td>'.$fila['HoraCitacion'].'</td>';
                    echo
'<td>'.$fila['NumDocCitacion'].'</td>';
                    echo 
'<td>'.'<input type="text" id="ident01" name="ident01" size="10"'.'value='.$fila['NumeroCitacion'].'>'.'</td>';
                    echo
'<td>'.$fila['NumeroCitacion'].'</td>';
                    echo
'<td>'.'<font color=#000000><input type="button" value="Aceptar" onClick="ImprovedTable()">'.'</td>';
                echo
"</tr>";
            }
             echo 
"</table>";
             echo
"</center>";
    }

  
?>

« Última modificación: 27 de Diciembre 2014, 22:02 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:php.. ayuda por favor
« Respuesta #1 en: 25 de Diciembre 2014, 18:52 »
Hola, a ver si puedes explicar un poco mejor porque no he entendido lo que quieres plantear... ¿de qué se trata, de que el usuario pulsa un botón de consulta y se le muestran muchas filas de resultados y cada fila tiene un botón para imprimir en pdf? ¿Por qué dices que de la consulta se generan varios formularios para imprimir? ¿Por qué no se hace la impresión de uno en uno?

Saludos

anroux

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re:php.. ayuda por favor
« Respuesta #2 en: 26 de Diciembre 2014, 02:04 »
Se trata de que el usuario ingrese el numero de la cedula, oprima un boton para consultar si se encuentra activo en la bdy si como tu dices exactamente se le muestran muchas filas de resultados y cada fila tiene un botón para imprimir el generado pdf
« Última modificación: 11 de Enero 2015, 18:33 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:php.. ayuda por favor
« Respuesta #3 en: 26 de Diciembre 2014, 13:53 »
Hola, a ver si esto puede ser la idea:

Cuando muestras los resultados tienes muchas filas, en cada fila deberías incluir algo así como un botón o link que te permita imprimir:


<a href="personas.php?proceso=imprimir&id_personas=<?=$persona['id_personas']?>"><img src="images/ico_print.gif" border="0" /></a>

Este sería el código que te genera la url con los datos necesarios.

Luego en esa misma página tendrías que capturar si te vienen datos para procesarlos:

if($_GET['proceso'] == 'imprimir' && is_numeric($_GET['id_personas']))
{
   $personas->imprimir($_GET['id_personas']);
}

No sé si te refieres a algo como esto
« Última modificación: 27 de Diciembre 2014, 21:39 por Alex Rodríguez »

anroux

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re:php.. ayuda por favor
« Respuesta #4 en: 27 de Diciembre 2014, 21:22 »
Sí, es exatamente a lo que hago referencia, pero la verdad no logro adaptarlo a mi codigo o no logro entenderlo... por este motivo te ruego revises mi codigo en esta linea:
Código: [Seleccionar]
echo'<td>'.'<font color=#000000><input type="button" value="Aceptar" onClick="ImprovedTable()">'.'</td>';, pues como veras es donde intento colocar el boton, te envio de igual manera la otra parte del codigo donde se extraen los datos de la bd...
Código: [Seleccionar]
<?
    if(!isset($wtipo)){$wtipo=1;}
    require("../../conexion/cnx/conectar.php");
    //require("../../clases/ConsuVariasTablas/ConsuVariasTablas.php");
    $cnx = new basedatos();
    $cnx->conectar('localhost','root','','casajusticia');
    require('../LibreriaFpdf/fpdf.php');
    require('../LibreriaFpdf/lib_fecha_letras.php');
    $gtotal=0;
    global $header;
    //extract($_GETS);


    class PDF extends FPDF
    {
        //   INICIO DE AUTOPRINT   
        var $javascript;
        var $n_js;
        function IncludeJS($script)
        {
            $this->javascript=$script;
        }
       
        function _putjavascript()
        {
            $this->_newobj();
            $this->n_js=$this->n;
            $this->_out('<<');
            $this->_out('/Names [(EmbeddedJS) '.($this->n+1).' 0 R ]');
            $this->_out('>>');
            $this->_out('endobj');
            $this->_newobj();
            $this->_out('<<');
            $this->_out('/S /JavaScript');
            $this->_out('/JS '.$this->_textstring($this->javascript));
            $this->_out('>>'); 
            $this->_out('endobj');
        }
       
        function _putresources()
        {
            parent::_putresources();
            if (!empty($this->javascript))
            {
                $this->_putjavascript();
            }
        }
       
        function _putcatalog()
        {
            parent::_putcatalog();
            if (isset($this->javascript))   
            {
                $this->_out('/Names <</JavaScript '.($this->n_js).' 0 R>>');
            }
        }
       
        function AutoPrint($dialog=false)
        {
            //Aqui lo que vamos a hacer es a arrancar la impresora inmediatamente se arranque el pdf
            $param=($dialog ? 'true' : 'false');
            $script="print($param);";
            $this->IncludeJS($script);
        }
       
        function AutoPrintToPrinter($server, $printer, $dialog=false)
        {
            //esta es una funcion que usaremos cuando la impresora sea compartida en otra maquina.(se requiere  Acrobat 6 osuperior.....)
            $script = "var pp = getPrintParams();";
            if($dialog)
                $script .= "pp.interactive = pp.constants.interactionLevel.full;";
            else
            $script .= "pp.interactive = pp.constants.interactionLevel.automatic;";
            $script .= "pp.printerName = '\\\\\\\\".$server."\\\\".$printer."';";
            $script .= "print(pp);";
            $this->IncludeJS($script);
        }
        //   FIN DE AUTOPRINT   
       
        function Header()
        {
            //Logo
           /* $this->Image('../../imagenes/LogoFinCasaJ.jpg',20,5,25);
            $this->Image('../../imagenes/LogoAlcaldiafin.jpg',160,5,35);
            //Arial bold 15
            $this->SetFont('Arial','B',15);
            //  es de los bordes, fondo y texto
            $this->SetDrawColor(0,0,0);
            $this->SetFillColor(0,0,0);
            $this->SetTextColor(0,0,0);
            //$this->SetY(15);
         
            //Movernos a la derecha
            $this->Cell(191,5,"CASA DE JUSTICIA AGUABLANCA",0,'','C','B');
            $this->Ln();
            $this->SetFont('Arial','',12);
            $this->Cell(191,5,"Programa Nacional de Casa de Justicia",0,'','C');
            $this->Ln();
            $this->Cell(191,5,"Secretaría de Gobierno, Convivencia y Seguridad",0,'','C');
            $this->Ln();
            $this->Cell(191,5,"Santiago de Cali",0,'','C');
            $this->Ln();*/
        }
        //Pie de página
        function Footer()
        {
          /*  //Colores de los bordes, fondo y texto
            $this->SetDrawColor(0,0,0);
            $this->SetFillColor(0,0,0);
            $this->SetTextColor(0,0,0);
            //Posición: a 2,5 cm del final
            $this->SetY(-10);
            //Arial italic 8
            $this->SetFont('Arial','',12);
            $this->SetTextColor(0,0,0);
            $this->Cell(20,10,'','','','C');
            $this->Cell(160,5,'_________________________________________________________________',0,0,'C');
            $this->Ln();
            $this->Cell(200,5,'Calle 73A Diagonal 26P Esquina B/ José Manuel Marroquín I',0,0,'C');
            $this->Ln();
            $this->Cell(200,5,'Tel.: 422 9745 - 423 2505',0,0,'C');*/
            //Número de página
            //$this->Cell(0,10,'Pagina '.$this->PageNo().'/{nb}',0,0,'C');
        }
       

    function TablaBasica($header)
   {
    //Cabecera
    foreach($header as $col)
    $this->Cell(40,7,$col,1);
    $this->Ln();
   
     
   }
 //------------------------ fin tabla

        function ImprovedTable()
        {
            $bus=strtoupper($_GET['doc']);
            $num_ficha=strtoupper($_GET['nfi']);
            $p_test=strtoupper($_GET['doc01']);


           $sql="select citacion.NumDocCitacion,citacion.IDBeneficiario,beneficiario.Apellido1,beneficiario.Apellido2,beneficiario.Nombre1,beneficiario.Nombre2
                                from citacion,beneficiario
                               where citacion.IDBeneficiario=beneficiario.IDBeneficiario  AND NumDocCitacion='$bus'";
                                   
            $res=mysql_query($sql);
            mysql_query("SET NAMES,'utf8'");
            while ($fila=mysql_fetch_array($res))
                {
                $var1=$fila['IDBeneficiario'];
                $var2=$fila['Apellido1'];
                $var3=$fila['Apellido2'];
                $var4=$fila['Nombre1'];
                $var5=$fila['Nombre2'];
                }

           $consulta_mysql="select citacion.NumDocCitacion,empleado.IdEmpleado,empleado.Apellido1,empleado.Apellido2,empleado.Nombre1,empleado.Nombre2,empleado.Genero
                                from citacion
                                inner join empleado on citacion.IdEmpleado=empleado.IdEmpleado where NumDocCitacion='$bus'";
                                   
            $resultado_consulta_mysql=mysql_query($consulta_mysql);
            mysql_query("SET NAMES,'utf8'");
            while($fila=mysql_fetch_array($resultado_consulta_mysql))
                {
                $var59=$fila['Apellido1'];
                $var60=$fila['Apellido2'];
                $var61=$fila['Nombre1'];
                $var62=$fila['Nombre2'];
                $var68=$fila['Genero'];
                }
            /*$sql="select * from beneficiario where IDBeneficiario='$bus' ";
            $res=mysql_query($sql);
            mysql_query("SET NAMES,'utf8'");
            while ($fila=mysql_fetch_array($res))
             {
                $var1=$fila['IDBeneficiario'];
                $var2=$fila['Apellido1'];
                $var3=$fila['Apellido2'];
                $var4=$fila['Nombre1'];
                $var5=$fila['Nombre2'];

            }*/
            $sql="select * from citacion where IDBeneficiario='$bus' or NumDocCitacion='$bus'";
            $res=mysql_query($sql);
            mysql_query("SET NAMES,'utf8'");
            while ($fila=mysql_fetch_array($res))
             {
                $var51=$fila['FechaDocumento'];
                $var52=$fila['Apellido1Citado'];
                $var53=$fila['Apellido2Citado'];
                $var54=$fila['Nombre1Citado'];
                $var55=$fila['Nombre2Citado'];
                $var56=$fila['TemaTratar'];
                $var57=$fila['FechaCitacion'];
                $var58=$fila['HoraCitacion'];
                $var64=$fila['Telcitado'];
                $var65=$fila['NumeroCitacion'];
                $var66=$fila['NumDocCitacion'];
                $var67=$fila['Conciliador'];
            }
                                ////        CITANTE          /////

                        //-/-//        TABLA ESTADO CIVIL        //-/-//
            /*$sql="select beneficiario.IDBeneficiario,estadocivil.DescEstadoCivil
                        from beneficiario
                            inner join estadocivil on beneficiario.CodEstadoCivil=estadocivil.CodEstadoCivil  where IDBeneficiario='$bus'";
            $res=mysql_query($sql);
            mysql_query("SET NAMES,'utf8'");
            while($fila=mysql_fetch_array($res))
            {
                $var102=$fila['DescEstadoCivil'];
            }


                            //-/-//        TABLA PROFESION/OFICIO         //-/-//
            $consulta_mysql="select beneficiario.IDBeneficiario,profesionoficio.DescProfesionOfic
                        from beneficiario
                            inner join profesionoficio on beneficiario.CodProfesionOfic=profesionoficio.CodProfesionOfic  where IDBeneficiario='$bus'";
            $resultado_consulta_mysql=mysql_query($consulta_mysql);
            mysql_query("SET NAMES,'utf8'");
            while($fila=mysql_fetch_array($resultado_consulta_mysql))
            {
                $var103=$fila['DescProfesionOfic'];
            }


?>
, esto con el objetivo a que puedas ayudarme, pues como te comente al inicio no entiendo con facilidad la informacion que me brindaste, he intentado adaptarlo pero no me da... igual me encantaria conectarme via teamviewer para mostrarte y poder explicarte al maximo solo si tu me lo permites....
« Última modificación: 11 de Enero 2015, 18:34 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:php... pasar parámetros a javascript para construir una url
« Respuesta #5 en: 27 de Diciembre 2014, 22:04 »
No conecto vía otro medio que no sean los foros...

Si no entiendo mal aquí estás generando las filas donde muestras para una identificación los resultados obtenidos (filas) que podrían ser dos, tres, cinco, diez filas dependiendo del caso:

while($fila=mysql_fetch_array($resultado_consulta_mysql1))
            {
                echo "<tr>";
                    echo'<td align="center">'.$fila['Nombre1Citado']...

Luego intentas meter el botón para imprimir en esta línea:

echo'<td>'.'<font color=#000000><input type="button" value="Aceptar" onClick="ImprovedTable()">'.'</td>';


Y aquí llamas a una función JavaScript que utiliza los valores

documento=document.raiz.ident.value;
doc01=document.raiz.ident01.value;

Donde raiz.ident.value se supone que es la identificación

Y raiz.ident01.value se supone que es el campo NumeroCitacion asociado a una identificación y a una fila de la base de datos.

Ahora bien, si para cada resultado muestras los datos introduciendo esta línea:

echo '<td>'.'<input type="text" id="ident01" name="ident01" size="10"'.'value='.$fila['NumeroCitacion'].'>'.'</td>';

Puede haber muchas líneas que tengan el mismo id (que sería ident01).

Si muchas líneas tienen el mismo id, cuando en javascript trates de hacer esto: doc01=document.raiz.ident01.value;

no vas a obtener un resultado coherente.

¿Por qué? Porque un id tiene que ser único en la página, no puedes (o no debes) tener muchos elementos con el mismo id precisamente porque no vas a poder diferenciar unos de otros.

Seguramente hay varias vías para resolver esto. Una quizás sea pasarle como parámetro a la función javascript el valor de $fila['NumeroCitacion'] que es al fin y al cabo lo que tratas de rescatar luego.

Habría que crear la función de forma que reciba el parámetro y luego pasarle el parámetro, algo así como

echo'<td>'.'<font color=#000000><input type="button" value="Aceptar" onClick="ImprovedTable2('.$fila['NumeroCitacion'].')">'.'</td>';

Si te fijas aquí lo que estoy intentando es pasar como parámetro lo que me permite identificar a la fila concreta

En la función javascript tendríamos algo como:

function ImprovedTable2(numeroCitacion)
...
...
window.open('ReporCitacion.php?doc='+documento+'&doc01='+numeroCitacion, 'impresion', 'status=no, resizable=yes, width=1200, height=700');

Se trataría de construir una url única asociada a la fila concreta de que se trate...

Quizás te sea útil repasar algunas entregas de este curso javascript: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78&Itemid=206

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".