Vous n'êtes pas identifié(e).
Pages : 1
Bonsoir,
J'ai réussi à faire quelque chose, mais cela ne me satisfait pas, car je dois introduire manuellement un nom dans un champs de formulaire, mais cela suppose de connaître les noms par coeur, le mieux serait une liste déroulante, malheureusement j'ai essayé plusieurs méthodes et je ne parvient pas à le faire, y a-t-il quelqu'un qui pourrait m'aider ?
<?php error_reporting (E_ALL ^ E_NOTICE); ?>
<?php
//include("include/haut.inc.php");
?>
<?php
include("menu.php");
include("include/variables.inc.php");
$liendb = mysql_connect($bddserver, $bddlogin, $bddpassword);
mysql_select_db ($bdd);
if (isset($_POST['rechercher'])) //si on a validé le formulaire
{
$recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); //sécurisation des variables
$mode = mysql_real_escape_string(htmlspecialchars($_POST['mode']));
if ($mode == "tous_les_mots")
{
$and_ou_or = 'AND'; //on utilisera AND dans la boucle
}
else
{
$and_ou_or = 'OR'; //on utilisera OR dans la boucle
}
if ($mode == "expression_exacte") //si le mode de recherche est par expression exacte
{
$selection_recherche = mysql_query("SELECT
DATE_FORMAT( datearrive, '%d/%m/%Y' ) AS datea, DATE_FORMAT( datedepart, '%d/%m/%Y' ) AS dated, DATE_FORMAT( datearrive, '%Y' ) AS annee, DATEDIFF(datedepart,datearrive ) AS datediff, dateloca.nombre, dateloca.prixlocation, dateloca.caution, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby) as PT, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement) as Totalpaye, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement-dateloca.caution) as Totalrevenu, dateloca.1erpaiement, DATE_FORMAT( date1erpaiement, '%d/%m/%Y' ) AS dateunp, dateloca.2epaiement, DATE_FORMAT( date2epaiement, '%d/%m/%Y' ) AS datedeuxp, dateloca.3epaiement, DATE_FORMAT( date3epaiement, '%d/%m/%Y' ) AS datetroisp, dateloca.linge, dateloca.litbaby, dateloca.degatspayes, dateloca.nonpaye, dateloca.remarques, dateloca.restitution, DATE_FORMAT( datelettre, '%d/%m/%Y' ) AS datel, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, dateloca.appart, dateloca.envoitarifs, dateloca.envoidescriptif, dateloca.paragraphesup, dateloca.confirmation, dateloca.annul, dateloca.enfants, locataires.nom, locataires.prenom, locataires.ville, locataires.pays
FROM dateloca
INNER JOIN locataires ON dateloca.idnoms = locataires.idnoms WHERE locataires.reserve = 'oui' AND dateloca.annul =2 AND dateloca.prixlocation >0 AND nom LIKE '%$recherche%' ORDER BY nom desc");
}
else //si le mode de recherche n'est pas par expression exacte
{
$mots = explode(" ", $recherche); //séparation des mots
$nombre_mots = count ($mots); //compte le nombre de mots
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
{
$valeur_requete .= '' . $and_ou_or . ' nom LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou de OR au début de la boucle
$selection_recherche = mysql_query("SELECT DATE_FORMAT( datearrive, '%d/%m/%Y' ) AS datea, DATE_FORMAT( datedepart, '%d/%m/%Y' ) AS dated, DATE_FORMAT( datearrive, '%Y' ) AS annee, DATEDIFF(datedepart,datearrive ) AS datediff, dateloca.nombre, dateloca.prixlocation, dateloca.caution, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby) as PT, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement) as Totalpaye, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement-dateloca.caution) as Totalrevenu, dateloca.1erpaiement, DATE_FORMAT( date1erpaiement, '%d/%m/%Y' ) AS dateunp, dateloca.2epaiement, DATE_FORMAT( date2epaiement, '%d/%m/%Y' ) AS datedeuxp, dateloca.3epaiement, DATE_FORMAT( date3epaiement, '%d/%m/%Y' ) AS datetroisp, dateloca.linge, dateloca.litbaby, dateloca.degatspayes, dateloca.nonpaye, dateloca.remarques, dateloca.restitution, DATE_FORMAT( datelettre, '%d/%m/%Y' ) AS datel, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, dateloca.appart, dateloca.envoitarifs, dateloca.envoidescriptif, dateloca.paragraphesup, dateloca.confirmation, dateloca.annul, dateloca.enfants, locataires.nom, locataires.prenom, locataires.ville, locataires.pays
FROM dateloca
INNER JOIN locataires ON dateloca.idnoms = locataires.idnoms
WHERE locataires.reserve = 'oui' AND dateloca.annul =2 AND dateloca.prixlocation >0 AND $valeur_requete ORDER BY datearrive DESC"); //requête avec le résultat de la boucle dedans
}
$nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
if ($nombre_resultats == 0) //s'il n'y a pas de résultat
{
echo 'aucun resultat.<a href="xxx.php">recommencer</a>';
}
else //il y a au moins un résultat
{
echo '<br /><br /><center>nombre de résultats: ' . $nombre_resultats . ':</center><br /><br />'; //nombre de résultats
?>
<br />
<br />
<table border="1" align="center">
<tr>
<td class="intitule">Arrivée</td>
<td class="intitule">Départ</td>
<td class="intitule">Nb jours</td>
<td class="intitule">Nom - prénom</td>
<td class="intitule">Ville</td>
<td class="intitule">Pays</td>
<td class="intitule">Linge</td>
<td class="intitule">Lit bébé</td>
<td class="intitule">Somme payée</td>
<td class="intitule">Reste à payer</td>
</tr>
<?php
while($req = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
{
?>
<tr>
<td><?php echo $req['datea']; ?></td>
<td><?php echo $req['dated']; ?></td>
<td><div class="alindr"><?php echo $req['datediff']; ?></div></td>
<td><?php echo $req['nom'] .' - '. $req['prenom']; ?></td>
<td><div class="alindr"><?php echo $req['ville'];?></div></td>
<td><div class="alindr"><?php echo $req['pays'];?></div></td>
<td><div class="alindr"><?php echo $req['linge'];?></div></td>
<td><div class="alindr"><?php echo $req['litbaby'];?></div></td>
<td><div class="alindr"><?php echo $req['Totalpaye'];?></div></td>
<td><div class="alindr"><?php echo $req['Reste']; ?></div></td>
</tr>
<?php
}
echo '<center><a href="xxx.php">recommencer</a></center><br />
<br />
<br />
';
}
}
else //si on n'a pas validé le formulaire, on l'affiche
{
?>
<form method="post" action="xxx.php">
<br />
<center><b>Recherche nom</b><br /><br />
<b>Entrez le nom :</b>
<input type="text" name="recherche" />
<input type="submit" value="Rechercher" name="rechercher" /></center>
</form>
<?php
}
mysql_close(); //déconnexion de la bdd
?>
d'avance merci pour votre aide
J'ai passé le week-end à faire des essais et malheureusement je n'arrive pas à sélectionner dans une liste et afficher le résultat dans un formulaire. Toutefois, j'ai réussi à afficher le résultat en insérant dans un champs de formulaire le mot ou une partie du mot à rechercher.
Voici le code :
<?php
include("menu.php");
include("include/variables.inc.php");
$liendb = mysql_connect($bddserver, $bddlogin, $bddpassword);
mysql_select_db ($bdd);
if (isset($_POST['rechercher'])) //si on a validé le formulaire
{
$recherche = mysql_real_escape_string(htmlspecialchars($_POST['recherche'])); //sécurisation des variables
$mode = mysql_real_escape_string(htmlspecialchars($_POST['mode']));
if ($mode == "tous_les_mots")
{
$and_ou_or = 'AND'; //on utilisera AND dans la boucle
}
else
{
$and_ou_or = 'OR'; //on utilisera OR dans la boucle
}
if ($mode == "expression_exacte") //si le mode de recherche est par expression exacte
{
$selection_recherche = mysql_query("SELECT
DATE_FORMAT( datearrive, '%d/%m/%Y' ) AS datea, DATE_FORMAT( datedepart, '%d/%m/%Y' ) AS dated, DATE_FORMAT( datearrive, '%Y' ) AS annee, DATEDIFF(datedepart,datearrive ) AS datediff, dateloca.nombre, dateloca.prixlocation, dateloca.caution, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby) as PT, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement) as Totalpaye, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement-dateloca.caution) as Totalrevenu, dateloca.1erpaiement, DATE_FORMAT( date1erpaiement, '%d/%m/%Y' ) AS dateunp, dateloca.2epaiement, DATE_FORMAT( date2epaiement, '%d/%m/%Y' ) AS datedeuxp, dateloca.3epaiement, DATE_FORMAT( date3epaiement, '%d/%m/%Y' ) AS datetroisp, dateloca.linge, dateloca.litbaby, dateloca.degatspayes, dateloca.nonpaye, dateloca.remarques, dateloca.restitution, DATE_FORMAT( datelettre, '%d/%m/%Y' ) AS datel, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, dateloca.appart, dateloca.envoitarifs, dateloca.envoidescriptif, dateloca.paragraphesup, dateloca.confirmation, dateloca.annul, dateloca.enfants, locataires.nom, locataires.prenom, locataires.ville, locataires.pays
FROM dateloca
INNER JOIN locataires ON dateloca.idnoms = locataires.idnoms WHERE locataires.reserve = 'oui' AND dateloca.annul =2 AND dateloca.prixlocation >0 AND nom LIKE '%$recherche%' ORDER BY nom desc");
}
else //si le mode de recherche n'est pas par expression exacte
{
$mots = explode(" ", $recherche); //séparation des mots
$nombre_mots = count ($mots); //compte le nombre de mots
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
{
$valeur_requete .= '' . $and_ou_or . ' nom LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou de OR au début de la boucle
$selection_recherche = mysql_query("SELECT DATE_FORMAT( datearrive, '%d/%m/%Y' ) AS datea, DATE_FORMAT( datedepart, '%d/%m/%Y' ) AS dated, DATE_FORMAT( datearrive, '%Y' ) AS annee, DATEDIFF(datedepart,datearrive ) AS datediff, dateloca.nombre, dateloca.prixlocation, dateloca.caution, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby) as PT, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement) as Totalpaye, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, (dateloca.1erpaiement+dateloca.2epaiement+dateloca.3epaiement-dateloca.caution) as Totalrevenu, dateloca.1erpaiement, DATE_FORMAT( date1erpaiement, '%d/%m/%Y' ) AS dateunp, dateloca.2epaiement, DATE_FORMAT( date2epaiement, '%d/%m/%Y' ) AS datedeuxp, dateloca.3epaiement, DATE_FORMAT( date3epaiement, '%d/%m/%Y' ) AS datetroisp, dateloca.linge, dateloca.litbaby, dateloca.degatspayes, dateloca.nonpaye, dateloca.remarques, dateloca.restitution, DATE_FORMAT( datelettre, '%d/%m/%Y' ) AS datel, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.1erpaiement-dateloca.2epaiement-dateloca.3epaiement) as Reste, dateloca.appart, dateloca.envoitarifs, dateloca.envoidescriptif, dateloca.paragraphesup, dateloca.confirmation, dateloca.annul, dateloca.enfants, locataires.nom, locataires.prenom, locataires.ville, locataires.pays
FROM dateloca
INNER JOIN locataires ON dateloca.idnoms = locataires.idnoms
WHERE locataires.reserve = 'oui' AND dateloca.annul =2 AND dateloca.prixlocation >0 AND $valeur_requete ORDER BY datearrive DESC"); //requête avec le résultat de la boucle dedans
}
$nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
if ($nombre_resultats == 0) //s'il n'y a pas de résultat
{
}
else //il y a au moins un résultat
{
echo '<br /><br /><center>nombre de résultats: ' . $nombre_resultats . ':</center><br /><br />'; //nombre de résultats
?>
<br />
<br />
<table border="1" align="center">
<tr>
<td class="intitule">Arrivée</td>
<td class="intitule">Départ</td>
<td class="intitule">Nb jours</td>
<td class="intitule">Nom - prénom</td>
<td class="intitule">Ville</td>
<td class="intitule">Pays</td>
</tr>
<?php
while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
{
?>
<tr>
<td><?php echo $resultats['datea']; ?></td>
<td><?php echo $resultats['dated']; ?></td>
<td><div class="alindr"><?php echo $resultats['datediff']; ?></div></td>
<td><?php echo $resultats['nom'] .' - '. $resultats['prenom']; ?></td>
<td><div class="alindr"><?php echo $resultats['ville'];?></div></td>
<td><div class="alindr"><?php echo $resultats['pays'];?></div></td>
</tr>
<?php
}
echo '<center><a href="recherche_essai.php">recommencer</a></center><br />
<br />
<br />
';
}
}
else //si on n'a pas validé le formulaire, on l'affiche
{
?>
<form method="post" action="recherche_essai.php">
<br />
<center><b>Recherche nom</b><br /><br />
<b>Entrez le nom :</b>
<input type="text" name="recherche" />
<input type="submit" value="Rechercher" name="rechercher" /></center>
</form>
<?php
}
mysql_close(); //déconnexion de la bdd
?>
C'est déjà un progrès, mais cela ne me convient pas vraiment, car cela suppose de connaître les noms à rechercher, une liste déroulante serait beaucoup mieux adaptée, mais je n'arrive pas à lier une liste déroulante à mon formulaire.
Qui pourrait m'aider ?
Merci d'avance
Voici ce que j'ai fait, j'ai modifié ma condition "WHERE" :
$query="SELECT
locataires.nom, locataires.prenom, locataires.ville, locataires.pays, dateloca.datearrive, dateloca.datedepart
FROM locataires
INNER JOIN dateloca ON locataires.idnoms = dateloca.idnoms
WHERE idnoms = ($_GET['id'])
ORDER BY nom";
$result = mysql_query($query) or die(mysql_error());
{
?>
<br />
<br />
<table border="1" align="center">
<tr>
<td class="intitule">Nom</td>
<td class="intitule">Prénom</td>
<td class="intitule">Ville</td>
<td class="intitule">Pays</td>
<td class="intitule">Date arrivée</td>
<td class="intitule">Date départ</td>
</tr>
<?php
// Print out result
while($row = mysql_fetch_array($result))
{
?>
<tr>
<td><?php echo $row['nom']; ?></td>
<td><?php echo $row['prenom']; ?></td>
<td><?php echo $row['ville']; ?></td>
<td><?php echo $row['pays']; ?></td>
<td><?php echo $row['datearrive']; ?></td>
<td><?php echo $row['datedepart']; ?></td>
</tr>
<?php
}
?>
</table>
<?php
}
mysql_close($liendb); //déconnexion de la bdd
?>
Mais cela ne marche pas, cela m'affiche une page blanche
Merci pour la rapidité de la réponse, je vais essayer, mais cela fait longtemps que je n'ai plus utilisé PHP et MYSQL, j'espère que je vais arriver à construire ma requête comme exlpliqué
Bonjour,
J'aimerais afficher dans un tableau toutes les dates utilisées par une personnes en la sélectionnant dans une liste, après plusieurs heures à me triturer les méninges, je jette l'éponge et je viens vous demander de l'aide. Voici le tableau depuis lequel je veux faire une sélection
<?php
include("include/variables.inc.php");
include("menu.php");
$liendb = mysql_connect($bddserver, $bddlogin, $bddpassword);
mysql_select_db ($bdd);
?>
<p align="left"> :: Locataires</p>
<table width="90%" align="center" border="1">
<tr>
<td class="intitule">id</td>
<td class="intitule">Nom</td>
<td class="intitule">Prénom</td>
<td class="intitule">Ville</td>
<td class="intitule">Pays</td>
<td class="intitule">Réservé</td>
<td class="intitule"> </td>
</tr>
<?php
$sql = "SELECT * FROM locataires ORDER BY nom";
$resultat = mysql_query ($sql);
while ($locataires = mysql_fetch_array ($resultat))
{
$id = $locataires['idnoms'];
$nom = $locataires['nom'];
$prenom = $locataires['prenom'];
$ville = $locataires['ville'];
$pays = $locataires['pays'];
$reserve = $locataires['reserve'];
echo "<tr>";
echo "<td>$id</td>";
echo "<td>$nom</td>";
echo "<td>$prenom</td>";
echo "<td>$ville</td>";
echo "<td>$pays</td>";
echo "<td>$reserve</td>";
echo "<td>";
echo "<a href=nblocation.php?id=$id>voir</a>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
?>
<?php
mysql_close($liendb);
//include("include/bas.inc.php");
?>
et voici le résultat que je voudrais afficher, actuellement je peux seulement mettre manuellement le nom dans ma condition WHERE, cela fontionne, mais je voudrais sélectionner un nom dans le premier tableau et que le résultat s'affiche dans ce deuxième tableau:
$query="SELECT
locataires.nom, locataires.prenom, locataires.ville, locataires.pays, dateloca.datearrive, dateloca.datedepart
FROM locataires
INNER JOIN dateloca ON locataires.idnoms = dateloca.idnoms
WHERE nom = 'xyz'
ORDER BY nom";
$result = mysql_query($query) or die(mysql_error());
{
?>
<br />
<br />
<table border="1" align="center">
<tr>
<td class="intitule">Nom</td>
<td class="intitule">Prénom</td>
<td class="intitule">Ville</td>
<td class="intitule">Pays</td>
<td class="intitule">Date arrivée</td>
<td class="intitule">Date départ</td>
</tr>
<?php
// Print out result
while($row = mysql_fetch_array($result))
{
?>
<tr>
<td><?php echo $row['nom']; ?></td>
<td><?php echo $row['prenom']; ?></td>
<td><?php echo $row['ville']; ?></td>
<td><?php echo $row['pays']; ?></td>
<td><?php echo $row['datearrive']; ?></td>
<td><?php echo $row['datedepart']; ?></td>
</tr>
<?php
}
?>
</table>
<?php
}
mysql_close($liendb); //déconnexion de la bdd
?>
J'espère que mes explications sont claires ?!?
Merci d'avance pour votre aide et bon week-end
Pages : 1