Formulari d'esborrament d'usuari
Formulari de cerca i selecció per esborrar
De la mateixa manera que amb la cerca d’usuaris, definim criteris de cerca i a l’hora d’obtenir-los ens assegurem que sigui un de definit
<!-- Formulari de cerca -->
<form method="post">
<label for="criteri">Selecciona el criteri de cerca:</label>
<select name="criteri" id="criteri" required>
<option value="">-- Selecciona --</option>
<option value="numeroDocument">DNI/NIE/Passaport</option>
<option value="email">Correu electrònic</option>
<option value="telf">Telèfon mòbil</option>
<option value="nom_cognoms">Nom i cognoms</option>
</select>
<label for="valor">Introdueix el valor a cercar:</label>
<input type="text" id="valor" name="valor" required>
<input type="submit" value="Cercar">
</form>
A més, també requerim una connexió de lectura i assignem tant el criteri seleccionat com el valor, i comprovem que el criteri n’és un de permès
require_once "../php/connexioR.php"; // Requerim una sola vegada la connexió de lectura
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$criteri = $_POST['criteri']; // Definim la variable criteri
$valor = trim($_POST['valor']); // Definim la variable valor
// Validar criteri
$columnes_permeses = ['numeroDocument', 'email', 'telf', 'nom_cognoms']; // Definim el nom de les columnes permeses en la cerca
if (!in_array($criteri, $columnes_permeses)) { // Si el criteri de cerca no està en l'array de columnes permeses (usat per millorar la seguretat, evitant injeccions SQL)
echo "<p style='color:red;'>Criteri no vàlid.</p>";
}
A partir d'aquí, els resultats que retornarà serà únicament la ID, el nom i cognoms, el nº de document, l’email i el telèfon (dades bàsiques). De la mateixa manera, el SELECT és un pels noms i cognoms i un altre per la resta de criteris
if ($criteri === 'nom_cognoms') { // Ja que el nom i cognom està separat a la base de dades
$stmt = $conn->prepare("SELECT id, tipusDocument, numeroDocument, nom, cognoms, email, telf FROM Usuaris WHERE CONCAT(nom,' ',cognoms) = :valor"); // El WHERE es diferent, ja que hem de concatenar les dues columnes } else { $stmt = $conn->prepare("SELECT id, tipusDocument, numeroDocument, nom, cognoms, email, telf FROM Usuaris WHERE $criteri = :valor"); // Ja que el nom dels valors i el criteri tenen el mateix nom, és el mateix WHERE per tots }$stmt->bindParam(':valor', $valor); // Assignem la variable $valor al paràmetre enllaçat de la consulta preparada $stmt->execute(); // Executem el SELECT $result = $stmt->fetchAll(PDO::FETCH_ASSOC); // Recupera tots els registres (files) que retorna la consulta // PDO::FETCH_ASSOC fa que cada fila es retorni com una array associativa, on les claus són els noms de les columnes
Un cop trobats els resultats, generarem un formulari, ja que voldrem enviar certes dades, i la taula amb els resultats, començant per les capçeleres, havent-hi com a novetat, una columna de nom “selecciona” que contindrà caselles de selecció.
if (!$result) { // En cas que el SELECT no retorni res
echo "<p>No s'ha trobat cap usuari amb aquest criteri.</p>";
} else { // En cas que el SELECT retorni algun registre
echo "<p>Resultats trobats:</p>";
echo "<form method='post' action='../php/esborrarConfirmar.php'>"; // Imprimirem un formulari el qual enviarà l'usuari seleccionat per esborrar i la seva contrasenya
echo "<div class='table-wrapper'>";
echo "<table border='1' cellpadding='5'>"; // Imprimim la taula
// Imprimim les capçaleres de la taula
echo "<tr>";
echo "<th>Selecciona</th>";
echo "<th>Tipus Document</th>";
echo "<th>Nº Document</th>";
echo "<th>Nom</th>";
echo "<th>Cognoms</th>";
echo "<th>Email</th>";
echo "<th>Telèfon</th>";
echo "</tr>";
I amb les capçaleres ja creades, imprimirem tots els resultats. A cada registre hi haurà un botó d’opció que tindrà com a valor la ID del registre. Això és així per seleccionar quin usuari es vol eliminar. Aques botó de selecció és obligatori, ja que hem de seleccionar quin usuari volem esborrar, tot i que en la cerca únicament aparegui un sol registre.
foreach ($result as $fila) { // Imprimim tots els registres
echo "<tr>"; // Iniciem la fila
// Imprimim radiobuttions per seleccionar l'usuari a esborarr
echo "<td><input type='radio' name='id_borrar' value='" . htmlspecialchars($fila['id']) . "' required></td>"; // El valor del radiobutton és l'ID del registre de la base de dades. Així podem identificar-lo únicament
// Imprimim la resta de camps dels registres
echo "<td>" . htmlspecialchars($fila['tipusDocument']) . "</td>";
echo "<td>" . htmlspecialchars($fila['numeroDocument']) . "</td>";
echo "<td>" . htmlspecialchars($fila['nom']) . "</td>";
echo "<td>" . htmlspecialchars($fila['cognoms']) . "</td>";
echo "<td>" . htmlspecialchars($fila['email']) . "</td>";
echo "<td>" . htmlspecialchars($fila['telf']) . "</td>";
echo "</tr>"; // Tanquem la fila
}
echo "</table><br>"; // Tanquem la taula
echo "</div>";
Per últim, crearem un camp per escriure la contrasenya de l’usuari, ja que per eliminar-lo, requerirà la contrasenya d’aquell usuari per tal de completar l’operació; a més del botó d’esborrar
echo "<label for='contrasenya'>Introdueix la contrasenya de l'usuari seleccionat:</label>"; // Requerim la contrasenya per esborrar les dades echo "<input type='password' id='contrasenya' name='contrasenya' required>"; echo "<input type='submit' value='Esborrar usuari'>"; // Botó per esborrar l'usuari echo "</form>";
El resultat final després de fer una cerca al formulari d’esborrament d’usuaris és el següent: