Bonjour.
J'ai un souci pour faire fonctionner une requête SQL contenant un LIKE et une variable.

// récupération des variables POST: 
	$nom=isset($_POST['nom'])?$_POST['nom']:'';
	
	foreach($bdd->query("SELECT * FROM adherents WHERE nom LIKE '."$nom".%' ") as $row) {
		echo "<tr>";
			echo "<td height=20> $row[0] </td><td> $row[1] </td><td> $row[2] </td><td> $row[3] </td><td> $row[4] </td>
				  <td> $row[5]</td><td> $row[6] <br></td>";
		echo "</tr>";
	}

Mais aucun résultat retourné.
Par contre si je mets ... LIKE "%ex%" '); j'aurais les résultats voulus retournés.
Étant débutant je piétine malgré mes recherches, si quelqu'un pouvait m'aider ça serait sympa.
Merci par avance.
Cordialement, modus57.
Modifié par modus57 (21 Mar 2017 - 14:53)
Salut Smiley smile
modus57 a écrit :



	foreach($bdd-&gt;query("SELECT * FROM adherents WHERE nom LIKE '."$nom".%' ") as $row)


Ton problème est simple Smiley smile

tu n'as pas compris le principe d'écriture de la concaténation Smiley smile

Change ta ligne comme ci-dessous et ça fonctionnera Smiley smile
foreach($bdd-&gt;query("SELECT * FROM adherents WHERE nom LIKE '".$nom."%' ") as $row)
Bonjour pchlj Smiley smile

J'ai testé ta concaténation mais ça renvoi l'erreur suivante que j'essaye de corriger :
Parse error: syntax error, unexpected '&' in...
Modifié par modus57 (21 Mar 2017 - 17:26)
t'es sérieux ?? Smiley eek

$bdd-&gt; - erreur avec le message il suffit de mettre le bon caractère
$bdd->
En mettant le bon caractère $bdd-> ça ne renvoi pas les noms filtrés ?
Modifié par modus57 (21 Mar 2017 - 18:29)
Bonsoir Zelena.

Voici mon code complet :

<html>
<head>
	<link href="\CSS\style.css" rel="stylesheet" type="text/css"/>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Filtre adhérents</title>
</head>
 
<body> 
	<form action = "#" method = "post">
		<input type="hidden" name="ID" value=""/>
		<input type="text" name="Nom" placeholder="nom" />
		<input type="text" name="Pseudo" placeholder="pseudo" />
		<input type="text" name="Sexe" placeholder="sexe" />
		<input type="number" name="Age" placeholder="age" /><br>
		<input type="date" name="Date naissance" placeholder="datenaissance" />
		<input type="date" name="Date d'inscription" placeholder="dateInscription" /><br><br>
		<input type="submit" name="inserer" class="submit"/> 
	</form>			

	<table BORDER="1">
	<caption style='font-weight:bold;'> FILTRE BDD ADHERENTS </caption><br>
		<tr>
			<th style="width:25px;height:25px;background-color:#CEE3F6;"> N°  </th>
			<th style="width:100px;background-color:#CEE3F6;"> Nom </th>
			<th style="width:75px;background-color:#CEE3F6;"> Pseudo </th>
			<th style="width:30px;background-color:#CEE3F6;"> Sexe </th>
			<th style="width:30px;background-color:#CEE3F6;"> Age </th>
			<th style="width:95px;background-color:#CEE3F6;"> Date naissance </th>
			<th style="width:95px;background-color:#CEE3F6;"> Date inscription </th>
		</tr>  
<?php
	// Connexion à la base de données
	include "connect_pdo.php";
	
	// récupération des variables POST: 
	$ID=isset($_POST['ID'])?$_POST['ID']:'';
	$nom=isset($_POST['nom'])?$_POST['nom']:'';
	$pseudo=isset($_POST['pseudo'])?$_POST['pseudo']:'';
	$sexe=isset($_POST['sexe'])?$_POST['sexe']:'';
	$age=isset($_POST['age'])?$_POST['age']:'';
	$datenaissance=isset($_POST['datenaissance'])?$_POST['datenaissance']:'';
	$dateInscription=isset($_POST['dateInscription'])?$_POST['dateInscription']:'';
	
	foreach($bdd->query("SELECT * FROM adherents WHERE nom LIKE ' ".$nom."%' ") as $row){		
echo "<tr>";
			echo "<td height=20> $row[0] </td><td> $row[1] </td><td> $row[2] </td><td> $row[3] </td><td> $row[4] </td>
				  <td> $row[5]</td><td> $row[6] <br></td>";
		echo "</tr>";
	}
?>
</body>
</html>

Je suppose qu'il faut positionner le fetch dans le foreach, mais j'avoue franchement que je ne sais pas comment procéder ?
Bonsoir à vous.

Finalement j'ai trouvé, voici la solution au cas ou si quelqu'un rencontre le même problème :
• pour la variable :
$varlike = $_POST['Nom'];

• pour la boucle :
foreach($bdd->query("SELECT * FROM adherents WHERE nom LIKE ' ".$varlike." ' ") as $row)

Cela permet de saisir dans le champ par exemple : %A% ou B% …