Aller au contenu

[Résolu]Formulaire de recherche


Messages recommandés

  • Réponses 71
  • Créé
  • Dernière réponse

En effet, c'est mieux comme ca :)

Dernier petit problème, pour remplir ma bdd...

Je créer la table :

CREATE TABLE search (id INT NOT NULL PRIMARY KEY, name VARCHAR(50), num VARCHAR(50), num2 VARCHAR(50));

Et pour la remplir :

INSERT INTO search (name, num, num2) VALUES ('le name', 'le num', 'le num2');

J'ai donc fais un test en entrant :

INSERT INTO search (name, num, num2) VALUES ('Test', '0185858585', '0685858585');

Mais rien ne s'affiche quand j'effectue la recherche ...

Lien vers le commentaire
Partager sur d’autres sites

Voila le fichier search.php :

<?php
error_reporting(E_ALL);

$connection = mysql_connect("localhost","login","pass");
if ( ! $connection )
die ("Connection impossible"); 

$mabasededonnee="mabase";
mysql_select_db($mabasededonnee) or die ("Pas de connection"); 

if (isset($_POST["value"]))
 {
$value = mysql_real_escape_string($_POST["value"]);
$search = "search";
  if (is_numeric($value))
 $sql = "SELECT * FROM $search WHERE num LIKE '".$value."'";
else
 $sql = "SELECT * FROM $search WHERE name LIKE '%".$value."%'";
echo $sql."\n";
$res = mysql_query($sql) or die (Probleme);
print_r($res);
echo "<tr><th>Nom</th><th>Numéro de téléphone</th><th>Numéro de téléphone 2</th></tr>";
$sql = 0;
while ($row = mysql_fetch_array($res) && $sql++)
  echo '<tr><td>' . $row['name'] . '</td><td>' . $row['num'] . '</td><td>' . $row['num2'] . '</td></tr>';
if ($sql)
  echo "<tr><td colspan=2><i>Pas de résultats correspondant à votre recherche</i></td></tr>";
echo "</table>";
 }

mysql_close($connection);

?>

Lien vers le commentaire
Partager sur d’autres sites

Ah ca avance on dirait.

Quand je remplace :

while ($row = mysql_fetch_array($res) && $sql++)

Par :

while ($row = mysql_fetch_array($res))

Je vois les données de la base apparaître mais avec encore un petit probleme :

SELECT * FROM search WHERE name LIKE '%Test%' Resource id #3NomNuméro de téléphone Numéro de téléphone 2Test01858585850685858585

Sinon, quand je remplace :

while ($row = mysql_fetch_array($res) && $sql++)

Par :

while ($row = mysql_fetch_array($res) && mysql_num_rows($res))

Je la meme chose mais sans les données de la base.

Lien vers le commentaire
Partager sur d’autres sites

pas obligatoire si t'as qu'une instruction dans ton bloc if/while/for

mets ça :

while ($row = mysql_fetch_array($res))
  echo '<tr><td>' . $row['name'] . '</td><td>' . $row['num'] . '</td><td>' . $row['num2'] . '</td></tr>';
if (mysql_num_rows($res) == 0)
  echo "<tr><td colspan=2><i>Pas de résultats correspondant à votre recherche</i></td></tr>";
echo "</table>";

Ensuite je vois pas de <table>, je sais pas si t'en a mis un avant tout ça ou pas, sinon il faut le mettre avant echo "<tr><th>Nom</th><th>Numéro de téléphone</th><th>Numéro de téléphone 2</th></tr>";

Lien vers le commentaire
Partager sur d’autres sites

il me semble qu'il y en a un

les accolades ne sont effectivement pas necessaires pour une ligne de traitement

par contre, j'ai fait un amalgame avec le C, apparemment, rajouter le $sql++ dans les conditions de la boucle ne doit pas etre une bonne idee

alors, pour rester sur le C, et pour le plaisir de ne pas mettre d'accolades

for ($sql = 0; $row = mysql_fetch_array($res); $sql++)
 echo '<tr><td>'.$row['name'].'</td><td>'.$row['num'].'</td><td>'.$row['num2'].'</td></tr>';
if (!$sql)
 echo "<tr><td colspan=3><center><i>Pas de résultats correspondant à votre recherche</i></center></td></tr>";

(enfin, c'est exactement la meme chose qu'a fait Dark Sephiroth)

juste penser a changer le 2 en 3 dans le colspan (maintenant que t'affiches plusieurs numeros, t'as plus de colonnes)

Lien vers le commentaire
Partager sur d’autres sites

Perso je préfère éviter les accolades en C ou php lorsqu'il n'y a qu'une instruction, ça permet de rendre le code plus lisible.

Quand l'instruction est très courte, on peut même mettre tout sur une ligne (if ($blah%2) echo "truc":transpi:

Par contre en perl c'est obligatoire, sauf à mettre la condition après l'instruction.

Lien vers le commentaire
Partager sur d’autres sites

ca part peut-etre un peut trop en hors sujet, mais un defenseur des accolades inutiles, ca merite le buchet, ou le goudron et les plumes :)

c'est plus beau sans accolades

(c'est quand tu imbrique tes ternaires dans l'affectation, les conditions et le traitement que ca devient un peut hard a la lecture, mais quand bien meme ce serait le cas, les accolades rendraient pas la chose plus lisible)

Lien vers le commentaire
Partager sur d’autres sites

Bon et bien rien de nouveau avec vos interventions, j'obtiens toujours le même résultat :

SELECT * FROM search WHERE name LIKE '%Test%' Resource id #3NomNuméro de téléphone Numéro de téléphone 2Test01858585850685858585

Que ce soit avec le code à Mephisto :

<?php
error_reporting(E_ALL);

$connection = mysql_connect("localhost","login","pass");
if ( ! $connection )
die ("Connection impossible");

$mabasededonnee="mabase";
mysql_select_db($mabasededonnee) or die ("Pas de connection");

if (isset($_POST["value"]))
 {
$value = mysql_real_escape_string($_POST["value"]);
$search = "search";
  if (is_numeric($value))
 $sql = "SELECT * FROM $search WHERE num LIKE '".$value."'";
else
 $sql = "SELECT * FROM $search WHERE name LIKE '%".$value."%'";
echo $sql."\n";
$res = mysql_query($sql) or die (Probleme);
print_r($res);
echo "</table>";
echo "<tr><th>Nom</th><th>Numéro de téléphone</th><th>Numéro de téléphone 2</th></tr>";
$sql = 0;
for ($sql = 0; $row = mysql_fetch_array($res); $sql++)
 echo '<tr><td>'.$row['name'].'</td><td>'.$row['num'].'</td><td>'.$row['num2'].'</td></tr>';
if (!$sql)
 echo "<tr><td colspan=3><center><i>Pas de résultats correspondant à votre recherche</i></center></td></tr>";
 }

mysql_close($connection);

?>

Ou avec le code à Dark Sephiroth :

<?php
error_reporting(E_ALL);

$connection = mysql_connect("localhost","login","pass");
if ( ! $connection )
die ("Connection impossible");

$mabasededonnee="mabase";
mysql_select_db($mabasededonnee) or die ("Pas de connection");

if (isset($_POST["value"]))
 {
$value = mysql_real_escape_string($_POST["value"]);
$search = "search";
  if (is_numeric($value))
 $sql = "SELECT * FROM $search WHERE num LIKE '".$value."'";
else
 $sql = "SELECT * FROM $search WHERE name LIKE '%".$value."%'";
echo $sql."\n";
$res = mysql_query($sql) or die (Probleme);
print_r($res);
echo "</table>";
echo "<tr><th>Nom</th><th>Numéro de téléphone</th><th>Numéro de téléphone 2</th></tr>";
$sql = 0;
while ($row = mysql_fetch_array($res))
  echo '<tr><td>' . $row['name'] . '</td><td>' . $row['num'] . '</td><td>' . $row['num2'] . '</td></tr>';
if (mysql_num_rows($res) == 0)
  echo "<tr><td colspan=2><i>Pas de résultats correspondant à votre recherche</i></td></tr>";
 }

mysql_close($connection);

?>

En plus, Dark Sephiroth a raison, il n'y a pas de <table> avant, donc je place echo "</table>"; avant echo "<tr><th>Nom</th><th>Numéro de téléphone</th><th>Numéro de téléphone 2</th></tr>";

Lien vers le commentaire
Partager sur d’autres sites

Pour le table, t'as mal compris, je voulais dire de faire ça :

<?php
error_reporting(E_ALL);

$connection = mysql_connect("localhost","login","pass");
if ( ! $connection )
die ("Connection impossible");

$mabasededonnee="mabase";
mysql_select_db($mabasededonnee) or die ("Pas de connection");

if (isset($_POST["value"]))
 {
$value = mysql_real_escape_string($_POST["value"]);
$search = "search";
  if (is_numeric($value))
 $sql = "SELECT * FROM $search WHERE num LIKE '".$value."'";
else
 $sql = "SELECT * FROM $search WHERE name LIKE '%".$value."%'";
echo $sql."\n";
$res = mysql_query($sql) or die (Probleme);
print_r($res);
  [b] echo "<table>";[/b]
echo "<tr><th>Nom</th><th>Numéro de téléphone</th><th>Numéro de téléphone 2</th></tr>";
$sql = 0;
while ($row = mysql_fetch_array($res))
  echo '<tr><td>' . $row['name'] . '</td><td>' . $row['num'] . '</td><td>' . $row['num2'] . '</td></tr>';
if (mysql_num_rows($res) == 0)
  echo "<tr><td colspan=2><i>Pas de résultats correspondant à votre recherche</i></td></tr>";
[b]echo "</table>";[/b]
 }

mysql_close($connection);

?>

et là, tes données devraient être bien placé dans ton tableau (tu peux même ajouter <table border="1"> plutôt que <table> pour avoir une bordure)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...