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 :

problème avec une fonction SQL


Sujet :

PHP & Base de données

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut problème avec une fonction SQL
    Bonjour tout le monde !!!

    j'ai un souci je voudrai ajouter une fonction à mon code PHP.

    j'ai une table sur phpmyadmin qui contient plusieurs colonnes et je voudrais faire un traitement sur deux d'entre elles .

    1/ changement du dernier échelon = qui contient la date où l'échelon de l'employer a augmenté de 1.

    2/ echelon = qui contient l'échelon de l'employer " il augmente de 1 chaque 3 ans "


    j'ai ajouté une fonction SQL mais ça ne marche pas voilà le code :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="rtl">
        <head>
            <title>Institut de Telecommunication</title>
      <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256">
      <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-6">
      <META HTTP-EQUIV="Content-language" CONTENT="ar" >
      	<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
     
     
        </head>
    <body>
     
    <p align="center">
    <img src="image/logo.jpg" >
    </p>
     
     
     
    <div  id="menu" align="center">
     
    <ul>
     
    <li><a  href=employer.php> العمال</a>
     
     
     
    <li><a href=prof.php> الأساتذة و مقاييس التدريس </a>
     
    <li><a href=zero.php>مؤشر المستوى</a></li>
     
    <li><a href="#">الترقية في الدرجة</a></li>
    <li><a href="#">صفـحة الـبدايـة</a></li>
     
    </ul>
     
    </div>
     
    <p  align="center">
    الـترقـيـة فــي الـدرجــة
    </p>
     
     
    <?php
    try
    {
    	// On se connecte a MySQL
    	$bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
    	$bdd ->query('SET NAMES utf8'); 
    }
    catch(Exception $e)
    {
    	// En cas d'erreur, on affiche un message et on arrete tout
            die('Erreur : '.$e->getMessage());
    }
     
     
    //Creation de la table
    echo "<table>";
    //Remplacer ce qu'il y a entre les <td> </td> par un nom en arabe
    echo "<tr><td> <b>الرقم</td><td><b>الإسم و اللقب</td><td><b>تاريخ الإزدياد  </td> <td><b>تاريخ التوظيف</td><td><b>رتبة التوظيف </td><td><b>المستوي الدراسي </td> <td><b>الشهادة المتحصل عليها </td> <td><b>الوظيفة الحالية </td><td ><b>الدرجة </td><td><b>تاريخ اخر ترقية في الدرجة</td> <td><b>الأقدمية</td> <td><b>الوضعية الحالية</td></tr>";
     
     
     // On recupere tout le contenu de la table jeux_video
    $reponse = $bdd->query('SELECT * FROM boulot');
     
    //On passe en revue tous les resultats de la requete (stockee dans $reponse)
    while ($donnees = $reponse->fetch())
    {
        //On cree une nouvelle ligne
        echo "<tr>";
       //On ajoute la colonne qui va contenir le nom    
     
       //On ajoute la colonne contenant le prenom
       echo "<td>".$donnees["Numero"]."</td>";
       echo '<td>' .$donnees['Nom et prenom'] . '</td>';
       echo "<td>".$donnees["Date de naissance"]."</td>";
       echo "<td>".$donnees["Date de recrutement"]."</td>";
       echo "<td>".$donnees["Grade"]."</td>";
       echo "<td>".$donnees["Niveau scolaire"]."</td>";
       echo "<td>".$donnees["Diplome obtenu"]."</td>";
       echo "<td>".$donnees["Profession actuelle"]."</td>";
       echo "<td>".$donnees["Echelon"]."</td>";
       echo "<td>".$donnees["Date de dernier changement echelon"]."</td>";
       echo "<td>".$donnees["Anciennete"]."</td>";
       echo "<td>".$donnees["Etat actuel"]."</td>";
     
     
       //Fin de la nouvelle ligne
       echo "</tr>";
    }
    //On a lise les enregistrements,on peut fermer le tableau
    echo "</table>";
     
    $date_moins_3_ans = time()-3*365*86400;
     
    'UPDATE nom_table 
    SET date_dernier_changement_echelon="'.time().'",echelon=echelon+1 WHERE date_dernier_changement_échelon<'.$date_moins_3_ans
    ?>
     
     
     
    </body>
     
    </html>

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Pourquoi a tu mis un accent sur le dernier champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date_dernier_changement_échelon<'.$date_moins_3_ans
    Alors que le premier paramètre d'update sur ce champs ne contient pas d'accent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date_dernier_changement_echelon="'.time().'"

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut oui mais bon
    j'ai rectifié l'accent mais y a toujours un problème comme je débute dans ce domaine chai pas trop comment m'y prendre

    je pense que le prob vient de la ligne 97et 98 !!!

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Euh...c'est quoi cette ligne qui se balade comme ca dans ton code ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'UPDATE nom_table 
    SET date_dernier_changement_echelon="'.time().'",echelon=echelon+1 WHERE date_dernier_changement_échelon<'.$date_moins_3_ans

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut oui je vois
    au fait chui aps trop forte en php je maitrise plus le html et le css

    donc je dois exécuter la requête qui se trouve en bas du code

    j'ai donc fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $date_moins_3_ans = time()-3*365*86400;
     
     
    $reponse =$bdd ->query('UPDATE boulot SET date_dernier_changement_echelon="'.time().'",echelon=echelon+1 WHERE date_dernier_changement_echelon<'.$date_moins_3_ans')

    mais y a une erreur peux tu m'aider STP à l'exécuter correctement

  6. #6
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reponse =$bdd ->query('UPDATE boulot SET date_dernier_changement_echelon='.time().',echelon=echelon+1 WHERE date_dernier_changement_echelon<'.$date_moins_3_ans);

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut merci
    Merci pour ta réponse y a plus de bug sur la page mais bon la fonction ne marche pas car normalement y aura un changement dans quelques enregistrement concerné par le changement d'échelon .


    y a pas de changement de " date de dernier changement d'échelon " et les échelons n'ont pas augmenté de 1 .

    où est le problème ?

    merci encore une fois t'es un amour

  8. #8
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Ton n'es probablement pas rentrée dans ton where SQL. Quel est le type de champs de date_dernier_changement_echelon ?

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Il est de type DATE

  10. #10
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Donc ca ne peut pas faire, il faut que tu convertisses ton time() en date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reponse =$bdd ->query('UPDATE boulot SET date_dernier_changement_echelon='.time().',echelon=echelon+1 WHERE date_dernier_changement_echelon<'.FROM_UNIXTIME($date_moins_3_ans));

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    salut

    Merci pour ta réponse .

    pourrais tu me dire comment je pourrais convertir le time en date ?

    je vous remercie

  12. #12
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Et bien comme je te l'ai écris avec FROM_UNIXTIME

    FROM_UNIXTIME(unix_timestamp)

    Retourne une représentation de l'argument unix_timestamp sous la forme 'YYYY-MM-DD HH:MM:SS' ou YYYYMMDDHHMMSS, suivant si la fonction est utilisé dans un contexte numérique ou de chaîne.

  13. #13
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Ah sympa le FROM_UNIXTIME je ne connaissais pas, je vais m'en servir de suite

  14. #14
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut thank's
    Merci t'es adorable je vais tester et voir le résultat

  15. #15
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut minceuhh
    Salut

    beh ça ne marche pas j'ai eu un message d'erreur à la fin de ma page web qui est

    Fatal error: Call to undefined function FROM_UNIXTIME() in C:\wamp\www\tests\employer.php on line 101

    Je dois peut être définir la fonction mais je ne l'ai jamais utilisé

  16. #16
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Et si tu nous montrais cette fameuse ligne 101 ?


  17. #17
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Salut

    Madfrix désolée pour ma réponse tardive .

    voilà j'ai pu me débrouiller un petit peu mais là j'ai un souci c'est que l'échelon maximal doit être 12 alors que moi j'ai des 13 j'ai pensé à ajouter AND Echelon<12 à ma fonction mais ça ne marche pas .

    En plus de ce souci par exemple si la date du dernier changement echelon est égal à 05/05/2004 et l'échelon à 9 normalement après l'exécution de la fonction j'aurai un 05/05/2007 et l'échelon à 10 mais le problème c'est que ça s'arrête là alors qu'on doit avoir au final selon la date actuelle 05/05/2010 et l'échelon égale à 11 .

    Je pense qu'il faut penser à une boucle .

    Je vous donne le code de la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse =$bdd ->exec('UPDATE boulot SET Date_de_dernier_changement_echelon = DATE_ADD(Date_de_dernier_changement_echelon, INTERVAL 3 YEAR),Echelon = Echelon + 1 WHERE DATE_ADD(Date_de_dernier_changement_echelon, INTERVAL 3 YEAR) < NOW() AND Echelon<12');
    Pouvez vous m'aider SVP

Discussions similaires

  1. Problème avec une fonction utilisateur !
    Par nalou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/04/2006, 17h06
  2. [VB]Problème avec une requête SQL
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/03/2006, 17h47
  3. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39
  4. Problème avec une fonction et un array
    Par Neal Morse dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/08/2005, 12h04
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

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