PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : MySQL, PostgreSQL, etc... » PHP Mysql - afficher le résultat d'un tri dans un tableau » 31-03-2015 03:05:44

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'] .'&nbsp;-&nbsp;'. $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" />
&nbsp;
<input type="submit" value="Rechercher" name="rechercher" /></center>
</form>
<?php
}
mysql_close(); //déconnexion de la bdd
?>


 


d'avance merci pour votre aide smile

#2 Re : MySQL, PostgreSQL, etc... » PHP Mysql - afficher le résultat d'un tri dans un tableau » 31-03-2015 03:05:44

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 error_reporting (E_ALL ^ E_NOTICE); ?>
<?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
{

}
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'] .'&nbsp;-&nbsp;'. $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" />
&nbsp;
<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

#3 Re : MySQL, PostgreSQL, etc... » PHP Mysql - afficher le résultat d'un tri dans un tableau » 31-03-2015 03:05:44

Voici ce que j'ai fait, j'ai modifié ma condition "WHERE"  :


<style type="text/css">
TD
{background:white; color:#0B3E2B; font-family:Arial; font-size:14px; font-weight:normal; text-align: right;}
</style>
<?php
//include("include/haut.inc.php");
include("menu.php");
// Make a MySQL Connection
include("include/variables.inc.php");
$liendb  =  mysql_connect($bddserver,  $bddlogin,  $bddpassword);
mysql_select_db  ($bdd);


$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 sad

#4 Re : MySQL, PostgreSQL, etc... » PHP Mysql - afficher le résultat d'un tri dans un tableau » 31-03-2015 03:05:44

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é hmm

#5 MySQL, PostgreSQL, etc... » PHP Mysql - afficher le résultat d'un tri dans un tableau » 31-03-2015 03:05:44

notebleue
Réponses : 6

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">&nbsp;</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:


<style type="text/css">
TD
{background:white; color:#0B3E2B; font-family:Arial; font-size:14px; font-weight:normal; text-align: right;}
</style>
<?php
//include("include/haut.inc.php");
include("menu.php");
// Make a MySQL Connection
include("include/variables.inc.php");
$liendb  =  mysql_connect($bddserver,  $bddlogin,  $bddpassword);
mysql_select_db  ($bdd);


$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

Pied de page des forums

Propulsé par FluxBB