IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Boucle while ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut Boucle while ne fonctionne pas
    Meteo.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    class Meteo {
     
    	public function __construct() {
     
    	}
     
    	public function getCityWeather() {
     
    		$mysqli = new mysqli('localhost', 'root', '', 'meteo');
    		$mysqli->set_charset("utf8");
     
    		if($mysqli->connect_errno) {
     
    			echo 'Erreur de connexion ' . $mysqli->connect_error;
     
    			exit;
    		}
     
    		$query = "SELECT ville_id, dates, ville_name, period, to_summarize, id_to_summarize, minimum_temperature,
    		maximum_temperature, commentaire FROM meteo_city WHERE ville_name LIKE 'Paris'";
     
    		$result = $mysqli->query($query);
     
    		if(!$result) {
     
    			echo 'Erreur au niveau de la requête ' . $mysqli->error;
     
    			return false;
    		}
    		else {
     
    			while($row = $result->fetch_array()) {
     
    				$ville_id = $row['ville_id'];
    				$dates = $row['dates'];
    				$ville_name = $row['ville_name'];
    				$period = $row['period'];
    				$to_summarize = $row['to_summarize'];
    				$id_to_summarize = $row['id_to_summarize'];
    				$minimum_temperature = $row['minimum_temperature'];
    				$maximum_temperature = $row['maximum_temperature'];
    				$commentaire = $row['commentaire'];
     
    				$meteo_city[$ville_id]['Date du jour'] = $dates;
    				$meteo_city[$ville_id]['Ville'] = $ville_name;
    				$meteo_city[$ville_id]['Partie de la journée'] = $period;
    				$meteo_city[$ville_id]['Résumer'] = $to_summarize;
    				$meteo_city[$ville_id]['Identifiant du résumé'] = $id_to_summarize;
    				$meteo_city[$ville_id]['Température minimale'] = $minimum_temperature;
    				$meteo_city[$ville_id]['Température maximale'] = $maximum_temperature;
    				$meteo_city[$ville_id]['Commentaire'] = $commentaire;
     
    				return $meteo_city;
     
    				$mysqli->close();
    			}
    		}
    	}
    }
    display.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    <?php require('class/Meteo.php'); ?>
     
    <?php 
     
    $meteo_cities = new Meteo();
    $meteo_city = $meteo_cities->getCityWeather();
     
    echo '<pre>';
    print_r($meteo_city);
    echo '</pre>';
     
    ?>
     
    <div id="main">
    	<ul>
    		<?php if(!empty($meteo_city)) : ?>
    			<?php foreach($meteo_city as $name) : ?>
    				<li><?php echo $name['Date du jour']; ?></li>
    				<li><?php echo $name['Ville']; ?></li>
    				<li><?php echo $name['Partie de la journée']; ?></li>
    				<li><?php echo $name['Résumer']; ?></li>
    				<li><?php echo $name['Identifiant du résumé']; ?></li>
    				<li><?php echo $name['Température minimale']; ?></li>
    				<li><?php echo $name['Température maximale']; ?></li>
    				<li><?php echo $name['Commentaire']; ?></li>
    			<?php endforeach; ?>
    		<?php endif; ?>
    	</ul>
    </div>
    Il n'y a que la première entrée qui s'affiche alors qu'il y a une boucle. Besoin d'aide. Merci d'avance

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    return $meteo_city;
    $mysqli->close();
    Est-ce que tu penses que ces deux instructions ont quelque chose à faire dans ta boucle while?

  3. #3
    Membre actif Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Points : 232
    Points
    232
    Par défaut
    Yep return sort de la fonction getCityWeather() et du coup le while ne s'exécute qu'une fois...

    Tu peux remplacer la boucle et le return par un return $result->fetchAll();, c'est plus simple et vu que tu n'affiche pas les "labels" hors de la fonction, mais les utilise juste pour accéder aux éléments du tableau, tu peux utiliser directement les noms des colonnes à la place =)


    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // display.php
    <li><?php echo $name['dates']; ?></li>
    <li><?php echo $name['ville_name']; ?></li>
    <li><?php echo $name['period']; ?></li>
    ...

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Merci pour l'aide, ça fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Boucle while ne fonctionne pas
    Par JDP91 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/11/2016, 16h45
  2. Itération boucle While ne fonctionne pas
    Par thibboss29 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/09/2016, 08h25
  3. Réponses: 2
    Dernier message: 16/07/2015, 17h41
  4. boucle While ne fonctionne pas ?
    Par beegees dans le forum Langage
    Réponses: 3
    Dernier message: 07/08/2006, 20h19
  5. Boucle While ne marche pas
    Par soltani.slim dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo