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 :

PHP / Oracle rowCount() [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut PHP / Oracle rowCount()
    Bonjour,

    J'utilise un rowCount() pour lire le nombre de lignes dans mon tableau, mais dans mon code la fonction ne marche pas.

    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
     
    <fieldset>
         <legend>Actualités</legend>
              <ul>
                  <?php if($actualitesProduits->rowCount() == 0): ?>
                       <h4 style="font-weight:bold;text-align:center;">Aucune Actualité</h4> 
                  <?php else: ?>
                       <?php foreach ($actualitesProduits as $actualiteProduits): ?>
                            <li>                 
                                 <?= $this->nettoyer($actualiteProduits['titre']) ?>               
                            </li>
                       <?php endforeach; ?>         
                  <?php endif; ?>
             </ul>
    </fieldset>
    La condition if/else n'est pas interprétée et même si ma requête retourne des données, PHP m'affiche "aucune actualité"!!
    Une idée?

    Ma BDD est sous Oracle (mais je n'utilise pas les fonctions oci_, et bizarrement ça marche quand même!)
    Quelqu'un peut me dire quand utiliser les fonctions oci_?

    Merci,

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut
    Problème à moitié résolu ... j'ai remplacé le rowCount() par fetch() mais du coup il me manque le 1er enregistrement!!!!

    Quelqu'un saurait-il pourquoi?

    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
     
    <fieldset>
                                <legend>Actualités</legend>
                                <ul>
                                    <?php if($actualitesProduits->fetch() == FALSE): ?>                            
                                        <h4 style="font-weight:bold;text-align:center;">Aucune Actualité</h4> 
                                    <?php else: ?>
                                        <?php foreach ($actualitesProduits as $actualiteProduits): ?>
                                            <li>                 
                                                <?= $this->nettoyer($actualiteProduits['titre']) ?>               
                                            </li>
                                        <?php endforeach; ?>         
                                    <?php endif; ?>
                                </ul>
     </fieldset>

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par arlemcities Voir le message
    Problème à moitié résolu ... j'ai remplacé le rowCount() par fetch() mais du coup il me manque le 1er enregistrement!!!!
    Quelqu'un saurait-il pourquoi?
    C'est normal : ta boucle foreach correspond en fait à un appel à fetch en boucle. Comme tu fetches la 1ere ligne à l'extérieur de la boucle, le foreach démarre à la 2e ligne.
    Tu peux bricoler quelque chose avec un do/while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php $actualiteProduits = $actualitesProduits->fetch(); ?>
    <?php if($actualiteProduits == FALSE): ?>                            
    	<h4 style="font-weight:bold;text-align:center;">Aucune Actualité</h4> 
    <?php else: ?>
    	<?php do { ?>
    		<li>                 
    			<?= $this->nettoyer($actualiteProduits['titre']) ?>               
    		</li>
    	<?php } while ($actualiteProduits = $actualitesProduits->fetch()); ?>         
    <?php endif; ?>
    ou faire 2 requêtes : un select count(*) pour compter les lignes et, si le count trouve des lignes, un select pour récupérer les données.

    Citation Envoyé par arlemcities Voir le message
    Ma BDD est sous Oracle (mais je n'utilise pas les fonctions oci_, et bizarrement ça marche quand même!)
    Quelqu'un peut me dire quand utiliser les fonctions oci_?
    rowCount et fetch, ce sont des fonctions de PDO. Donc tu utilises PDO avec le driver pour Oracle PDO_OCI, en lieu et place des fonctions oci.
    A noter que le driver Oracle est marqué comme expérimental (mais bon, il était déjà expérimental il y a 5 ans quand je l'ai utilisé, et ça marchait très bien, en tout cas pour des requêtes de base)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 20
    Points
    20
    Par défaut
    Merci à toi. Le do while marche très bien!

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

Discussions similaires

  1. PHP - Oracle
    Par alex007 dans le forum Oracle
    Réponses: 4
    Dernier message: 07/11/2005, 17h39
  2. PHP & MySQL => PHP & ORACLE , INTERVAL ?
    Par kailly dans le forum Oracle
    Réponses: 1
    Dernier message: 26/07/2005, 12h22
  3. PHP & Oracle distant : installation ?
    Par Grubshka dans le forum Oracle
    Réponses: 28
    Dernier message: 15/06/2005, 08h59
  4. PHP + Oracle + PL/ SQL
    Par bchristo dans le forum SQL
    Réponses: 12
    Dernier message: 28/04/2004, 15h49

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