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

PHP & Base de données Discussion :

Récupération des id de 4 à 9 dans une base de données


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    etudiant developpeur web
    Inscrit en
    Février 2018
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant developpeur web

    Informations forums :
    Inscription : Février 2018
    Messages : 99
    Par défaut Récupération des id de 4 à 9 dans une base de données
    Bonjour,

    J'ai une base de données qui contient 9 lignes mais je ne souhaite récupérer que les 6 dernières lignes :

    Code php : 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
     
    <?php
    $host = 'Localhost';
    $user	= 'root';
    $password	= '';
    $dbName = 'flux';
     
    $mysqli = new mysqli($host, $user, $password, $dbName);
    $mysqli->set_charset('utf8');
     
    // vérification de la connexion
    if($mysqli->connect_error)
    {
    	echo 'Erreur de connexion à la Base de Données : '. $mysqli->connect_error;
    	exit();
    }
    for($i=4; $i<9; $i++)
    			{
    				$sql = $mysqli->query("SELECT * FROM flux_data WHERE id='$i'");
     
    			}
     
    			return $sql;
     
                           while($row= $sql->fetch_array()){
    					$date = $row['date'];
    					$ville = $row['ville'];
    					$periode = $row['periode'];
    					$resume = $row['resume'];
    					$temp_min = $row['temp_min'];
    					$temp_max = $row['temp_max'];
    					$commentaire = $row['commentaire'];
     
    					echo $date .' '.$ville.' '.$periode.' '.$resume.' '.$temp_min.' '.$temp_max.' '.$commentaire.'<br>';
    				}
    ?>

    Je ne récupère que la dernière ligne à chaque fois. La suivante écrasant la première.

    Quand je récupère la totalité de la table cela fonctionne pourtant. Le fait d'ajouter la clause WHERE me plante la requête

    Où se trouve mon erreur?

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    vire les ' ' autour de la variable et réessaie

  3. #3
    Membre confirmé
    Homme Profil pro
    etudiant developpeur web
    Inscrit en
    Février 2018
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant developpeur web

    Informations forums :
    Inscription : Février 2018
    Messages : 99
    Par défaut
    Non, ce n'est pas cela, j'avais déjà essayé... toujours une seule ligne de récupérée.

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Poste le message d'erreur stp

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($i=4; $i<9; $i++)
    {
    	$sql = $mysqli->query("SELECT * FROM flux_data WHERE id='$i'");
    }
    c'est un peu normal : tu écrases la requête à chaque tour de boucle !


    Solution 1 : utiliser IN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $list_ids = []; // array
    for($i=4; $i<9; $i++)
    {
    	$list_ids[] = $i;
    }
    $sql = $mysqli->query("SELECT * FROM flux_data WHERE id IN (".implode(',', $list_ids).")");
    Remarque : ça fonctionne aussi si tu récupères plusieurs id (depuis un formulaire/tableau ou autre), dans un array, sans forcément que les id se suivent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $list_ids = $_POST['id']; // array
    $sql = $mysqli->query("SELECT * FROM flux_data WHERE id IN (".implode(',', $list_ids).")");

    Solution 2 : utiliser la clause LIMIT
    En effet, même en BDD les id ne se suivent pas forcément (lignes supprimés,...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = $mysqli->query("SELECT * FROM flux_data ORDER BY id DESC LIMIT 6");
    Voir aussi la clause OFFSET.

  6. #6
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Billets dans le blog
    1
    Par défaut
    Les solutions de jreaux62 sont bonnes. Si tu cherches à récupérer des items en particulier, utilise IN. Si tu veux récupérer une tranche d'items, utilise SKIP et LIMIT ou un WHERE >/<

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM flux_data WHERE id BETWEEN 4 AND  9;
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre confirmé
    Homme Profil pro
    etudiant developpeur web
    Inscrit en
    Février 2018
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant developpeur web

    Informations forums :
    Inscription : Février 2018
    Messages : 99
    Par défaut Merci, même si je constate que les erreurs sont souvent bêtes
    c'est un peu normal : tu écrases la requête à chaque tour de boucle !

    Oui, j'avais bien compris que j'écrasais les données à chaque fois sinon j'aurai probablement eu un autre type de message d'erreur. Or ici cela semblait fonctionner.

    Je n'ai simplement pas penser à faire plus simple... je me rends compte que j'essaye toujours de me compliquer la vie

    Un simple : $sql = $mysqli->query("SELECT * FROM flux_data ORDER BY id DESC LIMIT 6"); a suffit a résoudre mon problème...

    Encore un grand merci à toi

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

Discussions similaires

  1. Enregistrer des fichiers word, pdf, etc. dans une base de données
    Par mallsoul dans le forum Décisions SGBD
    Réponses: 23
    Dernier message: 10/09/2014, 15h48
  2. Réponses: 19
    Dernier message: 27/10/2011, 14h01
  3. Réponses: 1
    Dernier message: 04/10/2011, 13h05
  4. Réponses: 1
    Dernier message: 09/04/2011, 15h08
  5. Réponses: 5
    Dernier message: 25/05/2009, 15h58

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