Formulaire a choix multiples.

Fermé
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 - 11 juin 2013 à 09:41
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 - 11 juin 2013 à 11:32
Bonjour a vous tous,

Après quelques jours de recherches sur le net , X tentatives pour faire marcher mon script , je me retrouve au point mort sans solutions.

Je vous explique , actuelement , je doit créer un formulaire avec plusieurs critères (champs texte) , ainsi , l'utilisateur , remplit un ou plusieurs des 3 champs et on lui donne un resultat a sa recherche en fonctions de ce qu'il a marqué. la partie formulaire et fini.
Je vous copie-colle le script si cela peut vous aider :

<center><form method="post" action="./Resultat.php">
Type de document :<br>
<input type="text" Id = "Type" name="Type" size="15">

<center><form method="post" action="./Resultat.php">
Unité :<br>
<input type="text" Id = "Unit" name="Unit" size="15">


<center><form method="post" action="./Resultat.php">
Pgm avion :<br>
<input type="text" Id = "Pgm" name="Pgm" size="15">

<input type="submit" value="rechercher" alt="Lancer la recherche!">
</form></center>


Donc on arrive a mon problème , le script php ... lors de l'appuit sur le bouton rechercher , la page resultat ce charge , sans rien affiche , pas même une erreur.

script php :

<?php

$base=mysql_connect('localhost','root','root');
mysql_select_db('archivetest');

//recherche des résultats dans la base de données
$Type1 = '';
$Unite1 = '';
$Pgm1 = '';


if (isset($_POST['rechercher'])) {
$where = array();

if (isset($_POST['Type']) && strlen($Type1 = trim($_POST['Type']))) {
$where[] = "Type LIKE '%".mysql_real_escape_string($Type1)."%'";
}

if (isset($_POST['Unit']) && strlen($Unite1 = trim($_POST['Unite']))) {
$where[] = "Unit LIKE '%".mysql_real_escape_string($Unite1)."%'";
}

if (isset($_POST['Pgm']) && strlen($Pgm1 = trim($_POST['Pgm']))) {
$where[] = "Pgm LIKE '%".mysql_real_escape_string($Pgm1)."%'";
}

if (empty($where)):
echo 'Vous devez remplir au moins un des champs de recherche !';

else:
$sql = "SELECT Type_de_document, Unite, Pgm_avion
FROM contenu
WHERE ". implode(' AND ', $where) . "
LIMIT 10";

$result = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br /><b>'.mysql_error().'</b>'); ?>
<div class="article-result">

<?php if (mysql_num_rows($result) == 0): ?>
<h3 style="text-align:center; margin:10px 0;">Pas de résultats pour cette recherche</h3>

<?php else: ?>
<table>
<thead>
<tr>
<th class="td_seach_titre">Type</th>
<th class="td_seach_titre">Unite</th>
<th class="td_seach_titre">Pgm</th>

</tr>
</thead>
<tbody>
<?php while($row = mysql_fetch_assoc($result)): ?>
<tr>
<td class="td_seach"><?php echo $row['Type1']; ?></td>
<td class="td_seach"><?php echo $row['Unite1']; ?></td>
<td class="td_seach"><?php echo $row['Pgm1']; ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
<?php endif; ?>
</div>
<?php endif; ?>
<?php
}

?>


Je voulais connaitre votre avie sur ce script.

Pour information je travaille en local sous Xampp , PhpMyAdmin ...

La table a plus de 7000 lignes (oui grosse BDD)

Voila , en ésperant que quelqu'un puisse me donner une solution.

Passer une bonne fin de journée






4 réponses

Utilisateur anonyme
11 juin 2013 à 10:13
Bonjour

Première remarque : tu ouvres trois fois la balise <form> pour ton formulaire, ce n'est pas normal du tout. Mais je doute que ça empêche ton script de marcher.

As-tu fait un print_r($_POST) pour voir quelles données sont réellement reçues par ton script ? et un echo $sql pour voir quelle est la requête effectivement envoyée à MySQL ?
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
11 juin 2013 à 10:23
Pour les balises <form> , j'ai été trop rapide et j'ai fait un mauvais copier-coller ^^.

Oui j'ai fait un print_r($_POST) , le script recoit bien les bonnes données.
Pareillement pour echo $sql.
0
Utilisateur anonyme
11 juin 2013 à 10:49
As-tu essayé sur une copie réduite de ta base (une centaine de lignes seulement par exemple) ?
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
Modifié par lDarkRaven le 11/06/2013 à 11:08
Nop , j'ai tenter avec une trente lignes , mais s'a m'a rien trouver encore. toujours la même "page blanche" si on peut dire
0
Alors essayons de coincer le problème :
echo 'avant';
$result = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br /><b>'.mysql_error().'</b>');
echo 'après'; die();?>
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
11 juin 2013 à 11:14
Hum , n'y le 'Avant' , n'y le 'Après' ne s'affiche.
0
Utilisateur anonyme
11 juin 2013 à 11:17
Je m'y attendais.

Peux-tu me dire comment tu as fait pour afficher $sql, alors que tu n'as pu le faire qu'à la place du echo 'avant'; ????
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
11 juin 2013 à 11:21
Ah oui en effet , je me suis planter lors du echo $sql; désolé :/
Non le $sql n'affiche rien.
0
Alors pourquoi avais-tu dit qu'il s'affichait correctement ?
Est-ce que je peux te croire quand tu me dis qu'il y a bien les bonnes valeurs dans $_POST ?

désolé :/ Il n'y a pas de quoi, ça arrive tous les jours de dire qu'on a fait un essai alors qu'on ne l'a pas fait....

Désolé moi aussi, je n'ai plus de temps à te consacrer.
0
lDarkRaven Messages postés 72 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 3 février 2016 12
11 juin 2013 à 11:32
Bon et bien merci quand même du temps que tu ma consacrer (même si les valeurs du $_POST sont bonnes)
Je vais bien trouver une réponse sur le net.
0