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 :

Affichage d'un zero dans mysql en abscence de valeur


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut Affichage d'un zero dans mysql en abscence de valeur
    Bonjour,

    J'utilise mysql et phpAdmin. J'ai une table note dans laquelle j'ai plusieurs champ dont certain n'ont pas l'obligation d'être renseigné, en particulier NoteTp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE note
    (
    IdEtudiant VARCHAR(20) NOT NULL,
    NomModule VARCHAR(20) NOT NULL,
    NomFormation VARCHAR(20) NOT NULL,
    DateFormation INT NOT NULL,
    NumSemestre VARCHAR(5) NOT NULL,
    PRIMARY KEY(IdEtudiant,NomModule,NomFormation,DateFormation,NumSemestre),
    FOREIGN KEY (IdEtudiant) REFERENCES etudiant(IdEtudiant),
    FOREIGN KEY (NomModule,NomFormation,DateFormation,NumSemestre) REFERENCES modules(NomModule,NomFormation,DateFormation,NumSemestre),
    NoteExam INT NOT NULL,
    NoteTp INT,
    moy float 
    );
    J'ai remarqué que lorsque je n'entrais pas de valeur pour NoteTp, il me mettait un zéro à la place, ce qui me pose problème lorsque je veux faire un affichage de mes notes. Il me met 0 alors que je voudrais une case vide.

    Voila ma fonction d'affichage :

    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
    echo '<div id="decalage">';
     
       echo '<table border="0" bgcolor="#333333" cellpadding="10" cellspacing="3">'."\n";
            // première ligne on affiche les titres 
            echo '<tr>';
            echo '<td bgcolor="#ff9800" align="center" ><b><u>Module</u></b></td>';
            echo '<td bgcolor="#ff9800" align="center" ><b><u>Note Examen</u></b></td>';
    		echo '<td bgcolor="#ff9800" align="center" ><b><u>Note TP</u></b></td>';
    		echo '<td bgcolor="#ff9800" align="center" ><b><u>Moyenne</u></b></td>';
        echo '</tr>'."\n"; 
       // on va scanner tous les tuples un par un 
       while ($data = mysql_fetch_array($reqnotes)) { 
             // on affiches les résultats dans la <table>
     
    		 echo '<tr>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["NomModule"].'</td>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["NoteExam"].'</td>';
    		echo '<td bgcolor="#ffffff" align="center">'.$data["NoteTp"].'</td>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["moy"].'</td>';
     
    	echo '</tr>'."\n";
      } 
       echo '</table>';  
     
    echo '</div>';
    Si qq sait comment je pourrais avoir une case vide au lieu d'un zéro?
    Merci.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Si tu veux des valeurs nulles, il faut en 1er définir dans la Bdd une instruction pour accepter une valeur nulle, soit : NoteTp INT DEFAULT NULL.
    A faire dans PhpMyAdmin par exemple. Une fois fait, tu remarqueras que lorsque tu visualise un ligne ayant une valeur Nulle par défaut, une case à cochée est faite pour ça.

    Ensuite, il faudra corriger ses valeurs déjà enregistrés dont les valeurs sont 0 et y mettre explicitement une valeur Nulle.
    Sur PhpMyAdmin, faudra cocher la case (comme vu ci-dessus) pour la définir à nulle.

    Faudra aussi voir ton code, le corriger au besoin lorsque qu'une mise à jour (insert into /update) est faite sur ces données, et bien spécifier à NULL lorsque le cas se présente, sinon ce sera 0 qui sera enregistré.


    Lorsque tu affichera les données dans ta page, et bien vu qu'il y aura rien dans la Bdd, donc NULL, rien ne sera affiché.
    Bref, tout ça se fait en amont.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Ok, j'ai mis NoteTP à DEFAULT NULL, mais en fait je ne veux pas passer par php admin de manière direct. Cela me sert juste pour vérifier mes données.

    Quelle condition doit je mettre dans mon code pour que justement ça ne m'affiche pas 0 mais plutot une case vide?

    Voilà ma requete d'insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sqlinsert = "INSERT INTO note VALUES ('".$etudiantId."','".$nomModule."','".$_SESSION['formation']."','".$_SESSION['annee']."','".$_SESSION['semestre']."','".$noteExam."','".$noteTP."','".$moyennne."')";
    mysql_query ($sqlinsert) or die ('Erreur d\'insertion sur la table note !'.$sqlinsert.'<br />'.mysql_error());
    Merci.

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    mais en fait je ne veux pas passer par php admin de manière direct. Cela me sert juste pour vérifier mes données.
    Oui, je comprend, mais vérifie justement les lignes via PhpMyAdmin des NoteTp, celles qui avaient comme valeur 0 ont toujours comme valeurs 0 malgré avoir défini DEFAULT NULL.
    En somme, le mal est déjà fait.
    Corriger ça par PhpMyAdmin reste le plus simple.

    Quelle condition doit je mettre dans mon code pour que justement ça ne m'affiche pas 0 mais plutôt une case vide?
    Il faut traiter le cas à part.
    Exemple dans le cas ou tu reçois une donnée par POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (isset($_POST['NoteTp']) && (int)$_POST['NoteTp'] > 0) {
    	$noteTp = "'".(int)$_POST['NoteTp']."'";
    }
    else {
    	$noteTp = 'NULL';
    }
    $sql = "INSERT INTO note (champ1, NoteTp, champ2) VALUE ('".$champ1."', ".$noteTp.", '".$champ2."')";
    On indique ici explicitement NULL à MySQL. (idem pour un update).
    Aussi, cet exemple exclu la valeur 0, elle est considérée comme NULL.
    Si tu veux avoir la possibilité d'enregistrer 0 (et non null) faudra faire un peu différemment.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Pour mettre toutes les notes 0 à NULL, tu peux exécuter la requête suivante :

    UPDATE note SET noteTp=NULL WHERE noteTp=0;

    Mais assure toi que c'est vraiment ce que tu veux. Ceux qui ont eu 0 passeront à NULL également...

Discussions similaires

  1. Problème d'affichage dans MySql
    Par dreadysun dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/10/2009, 00h45
  2. [MySQL] Affichage des images insérés dans une base Mysql
    Par ines_m dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/05/2008, 17h54
  3. Réponses: 1
    Dernier message: 02/03/2008, 16h16
  4. Réponses: 2
    Dernier message: 09/11/2006, 09h59
  5. [MySQL] non affichage d'un zero dans le resultat d'une requete
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/11/2005, 00h31

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