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

Langage PHP Discussion :

Récupération valeur d'un array dans une fonction


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut Récupération valeur d'un array dans une fonction
    bonjour a tous,
    question toute béte, j'ai une fonction qui comprends des paramètres ( nom de la table ainsi que le nom du champs )
    j'appelle cette fonction avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    recuperation_derniere_date_enregistrement('tbl_actualite','date_actualite');
    Voici la fonction : recuperation_derniere_date_enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function recuperation_derniere_date_enregistrement($table ,$champs){
    $bdd = connexion_bdd();
    $requete = $bdd->query('SELECT '.$champs.' FROM '.$table.' ORDER BY '.$champs.' DESC LIMIT 1');	
     
    $resultat = $requete->fetch(PDO::FETCH_ASSOC);
     
    var_dump ($resultat);
     
    }
    mon var_dup m'affiche un array
    Nom : array.jpg
Affichages : 135
Taille : 38,5 Ko

    comment je peux extraire la donnée pour avoir la date
    et m'affiche exemple voici la date : xxxxx

    merci pour votre aide, j'ai penssé a un foreach mais sachant que dans ma requete je prend que la derniere date cela ne dois pas etre bon

    Si je fais cela echo $resultat[$champs]; est ce correct ?

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Si je fais cela echo $resultat[$champs]; est ce correct ?
    Oui, c'est tout à fait l'idée.
    Simplement, mets ton $champ au singulier, ici, par définition, il n'y en a qu'un.
    Et indente ton code. Et tue ta connexion. Puisque c'est un PDO, je te propose ceci :
    Sinon, ben, bravo !
    Tu es conscient que tu n'auras pas une date française ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function recuperation_derniere_date_enregistrement($table ,$champ){
    	$bdd = connexion_bdd();
    	$requete = $bdd->query('SELECT '.$champ.' FROM '.$table.' ORDER BY '.$champ.' DESC LIMIT 1');	
    	$resultat = $requete->fetch(PDO::FETCH_ASSOC);
    	$bdd = NULL;//tue ta connexion
    	return $resultat[$champ];
    }
    //pour appeler
    $der_enreg=recuperation_derniere_date_enregistrement('ma_table' ,'ma_date');
    echo $der_enreg;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$requete = $bdd->query('SELECT MAX('.$champ.') as max_val FROM '.$table.';');	
    	$resultat = $requete->fetch(PDO::FETCH_ASSOC);
     
    	return $resultat['max_val'];
    N.B. $bdd est une variable interne à la fonction.
    Inutile de la "tuer" ici...
    Dernière modification par Invité ; 27/04/2018 à 11h46.

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    Merci pour vos réponses maintenant je souhaite évoluer mon code et recuperrer le résultat pour une autre fonction qui elle calculerai l'intervalle entre le dernier enregistrement et la date du jour

    Donc si je reprend ma premiere fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function recuperation_derniere_date_enregistrement($table ,$champ){
    $bdd = connexion_bdd();
    $requete = $bdd->query('SELECT '.$champ.' FROM '.$table.' ORDER BY '.$champ.' DESC LIMIT 1');	
    $resultat = $requete->fetch(PDO::FETCH_ASSOC);
    return $resultat[$champ];		
    }
    et maintenant ma seconde fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function calculnombredejour($champ)
    {
     
    $dernier_enregistrement = $champ;
    	$date_actuel = date("Y-m-d");
    	$timestamp_date_enregistrement = strtotime($dernier_enregistrement);
    	$timestamp_date_actuel = strtotime($date_actuel);
    	$calcul_interval_jour_timestamp = $timestamp_date_actuel - $timestamp_date_enregistrement;
    	$interval_publication = $calcul_interval_jour_timestamp/86400;	
    $resultatdate = '';	
    $resultatdate .= " l'intervale est de : ".$interval_publication." jours";
     
    return $resultatdate;
    }
    je suis pas sur de ma seconde fonction pour que celle ci recupere le résultat de la première fonction.

    puis aprés je l'appelerai par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo calculnombredejour(recuperation_derniere_date_enregistrement('tbl_actualite','date_actualite'));

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$date_actuel = date("Y-m-d");
    	$timestamp_date_actuel = strtotime($date_actuel);
    Non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$timestamp_date_actuel = time();
    Oui.
    Dernière modification par Invité ; 27/04/2018 à 12h10.

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    et si je fais cela ?

    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
     
    function recuperation_derniere_date_enregistrement($table ,$champ){
    $bdd = connexion_bdd();
    $requete = $bdd->query('SELECT '.$champ.' FROM '.$table.' ORDER BY '.$champ.' DESC LIMIT 1');	
    $resultat = $requete->fetch(PDO::FETCH_ASSOC);
    return $resultat[$champ];		
    }
    // optension de la date par la function
    function calculnombredejour($champ)
    {
     
    $dernier_enregistrement = $champ;
    	$date_actuel = date("Y-m-d");
    	$timestamp_date_enregistrement = strtotime($dernier_enregistrement);
    	$timestamp_date_actuel = time();
    	$calcul_interval_jour_timestamp = $timestamp_date_actuel - $timestamp_date_enregistrement;
    	$interval_publication = $calcul_interval_jour_timestamp/86400;	
    $resultatdate = '';	
    $resultatdate .= " l'intervale est de : ".$interval_publication." jours";
     
    return $resultatdate;
    }
    il me donne :
    Nom : sssssss.jpg
Affichages : 120
Taille : 40,2 Ko

  7. #7
    Invité
    Invité(e)
    Par défaut
    Faisons au plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function calculnombredejour( $date_dernier )
    {
    	$time_dernier = strtotime( $date_dernier );
    	$time_actuel = time();
     
    	$interval_nombre_secondes = abs( $time_actuel - $time_dernier );
     
    	$interval_nombre_jours = floor( $interval_nombre_secondes / 86400 );	// 86400 = 60 x 60 x 24 (1 jour)
     	$affichage = $interval_nombre_jours.' jours';
    	return $affichage;
    }


    Maintenant, un peu plus "étoffé" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function calculnombredejour( $date_dernier )
    {
    	$time_dernier = strtotime( $date_dernier );
    	$time_actuel = time();
     
    	$interval_nombre_secondes = abs( $time_actuel - $time_dernier );
    	$interval_nombre_minutes = floor( $interval_nombre_secondes / 60 );	// 60 (1 minute)
    	$interval_nombre_heures = floor( $interval_nombre_secondes / 3600 );	// 3600 = 60 x 60 (1 heure)
    	$interval_nombre_jours = floor( $interval_nombre_secondes / 86400 );	// 86400 = 60 x 60 x 24 (1 jour)
     
    	$affichage = ( $interval_nombre_jours > 1 )? $interval_nombre_jours.' jours' : ( ( $interval_nombre_heures > 1 )? $interval_nombre_heures.' heures' : $interval_nombre_minutes.' minutes' );
    	return $affichage;
    }
    Il va falloir apprendre à utiliser les fonctions PHP...
    Dernière modification par Invité ; 27/04/2018 à 12h41.

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    Je te remercie,
    cela reviens a peuuuuuuuu prés au même , tu ne véhicule pas de html, tu indique que c'est une valeur numérique, puis tu arrondie a l'entier inferieur

    est ce bien cela ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Teste, tu verras bien.

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$affichage = ( $interval_nombre_jours > 1 )? $interval_nombre_jours.' jours' : ( ( $interval_nombre_heures > 1 )? $interval_nombre_heures.' heures' : $interval_nombre_minutes.' minutes' );
    • Si > 1 jour : affiche le nombre de jours
    • Sinon Si > 1 heure : affiche le nombre d'heures
    • Sinon affiche le nombre de minutes

    C'est la syntaxe de condition ternaire (utilisée 2 fois) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = (condition)? "si condition vraie" : "si condition fausse";


    2- En sortie, tu peux mettre du HTML si tu veux.
    ex. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$affichage = ( $interval_nombre_jours > 1 )? '<b>'.$interval_nombre_jours.'</b> jours' : ( ( $interval_nombre_heures > 1 )? '<b>'.$interval_nombre_heures.'</b> heures' : '<b>'.$interval_nombre_minutes.'</b> minutes' );

  10. #10
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    Je viens de testé j'ai modifié la date avec celle d'aujourdhui

    voici se que j'obtiens
    Nom : h.jpg
Affichages : 117
Taille : 32,0 Ko

  11. #11
    Invité
    Invité(e)
    Par défaut
    1- Oui, les floor() sont mal placés...
    De toute façon, ce n'est pas très satisfaisant.


    2- Utilisons les grands moyens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function calculnombredejour( $date_dernier )
    {
    	$datetime1 = new DateTime( $date_dernier );
    	$datetime2 = new DateTime( date('Y-m-d H:i:s') );
    	$interval = $datetime1->diff($datetime2);
     
    	return $interval->format('%a jours, %h heures, %i minutes');
    }

  12. #12
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    Super jour / heure et minute un grand merci

    beaucoup plus simple que les formules de calcul :p

  13. #13
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    je reviens au sujet de la fonction,
    je l'utilise pour plusieurs éléments, j'ai testé d'ajouter une nouvelle photo ou alerte dans mes requetes sql j'utilise NOW(), la date est bonne dans la bdd.
    par contre l'affichage n'est pas bon ont dirai un problème de calcul de la fonction

    voici une capture d’écran
    Nom : gx.jpg
Affichages : 117
Taille : 358,8 Ko

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu ne nous montres pas ton code, ça va etre dur de te répondre.

    La fonction que t'a donné jreaux62 compare avec la date d'aujourd'hui, donc pour faire l'intervalle entre deux dates tierces, ça ne va pas. (d'ailleurs je ne vois pas ce que tu as bien pu écrire)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    Je souhaite que la fonction calcul l'intervale en la derniere date enregistré et la date du jour.
    jreaux62 à amélioré la fonction pour que cela donné le Jour heure et minute.

    Voici le code complet des deux fonctions


    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
     
    function recuperation_derniere_date_enregistrement($table ,$champ){
    $bdd = connexion_bdd();
    $requete = $bdd->query('SELECT '.$champ.' FROM '.$table.' ORDER BY '.$champ.' DESC LIMIT 1');	
    $resultat = $requete->fetch(PDO::FETCH_ASSOC);
    return $resultat[$champ];		
    }
     
    function calculnombredejour( $date_dernier )
    {
    	$datetime1 = new DateTime( $date_dernier );
    	$datetime2 = new DateTime( date('Y-m-d H:i:s') );
    	$interval = $datetime1->diff($datetime2);
     
    	return $interval->format('%a jours, %h heures, %i minutes');
    }
    Et voici comment je peux appeler mes fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <?php echo calculnombredejour(recuperation_derniere_date_enregistrement('tbl_photo','date_ajout_photo'));?>
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo calculnombredejour(recuperation_derniere_date_enregistrement('tbl_actualite','date_actualite'));
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo calculnombredejour(recuperation_derniere_date_enregistrement('tbl_alerte','date_alerte'));

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et par exemple, quelle donnée ne donne pas le resultat attendu ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    Dans l'exemple ci joint

    Nom : gx.jpg
Affichages : 106
Taille : 358,8 Ko

    exemple dans phpmyadmin pour la table tbl_photo j'ai enregistré une nouvelle photo en date du 2018-04-27 a 18h21
    quand j'actualise mon panel de dashboard sur la droite ou il y a 3 nombre de photo
    il me donne 0jours 1heure et 54 minutes, alors qu'il devrait me donner 0jours, 0heures et 3minutes

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

    C'est certainement une différence du fuseau horaire, avec un décalage de 2h.
    L'un doit être à l'heure GMT ("...sql j'utilise NOW()..."), l'autre à l'heure d'été en France ( date('Y-m-d H:i:s') ).

  19. #19
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    Donc si sql utilise GMT enregistrement avec le NOW pour php faut utiliser un datetimezone ?

  20. #20
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Février 2014
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 145
    Par défaut
    j'ai modifié le code est ajouté un fuseau horaire + le décallage

    voici se que j'ai effectué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function calculnombredejour( $date_dernier )
    {
    	$datetime1 = new DateTime( $date_dernier,new DateTimeZone('Europe/Paris') );
    	$datetime2 = new DateTime( date('Y-m-d H:i:s',time()+ 7200),new DateTimeZone('Europe/Paris') );	
    	$interval = $datetime1->diff($datetime2); 
    	return $interval->format('%a jours, %h heures, %i minutes');
    }
    Cela fonctionne est ce correct ?

Discussions similaires

  1. problème récupération valeur d'un "div"
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/06/2005, 10h04
  2. Pb avec les checkbox: tout sélectionner,récupération valeurs
    Par bubble_gum dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/10/2004, 17h42
  3. [Débutant][JSP]Récupération valeur de checkbox
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/09/2004, 09h16
  4. récupération valeur id auto incrément
    Par Jovial dans le forum Requêtes
    Réponses: 2
    Dernier message: 31/08/2004, 08h56
  5. Récupération valeur d'une propriété type TStrings
    Par Stéphane Vaillant dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2003, 11h47

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