entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Buscador php 2 variables

Hola, estoy poniendo en la web del ayuntamiento un apartado para consulta de la nota en la bolsa, y consigo hacer la busqueda por la variable registro sin error, pero necesito que ademas de registro me busque por la variable dni, pero cuando la incluyo me da error y no caigo como incluirla correctamente.

Este es mi codigo :

<!DOCTYPE html>
<html lang="en">
<head>
<title>Bolsa de trabajo</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
<h2>Bolsa de trabajo</h2>
<form role = 'form' method = 'POST'>
<div class="form-group">
<label for="registro">Cod. Registro</label>
<input type="text" class="form-control" name="registro" placeholder="Introduzca Código de Registro" required>
<label for="dni">DNI</label>
<input type="text" class="form-control" name="dni" placeholder="Introduzca DNI" required>
</div>
<button type="submit" class="btn btn-default">Consultar</button>
</form>
<?php

if($_POST){
require('conexion.php');
$con = Conectar();
$id = $_POST['registro'];
$SQL = 'SELECT dni, nombre, apellidos, puesto_solicitado, admitido, puntos, observaciones FROM bolsa WHERE registro = :reg';
$stmt = $con->prepare($SQL);
$result = $stmt->execute(array(':reg'=>$id));
$rows = $stmt->fetchAll(\PDO::FETCH_OBJ);
if(count($rows)){
foreach ($rows AS $row) {
?>
<div class="panel panel-primary">
<div class="panel-heading">Información del usuario con registro : <?php print($id)?></div>
<div class="panel-body">
<?php print('NOMBRE :'.$row->nombre.'<br>')?>
<?php print('APELLIDOS :'.$row->apellidos.'<br>')?>
<?php print('DNI :'.$row->dni.'<br>')?>
<?php print('PUESTO SOLICITADO :'.$row->puesto_solicitado.'<br>')?>
<?php print('ADMITIDO :'.$row->admitido.'<br>')?>
<?php print('PUNTOS :'.$row->puntos.'<br>')?>
<?php print('OBSERVACIONES :'.$row->observaciones.'<br>')?>
</div>
</div>
<?php
}
}else{
echo 'el usuario no existe en la base de datos';
}
}
?>
</div>

</body>
</html>

2 Respuestas

1voto

jj19958 Puntos4130

observo en tu código que solo tienes $id = $_POST['registro']; y que te falta $dni = $_POST['dni']; y para hacer la consulta queda algo así

SELECT dni, nombre, apellidos, puesto_solicitado, admitido, puntos, observaciones FROM bolsa WHERE registro = :reg AND bolsa.dni='$dni'

espero que te sirva...
saludos :)

0voto

Hooke37 comentado

Gracias ya lo saque. Ahora lo que me interesaria es poner un condicional, para en el caso de estar admitido no muestre el campo observaciones.

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bolsa de trabajo</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <h2>Bolsa de trabajo</h2>
  <form role = 'form' method = 'POST'>
    <div class="form-group">
      <label for="registro">Cod. Registro</label>
      <input type="text" class="form-control" name="registro" placeholder="Introduzca Código de Registro" required>
      <label for="dni">DNI</label>
      <input type="text" class="form-control" name="dni" placeholder="Introduzca DNI" required>
    </div>
    <button type="submit" class="btn btn-default">Consultar</button>
  </form><br>
<?php

if($_POST){
require('conexion.php');
$con = Conectar();
$id = $_POST['registro'];
$dn = $_POST['dni'];
$SQL = 'SELECT dni, nombre, apellidos, puesto_solicitado, admitido, puntos, observaciones FROM bolsa WHERE registro = :reg AND dni = :di';
$stmt = $con->prepare($SQL);
$result = $stmt ->execute(array(':reg' => $id, ':di' => $dn));
$rows = $stmt->fetchAll(\PDO::FETCH_OBJ);
if(count($rows)){
foreach ($rows AS $row) {
?>
<div class="panel panel-primary">
  <div class="panel-heading">Información del usuario con registro : <?php print($id)?></div>
  <div class="panel-body">
    <?php print('NOMBRE :'.$row->nombre.'<br>')?>
    <?php print('APELLIDOS :'.$row->apellidos.'<br>')?>
    <?php print('DNI :'.$row->dni.'<br>')?>
    <?php print('PUESTO SOLICITADO :'.$row->puesto_solicitado.'<br>')?>
    <?php print('ADMITIDO :'.$row->admitido.'<br>')?>
    <?php print('PUNTOS :'.$row->puntos.'<br>')?>
    <?php print('OBSERVACIONES :'.$row->observaciones.'<br>')?>
  </div>
</div>
<?php
}
}else{
  echo 'el usuario no existe en la base de datos';

} 
}
?>
</div>

</body>
</html>

0voto

Hooke37 comentado

Gracias ya lo saque. Ahora lo que me interesaria es poner un condicional, para en el caso de estar admitido no muestre el campo observaciones.

0voto

jj19958 comentado

Necesitas ser mas claro de lo que necesitas.
saludos...

0voto

Hooke37 comentado

https://ibb.co/c8VK13S
Eso es un enlace a una imagen en la que muestro lo que necesito, mas claro
Un condicional en el que en el caso de admitido=si, no me muestre el campo observaciones, o si el campo observaciones esta vacio no se muestre

0voto

jj19958 Puntos4130

lo que entendí se hace de esta manera... es una simple condicional y lo puedes hacer con un if...
espero te ayude saludos:)

    <?php
if(($row->admitido)==NO){
  echo row->observaciones;
}else{
}
?>

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta