J'ai réalisé un script de recherche, mais la requête est un peu difficile à élaborer et j'obtiens :
lecture impossible, 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dans_nom ORDER BY dans_nom ASC' at line 2
Avec mon echo ça donne :
SELECT dans_id AS 'id', dans_nom AS 'nom', dans_prenom AS 'prenom' FROM personne WHERE lower(nom) LIKE '%OK%'dans_nom ORDER BY dans_nom ASC
D'ailleurs le %OK% c'est bizarre, car ce n'est pas ce que j'ai tapé dans la form. Ici mon script qui contient ma form:
<body>
<form action="modif.php" method="post" enctype="application/x-www-form-urlencoded">
<fieldset>
<legend>Personne à modifier</legend>
<label>votre id:</label><input type="text" name="id" size="20"/>
<input type="submit" name="submit" value="Modifier"/>
</fieldset>
</form>
<form action="recherche.php" method="post" enctype="application/x-www-form-urlencoded">
<fieldset>
<legend>Recherche</legend>
<label>Entrez le mot clé</label>
<input type="text" name="recherche" size="40" maxlength="40"/>
<label>Recherche dans</label>
<select name="contenu">
<option value="dans_id"> Id</option>
<option value="dans_nom"> nom</option>
<option value="dans_prenom"> prénom</option>
<option value="dans_tous">Toute catégorie</option>
</select>
<label>Par ordre :</label>
Croissant<input type="radio" name="ordre" value="ASC" checked="checked"/>
Décroissant<input type="radio" name="ordre" value="DESC"/>
<br/>
<input type="submit" name="" value="OK"/>
</fieldset>
</form>
</body>
</html>
<!--Affichage des données triées de la BDD-->
Suite en PHP
<?php
include("mysqlconnex.inc.php");
$id_con=connexMysql("isis_bdd","paramconnex");
//requête
$requete="SELECT * FROM personne ORDER BY nom ASC";
$result=mysql_query($requete,$id_con);
if(!$result)
{
echo'Lecture impossible !';
}
else
{
$nbcol=mysql_num_fields($result);
$nblig=mysql_num_rows($result);
echo"nombre colonnes = $nbcol (Id,nom,prenom,mail)<br/>";
echo"nombre lignes = $nblig (entrées actuellement)<br/>";
echo"Contenu :<br/>";
while($tab_result=mysql_fetch_array($result,MYSQLI_ASSOC))
{
foreach($tab_result as $col=>$val)
{
echo"<ul><li>$col = $val</li></ul>";
}
echo"-----------------";
}
}
mysql_free_result($result);
?>
Et celui qui contient le script recherche.php là ou j'ai un soucis avec la requête :<?php
if(!empty($_POST["recherche"]))
{
include('mysqlconnex.inc.php');
$id_con=connexMysql('Isis_bdd','paramconnex');
$motcle=secur($_POST["recherche"],$id_con);
$contenu=secur($_POST["contenu"],$id_con);
$ordre=secur($_POST["ordre"],$id_con);
//requête
$reqContenu=($contenu=="dans_tous") ?"":"AND contenu='$contenu'";
$requete="SELECT dans_id AS 'id', dans_nom AS 'nom', dans_prenom AS 'prenom'
FROM personne WHERE lower(nom) LIKE '%$motcle%'".$contenu." ORDER BY $contenu $ordre";
echo '<br/>'.$requete;
$result=mysql_query($requete,$id_con);
if(!$result)
{
echo'<br/>lecture impossible, '.mysql_errno().' : '.mysql_error();
}
else
$nbcol=mysql_num_fields($result);
$nblig=mysql_num_rows($result);
echo"</br>nb de personnes: $nblig correspond à $motcle";
//affiche titres mysql
for($i=0;$i<$nbcol;$i++)
{
echo'<ul><li>'.mysql_field_name($result,$i).'</li></ul>';
}
//affiche valeurs
for($i=0;$i<$nblig;$i++)
{
$ligne=mysql_fetch_row($result);
echo'<ul><li>';
for($j=0;$j<$nbcol;$j++)
{
echo $ligne[$j];
}
echo'</li></ul>';
mysql_free_result($result);
}
}
?>
Merci