Envío de valores a variable PHP en Wordpress

Iniciado por reenurya, 21 Febrero 2017, 13:56 PM

0 Miembros y 1 Visitante están viendo este tema.

reenurya

Cordial saludo. Soy nuevo en esto de programación y estoy haciendo una página en wordpress que realiza una consulta en SQL Server y envía los datos a una tabla.

Al hacer clic en el botón de "Consultar", la página se redirecciona a un 404 porque no procesa ni envía el valor de variable. Igualmente en la consulta SQL devuelve un Warning porque le es desconocido el valor de la variable name

Este es el código que estoy utilizando.
Supongo que debo validar primero para que la primera vez que cargue la página haga la consulta, pero aunque coloque la validación al principio, me genera un warning:

Warning: mssql_query(): message: Incorrect syntax near the keyword 'order'. (severity 15) in /var/www/html/intraser/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()'d code on line 89

Y al hacer clic en consultar sigue redireccionando a un 404. Efectivamente necesito que el resultado de la consulta la cargue en la misma página en una tabla HTML para poder exportar a un XLS luego.

Envío nuevamente el código en espera de alguna otra idea sobre qué es lo que pasa. Gracias nuevamente por colaborar.


Código (php) [Seleccionar]
<?php if(isset($_POST['name'])){ $name $_POST['name']; } ?>
<div>

   <form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']) ?>">
      <div>
           Seleccione periodo:
           <select name="name">
               <option value="0" selected>Haga clic aquí</option>
               <option value="1" <?php if($_POST['name']=='1') echo 'selected="selected" ';?>> ENERO</option>
               <option value="2"  <?php if($_POST['name']=='2') echo 'selected="selected" ';?>>FEBRERO</option>
               <option value="3"  <?php if($_POST['name']=='3') echo 'selected="selected" ';?>>MARZO</option>
               <option value="4"  <?php if($_POST['name']=='4') echo 'selected="selected" ';?>>ABRIL</option>
               <option value="5"  <?php if($_POST['name']=='5') echo 'selected="selected" ';?>>MAYO</option>
               <option value="6"  <?php if($_POST['name']=='6') echo 'selected="selected" ';?>>JUNIO</option>
               <option value="7"  <?php if($_POST['name']=='7') echo 'selected="selected" ';?>>JULIO</option>
               <option value="8"  <?php if($_POST['name']=='8') echo 'selected="selected" ';?>>AGOSTO</option>
               <option value="9"  <?php if($_POST['name']=='9') echo 'selected="selected" ';?>>SEPTIEMBRE</option>
               <option value="10"  <?php if($_POST['name']=='10') echo 'selected="selected" ';?>>OCTUBRE</option>
               <option value="11"  <?php if($_POST['name']=='11') echo 'selected="selected" ';?>>NOVIEMBRE</option>
               <option value="12"  <?php if($_POST['name']=='12') echo 'selected="selected" ';?>>DICIEMBRE</option>
           </select>
           <input type="submit" name="submit" value="Consultar">
           <input type="button" onclick=" generateexcel('testTable') " value="Exportar a Excel">
       </div>
    </form>
</div>



<?php



echo "<table class='peq' id='testTable'>";

echo 
"<tr>";

 echo 
"<th class='peq'>Codigo</th>";

echo 
"<th class='peq'>Apellidos</th>";

echo 
"<th class='peq'>Nombres</th>";

echo 
"<th class='peq'>Fecha_nacimiento</th>";

echo 
"<th class='peq'>Direccion_domicilio</th>";

echo 
"<th class='peq'>Ciudad</th>";

echo 
"</tr>";

$name $_POST['name'];


ini_set('mssql.charset''UTF-8');



$msconnect=mssql_connect("ECOSOL","logfuncionario","F3s3r2017_");

$msdb=mssql_select_db("solido",$msconnect);

$msquery "Select 
    asociados.codigo, 
    asociados.nombre, 
    asociados.apellido, 
    (CONVERT (char(10),asociados.fecha_nacimiento, 103)) as fecha_nacimiento, 
    asociados.direccion, 
    asociados.ciudad
    from (
            SELECT 
              CAST(CAST(sys_maenit.CODIGOTER AS float(53)) AS decimal(10, 0))as codigo,
              sys_maenit.APELLIDO AS apellido, 
              sys_maenit.NOMBRE AS nombre, 
              sys_maenit.DIRECCION AS direccion, 
              sys_ciudad57.NOMBRE_CIUDAD AS ciudad, 
              sys_maenit.FECNACEM as fecha_nacimiento,
              sys_maenit.empresa as empresa
           FROM (solido.dbo.sys_maenit 
              CROSS JOIN solido.dbo.sys_ciudad57)
           WHERE (
              (sys_maenit.ESTADO = 'A') AND 
              (sys_maenit.CLASE = '5') AND 
              (sys_maenit.DPTO_CIUDAD = sys_ciudad57.CIUDAD))
            ) as asociados
    where asociados.empresa != '0099'
    and month(asociados.fecha_nacimiento)="
.$name." order by day(asociados.fecha_nacimiento);";

$msresultsmssql_query($msquery);
while (
$row mssql_fetch_array($msresults)){

echo 
"<tr>";
echo 
"<td class='peq'>$row[0]</td>";
echo 
"<td class='peq'>$row[1]</td>";
echo 
"<td class='peq'>$row[2]</td>";
echo 
"<td class='peq'>$row[3]</td>";
echo 
"<td class='peq'>$row[4]</td>";
echo 
"<td class='peq'>$row[5]</td>";



echo 
"</tr>";

}
echo 
"</table>";
?>






Hola y gracias por las respuestas.

Supongo que debo validar primero para que la primera vez que cargue la página haga la consulta, pero aunque coloque la validación al principio, me genera un warning:

Warning: mssql_query(): message: Incorrect syntax near the keyword 'order'. (severity 15) in /var/www/html/intraser/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()'d code on line 89

Y al hacer clic en consultar sigue redireccionando a un 404. Efectivamente necesito que el resultado de la consulta la cargue en la misma página en una tabla HTML para poder exportar a un XLS luego.

Gracias nuevamente por colaborar.

Mod: No hacer doble post.

#!drvy

Hola,

En un principio, no has validado nada en la linea 1 de tu código dado que en las siguientes sigues utilizando el $_POST que no sabemos si esta vació o no. Una forma fácil de validarlo seria comprobar si existe, y si no existe darle valor 0.

Código (php) [Seleccionar]
<?php

// Comprobar si name esta enviado y si lo esta, ponerlo. Si no, 0 por defecto.
$name = (isset($_POST['name']) ? $_POST['name'] : '0');

?>


En el html (en los option) le das selected constante al valor 0 y eso debería ir como los demás (con un if). Además, si quieres que el formulario se ejecute en la misma pagina, te basta con dejar el action= vació.

Código (html5,2,6) [Seleccionar]
<div>
    <form method="post" action="">
       <div>
            Seleccione periodo:
            <select name="name">
                <option value="0" <?php if($name=='0') echo 'selected'?> >Haga clic aquí</option>
                <option value="1" <?php if($name=='1') echo 'selected'?> >ENERO</option>
                <option value="2" <?php if($name=='2') echo 'selected'?> >FEBRERO</option>
                <option value="3" <?php if($name=='3') echo 'selected'?> >MARZO</option>
                <option value="4" <?php if($name=='4') echo 'selected'?> >ABRIL</option>
                <option value="5" <?php if($name=='5') echo 'selected'?> >MAYO</option>
                <option value="6" <?php if($name=='6') echo 'selected'?> >JUNIO</option>
                <option value="7" <?php if($name=='7') echo 'selected'?> >JULIO</option>
                <option value="8" <?php if($name=='8') echo 'selected'?> >AGOSTO</option>
                <option value="9" <?php if($name=='9') echo 'selected'?> >SEPTIEMBRE</option>
                <option value="10" <?php if($name=='10') echo 'selected'?> >OCTUBRE</option>
                <option value="11" <?php if($name=='11') echo 'selected'?> >NOVIEMBRE</option>
                <option value="12" <?php if($name=='12') echo 'selected'?> >DICIEMBRE</option>
            </select>
            <input type="submit" name="submit" value="Consultar">
            <input type="button" onclick=" generateexcel('testTable') " value="Exportar a Excel">
        </div>
     </form>
</div>


Lo mismo para el resto del codigo. Deberias realmente validar que $name NO esta vacio antes de ejecutar la query.

Código (php) [Seleccionar]
<?php

echo "<table class='peq' id='testTable'>",
  
"<tr>",
  
"<th class='peq'>Codigo</th>",
  
"<th class='peq'>Apellidos</th>",
  
"<th class='peq'>Nombres</th>",
  
"<th class='peq'>Fecha_nacimiento</th>",
  
"<th class='peq'>Direccion_domicilio</th>",
  
"<th class='peq'>Ciudad</th>",
  
"</tr>";

// Comprobar si el nombre ha sido enviado // Vacio o 0.
if(!empty($name)) {

  
// con (int) nos aseguramos de coger solo integros.
  
$name = (int) $name;

  
ini_set('mssql.charset''UTF-8');
  
$msconnect=mssql_connect("ECOSOL","logfuncionario","F3s3r2017_");
  
$msdb=mssql_select_db("solido",$msconnect);

  
$msquery "Select 
    asociados.codigo, 
    asociados.nombre, 
    asociados.apellido, 
    (CONVERT (char(10),asociados.fecha_nacimiento, 103)) as fecha_nacimiento, 
    asociados.direccion, 
    asociados.ciudad
    from (
            SELECT 
              CAST(CAST(sys_maenit.CODIGOTER AS float(53)) AS decimal(10, 0))as codigo,
              sys_maenit.APELLIDO AS apellido, 
              sys_maenit.NOMBRE AS nombre, 
              sys_maenit.DIRECCION AS direccion, 
              sys_ciudad57.NOMBRE_CIUDAD AS ciudad, 
              sys_maenit.FECNACEM as fecha_nacimiento,
              sys_maenit.empresa as empresa
           FROM (solido.dbo.sys_maenit 
              CROSS JOIN solido.dbo.sys_ciudad57)
           WHERE (
              (sys_maenit.ESTADO = 'A') AND 
              (sys_maenit.CLASE = '5') AND 
              (sys_maenit.DPTO_CIUDAD = sys_ciudad57.CIUDAD))
            ) as asociados
    where asociados.empresa != '0099'
    and month(asociados.fecha_nacimiento)="
.$name." order by day(asociados.fecha_nacimiento);";

  
$msresultsmssql_query($msquery);
  while (
$row mssql_fetch_array($msresults)){

    echo 
"<tr>",
      
"<td class='peq'>$row[0]</td>",
      
"<td class='peq'>$row[1]</td>",
      
"<td class='peq'>$row[2]</td>",
      
"<td class='peq'>$row[3]</td>",
      
"<td class='peq'>$row[4]</td>",
      
"<td class='peq'>$row[5]</td>",
      
"</tr>";
  }

} else {
  echo 
'<tr><td>No has selecionado ningun mes!</td></tr>';
}

echo 
"</table>";
?>





El error que te tira el mssql es porque tienes un error de sintaxis cerca del order by. Yo la verdad no tengo ni idea de mssql así que a ver si viene algún compañero y te ayuda.

CitarHola y gracias por las respuestas.

No esperes muchas respuestas en apenas 2 horas. Esto es un foro, no un chat y la gente no se conecta 24/7. También mencionarte que existe el botón modificar, que el doble post esta prohibido a no ser que el tema haya pasado a segunda pagina y que los temas sobre PHP van al subforo de PHP.

Estas normas que acabo de comentar las tienes explicadas en el post con chincheta en este mismo subforo.

[Obligatorio] Normas del subforo de Desarrollo Web.
https://foro.elhacker.net/desarrollo_web/obligatorio_normas_del_subforo_de_desarrollo_web_13102015-t407889.0.html

Saludos