Bon, j'ai avancé un peu dans mes affaires, mais le programme php qui exploite un formulaire coince toujours à un endroit. Et là je suis un peu paniquée, je dois terminer tout aujourd'hui. Etant grande débutante, je m'excuse pour la maladresse du code que je vous présente...
Toutes les requêtes marchent parfaitement, sauf si je combine le contenu du champ "Nom commence par..." à celui d'un autre (Maison, Année etc..). J'ai tout vérifié, je ne vois pas d'où peut venir le problème.
J'ai testée les requêtes directement sur la base de données (hébergé chez OVH) en passant par PhPMyadmin / Recherche et j'ai repris leur code, d'où les CONVERT et autres indications. Faites comme ça, elles marchent toutes.. aussi celles qui concernent les combinaisons avec "Nom commence par". Mais dès que fais les requêtes de mon site, en passant par le formulaire html et mon programme php, le problème réapparait. C'est ça que je ne comprends pas.
Voici deux test qui devraient fournir un résultat:
Mettre Car dans "Nom commence par" et 1523 dans "Année".
Mettre Car dans "Nom commence par" et Catherine de Médicis dans "Maison".
Voici le code html de la rubrique du formulaire:
<td class="label">Nom commence par</td>
<td class="input"><input type="text" id="debut" name="debut" valeur=""/></td>
<td class="help" colspan="2"><i>Ex.: "Mont" ou "Montmorency"...</i></td>
Et voici le programme php associé:
<?php
/* Etablit la connexion au fichier qui contient les mots de passe et
informations sur le serveur et la base de données */
require ("../connect.php" );
/* Etablit la connexion avec le serveur mysql et la base de données mysql */
$connexion = mysql_pconnect($serveur, $user, $mdp) or die("Connexion au serveur impossible" );
$db = mysql_select_db($base, $connexion)or die("Connexion à la base impossible" );
/* Variables pour le contenu des champs de saisie */
$debut = $_GET['debut'];
$motcle = $_GET['motcle'];
$reineroi = $_GET['reineroi'];
$year = $_GET['year'];
$compil = $_GET['compil'];
/* requêtes sur nom et motclé uniquement */
if (($debut) && (!$motcle) && (!$reineroi) && (!$year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 )COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($motcle) && (!$debut) && (!$reineroi) && (!$year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($debut) && ($motcle) && (!$reineroi) && (!$year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 )COLLATE latin1_swedish_ci OR `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
/* Requete sur nom, motclé et maison */
elseif (($debut) && (!motcle) && ($reineroi) && (!$year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Maison` LIKE CONVERT( _utf8 '$reineroi' USING latin1 ) COLLATE latin1_swedish_ci AND `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($motcle) && (!$debut) && ($reineroi) && (!$year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Maison` LIKE CONVERT( _utf8 '$reineroi' USING latin1 ) COLLATE latin1_swedish_ci AND `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($debut) && ($motcle) && ($reineroi) && (!$year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Maison` LIKE CONVERT( _utf8 '$reineroi' USING latin1 ) COLLATE latin1_swedish_ci AND `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 ) COLLATE latin1_swedish_ci OR `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
/* Requete sur nom, motclé et annee */
elseif (($debut) && (!motcle) && (!$reineroi) && ($year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Annee` ='$year' AND `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($motcle) && (!$debut) && (!$reineroi) && ($year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Annee` ='$year' AND `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($debut) && ($motcle) && (!$reineroi) && ($year) && (!$compil))
{$requete="SELECT * FROM `Etat` WHERE `Annee` ='$year' AND `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 ) COLLATE latin1_swedish_ci OR `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
/* Requete sur nom, motclé et periode */
elseif (($debut) && (!motcle) && (!$reineroi) && (!$year) && ($compil))
{$requete="SELECT * FROM `Etat` WHERE `Periode` LIKE CONVERT( _utf8 '$compil' USING latin1 ) COLLATE latin1_swedish_ci AND `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($motcle) && (!$debut) && (!$reineroi) && (!$year) && ($compil))
{$requete="SELECT * FROM `Etat` WHERE `Periode` LIKE CONVERT( _utf8 '$compil' USING latin1 ) COLLATE latin1_swedish_ci AND `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
elseif (($debut) && ($motcle) && (!$reineroi) && (!$year) && ($compil))
{$requete="SELECT * FROM `Etat` WHERE `Periode` LIKE CONVERT( _utf8 '$compil' USING latin1 ) COLLATE latin1_swedish_ci AND `Identification` LIKE CONVERT( _utf8 '$debut%' USING latin1 ) COLLATE latin1_swedish_ci OR `Identification` LIKE CONVERT( _utf8 '%$motcle%' USING latin1 ) COLLATE latin1_swedish_ci LIMIT 0 , 30";
$resultat=mysql_query($requete) or die("<p>Exécution de la requête impossible</p>" );}
else
{ echo "<p>Vous avez indiqué trop de conditions: merci de choisir soit une maison, soit une année ou une période, mais pas deux ou trois à la fois.</p>";
echo '<p><a href="http://cour-de-france.fr/cour/bases/fr_bases/curia_recherche_avancee.php">Retour au formulaire de recherche</a></p>';}
while ($ligne = mysql_fetch_array($resultat)) {
extract($ligne);
echo '<table class="result">';
echo '<tr class="title">
<td class="big">Notice de l\'état de maison</td>
<td class="middle">Maison de</td>
<td class="small">Année</td>
<td class="middle">Periode</td>
<td class="middle">Charge</td>
</tr>';
echo '<tr class="result">
<td class="big">'."$Notice".'</td>
<td class="middle">'."$Maison".'</td>
<td class="small">'."$Annee".'</td>
<td class="middle">'."$Periode".'</td>
<td class="middle">'."$Charge".'</td>
</tr>';
echo '</table>';
}
exit;
?>
Message édité par 1cat le 02-05-2007 à 18:23:28