[RESOLU] Action si table vide ou pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Action si table vide ou pas

Re: Action si table vide ou pas

par Ryle » 13 janv. 2016, 11:46

La syntaxe est bonne :)

Re: Action si table vide ou pas

par cite carter » 11 janv. 2016, 21:47

Merci beaucoup.
Ayant des éléments "macolonne" dans 2 tables j'ai testé avec:

Code : Tout sélectionner

$rst = $bdd->query('SELECT macolonne AS MACOLONNEALL from matable UNION ALL SELECT macolonne AS MACOLONNEALL from matable2'); $result = false; // flag true/false pour contrôler s'il y a des résultats (on peut aussi utiliser un compteur) while ($donnees = $rst->fetch()) { $result = true; // il y a au moins un résultat $macolonne = $donnees['MACOLONNEALL']; if (empty($macolonne)) { echo 'mon autre texte'; } else { echo $macolonne; // pas d'apostrophe autour de la variable, sinon php écrira $macolonne en toutes lettres ;) } } if (!$result) { // aucun résultat trouvé echo 'noooon rien de rieeeennn...'; }
ça fonctionne très bien mais je ne suis pas sûre de la syntaxe.

Re: Action si table vide ou pas

par Ryle » 11 janv. 2016, 17:52

Bonjour,

Ce code fonctionne, mais n'est pas optimisé, puisque après avoir compté le nombre d'enregistrement et avoir constaté qu'il était de 0, tu vas quand même aller chercher le contenu de la table pour vérifier les cas suivants (alors que si la table est vide, il est fort probable que ses colonnes le soient également ;))

Tu peux également éviter la requête supplémentaire en comptant le nombre de fois où tu es entré dans le while. En effet, si tu n'entre jamais dans la boucle, c'est qu'aucun enregistrement n'a été trouvé :
$rst = $bdd->query('SELECT macolonne from matable');
         $result = false; // flag true/false pour contrôler s'il y a des résultats (on peut aussi utiliser un compteur)
         while ($donnees = $rst->fetch()) {
                  $result = true; // il y a au moins un résultat
                  $macolonne = $donnees['macolonne'];
                  if (empty($macolonne)) {
                      echo 'mon autre texte';
                  }
                  else {
                      echo $macolonne; // pas d'apostrophe autour de la variable, sinon php écrira $macolonne en toutes lettres ;)
                  }           
         }
         if (!$result) { // aucun résultat trouvé
                  echo 'noooon rien de rieeeennn...';
         }

Re: Action si table vide ou pas

par cite carter » 08 janv. 2016, 21:53

Code : Tout sélectionner

$rst = $bdd->query('SELECT count(*) as nb from matable'); $data = $rst->fetch(); $nb = $data['nb']; if ($nb == 0) { echo 'mon texte'; } $rst = $bdd->query('SELECT macolonne from matable'); while($donnees = $rst->fetch()) { $macolonne = $donnees['macolonne']; if (empty($macolonne)) { echo 'mon autre texte'; } else { echo '$macolonne'; } }
Est-ce que ça vous parait correcte?

Re: Action si table vide ou pas

par or 1 » 08 janv. 2016, 19:48

si la table est vide, le select ne retournera aucun résultat, donc, après l'exécution de la requete, il faut tester le nombre d'enregistrement retourné, et s'il est de 0, afficher le 3ème texte.

Action si table vide ou pas

par cite carter » 08 janv. 2016, 19:35

Bonjour,

je voudrais faire apparaitre différentes choses selon trois cas de figure:

1 - si ma table est vide afficher un texte,

2 - ou si une colonne de cette table est vide afficher un autre texte

3 - sinon afficher les entrées de cette colonne.

Pour les 2 dernières j'y arrive facilement avec mon bout de code, mais pour la première je n'y arrive pas.

Code : Tout sélectionner

$rst = $bdd->query('SELECT macolonne from matable'); while($donnees = $rst->fetch()) { $macolonne = $donnees['macolonne']; if (empty($macolonne)) { echo 'mon autre texte'; } else { echo '$macolonne'; }