[RESOLU] simple boucle

Petit nouveau ! | 6 Messages

10 juin 2014, 10:57

Bonjour,

Je vous écris pour un problème qui vous paraîtra probablement très élémentaire mais bon... je préfère demander plutôt que de rester bloqué.
J'ai une table qui enregistre des locations.
J'ai donc une table sous cette forme :
Image
Question toute bête, quelle boucle utiliser pour lister toutes les dates où id_materiel = 1 ?

Je récupère les infos sous cette forme :
function getDispo($id_materiel)
{
	$db = new db_mysqli();
	$query = "SELECT * FROM reservation WHERE id_materiel='".$id_materiel."'";
	$infos = $db->query($query);
	return $infos[0];
}
$dispo = getDispo($_GET['_id_']);
if($dispo['date_debut'] && $dispo['date_fin'])
                        echo date("d-m-Y", strtotime($dispo['date_debut']))." / ".date("d-m-Y",strtotime($dispo['date_fin']));
                        
                    else
                        echo "Disponible";
Comment faire la boucle pour afficher toutes les dates de id_materiel = matériel selectionné?

Merci d'avance

Cordialement,

Mammouth du PHP | 571 Messages

10 juin 2014, 13:32

bonjour,
il manque une fonction comme fetch_assoc pour récupérer le résultat
function getDispo($id_materiel)
{
        $db = new db_mysqli();
        $query = "SELECT * FROM reservation WHERE id_materiel='".$id_materiel."'";
     
        return $db->query($query);
}
à partir de là tu peux faire un debogage sur le résultat de la requête:
 $dispo = getDispo($_GET['_id_']);
    $row = $dispo->fetch_assoc();
   
  var_dump($row);
Modifié en dernier par yann18 le 10 juin 2014, 14:24, modifié 1 fois.

Petit nouveau ! | 6 Messages

10 juin 2014, 14:06

Merci de ta réponse. :)
Effectivement, cette fonction paraît plus adaptée. Mais j'ai un peu de mal à l'utiliser avec une architecture comme j'utilise.
Si je comprends bien, $result remplace $dispo dans la récupération des données? Comme ça, il vaut soit les valeurs contenues soit faux. Et après je parcours le résultat avec un boucle while?
Désolé si mes questions paraissent stupides mais j'ai un peu de mal à cerner cette fonction. :roll:

Mammouth du PHP | 571 Messages

10 juin 2014, 14:32

je suis desolé en faisant du copier-coller il y a une coquille qui s'est glissée.c'est la variable $dispo à la place de $result.
 $dispo = getDispo($_GET['_id_']);
    while($row = $dispo->fetch_assoc() ){

   //affichage des enregistrements
}
   
  var_dump($row);
var_dump te permet d'afficher le tableau $row donc les enregistrements qui proviennent de la bd.$row étant un tableau associatif tu peux le parcourir avec une boucle while

Petit nouveau ! | 6 Messages

10 juin 2014, 15:01

ok merci!

Par contre, voilà ce qu'il me dit :
Call to a member function fetch_assoc() on a non-object
Est-ce parce que $dispo vaut false?

Mammouth du PHP | 2278 Messages

10 juin 2014, 15:31

diverses suggestions:
function getDispo($id_materiel)
{
         $db = new db_mysqli();
         $query = "SELECT * FROM reservation WHERE id_materiel='".$id_materiel."'";
      print "<br>$query"; //et tester ce qui s'affiche avec PHPMYADMIN ou équivalent
       //  return $db->query($query);
      $bidule = $db->query($query);
    var_dump($bidule);
    return $bidule;
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 571 Messages

10 juin 2014, 15:33

ok merci!

Par contre, voilà ce qu'il me dit :
Call to a member function fetch_assoc() on a non-object
Est-ce parce que $dispo vaut false?
Pour déterminer le type de $dispo il faut d'abord déterminer le type de retour de la méthode query() de ta classe db_mysqli, méthode dont j'ignore la signature.
Peux-tu poster ta classe db_mysqli pour voir quelles sont les méthodes définies?

Mammouth du PHP | 2278 Messages

10 juin 2014, 15:49

Pour les requêtes du type SELECT, SHOW, DESCRIBE, EXPLAIN et les autres requêtes retournant un jeu de résultats, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur. (cf http://us2.php.net/manual/fr/function.mysql-query.php).....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 6 Messages

11 juin 2014, 14:23

Après plusieurs tests, j'y suis parvenu!

Merci de vos conseils avisés. :)