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 SQL : Renommer un champ


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut PHP SQL : Renommer un champ
    Bonjour,
    je souhaiterais renommer un champ dans ma requête qui s'appelle date par un autre nom du genre "date_rec", mais je ne trouve pas comment faire puisque la où j'appelle mon champ c'est au niveau du "WHERE" et le "WHERE date as nouveau_nom" ne marche pas ...
    voici la ligne où est mon problème

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_requette="SELECT MAX(Etoday) as maximum  FROM solaire_valeurs_moyennes_15 WHERE date LIKE ?";

    Si possible je ne voudrais pas modifier ma table.
    Merci d'avance.

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

    Citation Envoyé par reborn1235 Voir le message
    ...renommer un champ dans ma requête qui s'appelle date par un autre nom du genre "date_rec"...
    • SQL ALTER TABLE

    Sinon, tu le fais à la main dans phpmyadmin.
    N.B. On ne parle pas de "champ", mais de "colonne".

    ...Si possible je ne voudrais pas modifier ma table...
    Alors là, je ne vois pas ce que tu veux faire...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Alors là, je ne vois pas ce que tu veux faire...
    Ce que je voudrais c'est associer un autre nom à la colonne là où j'écris le code de la même manière que lorsqu'on fait SELECT nom_a_modifier as nouveau_nom.

    Mon programme demande à l'utilisateur de saisir une date sur un formulaire et je récupère cette date pour afficher les élements de ma table correspondant à cette date seulement petit problème dans les éléments de ma table il y a une colonne qui s'appelle date et ça me gène pour l'afficher.

    voici mon 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
    /*on créer une requête*/
    $sql_requette="SELECT MAX(Etoday) as maximum  FROM solaire_valeurs_moyennes_15 WHERE date LIKE ?";
    
    /*récupere la date choisie par l'utilisateur*/
    $ma_date=$_POST['ma_date'].'%';
    
    /*on prépare la requête*/
    $reponse =  $connexion->prepare($sql_requette);
    $reponse->execute(array($ma_date));?>
    
    <!--affichage des reponses tant qu'il y a des resultats --> 
    <table class="bdd_formulaire">  
        <?php while ($ligne = $reponse->fetch(PDO::FETCH_ASSOC))
        {?>
            <tr>
            <!--<td> A la date*/  /*echo $ligne['date']; -->
          <td> <?php  echo "L'énergie max était de : " .$ligne['maximum'];?> </td>  <!--joules </td>-->
        
            </tr>
       <?php } ?> <!-- fin du while -->
    </table>
    <?php
    $reponse->closeCursor(); /*-termine le traitement de la requête*/

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 418
    Points : 4 884
    Points
    4 884
    Par défaut
    Salut,

    Si tu veux réutiliser des alias dans ta requête, il faut passer par having.

    Donc la requête devient :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT MAX(Etoday) as maximum,date as une_date  
    FROM solaire_valeurs_moyennes_15 
    group by (un id unique est préférable ici)
    having une_date=?;

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pour pouvoir "échapper" le nom de la colonne, on doit l'écrire avec des `...` :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_requette="SELECT MAX(Etoday) as maximum  FROM solaire_valeurs_moyennes_15 WHERE `date` LIKE ?";
    De toute façon, il faut éviter de nommer les colonnes avec des mots clefs réservés du SQL.

    A ta place, je changerais le nom de la colonne en "date_mesure", par exemple.
    Ça a, en plus, l'avantage d'être plus significatif.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ok merci beaucoup,
    j'ai mis WHERE `date` mais lorsque je fais <?php echo $ligne[`date`]; ?> ça ne fonctionne pas pour afficher la date, c'est parce que je n'ai mis qu'un seul élément dans mon SELECT que je ne peux pas afficher les autres éléments de la table ou c'est toujours un problème de nom ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Oui je sais qu'il faut éviter les noms comme ça mais là c'était une table que mon prof m'a partager, les noms et valeurs étaient déjà tous écris.
    Je verrais pour changer le nom de la colonne avec la méthode que vous m'avez marquer plus haut, merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ne confonds pas les syntaxes SQL et PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $ligne['date']; ?>

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    @Toufik83

    Merci de m'aider,
    Je ne comprend pas ce que je dois mettre dans le group by ici..
    Mais lorsque je fais
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MAX(Etoday) as maximum,date as date_rec  
    FROM solaire_valeurs_moyennes_15 
    WHERE date_rec LIKE ?";
    ça ne fonctionne pas

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Ne confonds pas les syntaxes SQL et PHP
    J'ai corrigé mais j'obtient une erreur Notice:
    Undefined index: date in C: etc...

  11. #11
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 418
    Points : 4 884
    Points
    4 884
    Par défaut
    Tu n'as pas un id unique dans la table solaire_valeurs_moyennes_15 ?

    Si oui, met le dans la requête et le group by puis tu remplaces le where par having.

    Ce qui donne :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id,MAX(Etoday) as maximum,date as date_rec  
    FROM solaire_valeurs_moyennes_15 
    group by id
    having date_rec LIKE ?;

    Remarque : la solution de jreaux62 fonctionne aussi, je voudrais seulement te montrer comment utiliser le having lorsqu'on a besoin de réutiliser les alias.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Si j'en ai un je n'avais pas saisie qu'on parlait des id de la table
    Mon id s'appelle ... id
    Donc j'ai fais
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id,MAX(Etoday) as maximum,date as date_rec  FROM solaire_valeurs_moyennes_15 GROUP BY id HAVING date_rec LIKE ?;
    Mais j'obtiens une multitude de valeur et de date je ne comprend pas pourquoi...
    Il faut bien mettre le nom de l'id dans GROUP BY et pas une valeur de id ?

  13. #13
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 418
    Points : 4 884
    Points
    4 884
    Par défaut
    Oui, il faut mettre le nom du champ id et pas sa valeur.

    Comment ça une multitude de valeur? des redondances (doublons) tu veux dire ?

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    J'ai ajouté ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php echo $ligne['date_rec']; ?>
    <?php  echo "L'énergie max était de : " .$ligne['maximum'];?>
    et j'obtiens plein de date et plein de valeur pour le maximum alors que je voudrais obtenir l'unique valeur max de la date choisie

  15. #15
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 418
    Points : 4 884
    Points
    4 884
    Par défaut
    Citation Envoyé par reborn1235 Voir le message
    alors que je voudrais obtenir l'unique valeur max de la date choisie
    Déjà pourquoi tu utilise LIKE dans la requête ? je pense qu'il faut remplacer like par = tout simplement, non ?

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    et en ajoutant un distinct ==> distinct(MAX(Etoday)) dans la requête, toujours le même problème ?
    Non là plus rien ne s'affiche

    Edit : sans le distinct si je met date_rec dans GROUP BY j'obtiens les mêmes résultats

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    Déjà pourquoi tu utilise LIKE dans la requête ? je pense qu'il faut remplacer like par = tout simplement, non ?
    Mon professeur m'a conseillé de mettre LIKE.
    Mais je viens d'essayer avec = à la place et je crois que le problème est résolu

  18. #18
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 418
    Points : 4 884
    Points
    4 884
    Par défaut
    Peut être que ton Prof voulait te piéger .

    A mon avis c'est = qu'il faut mettre, à moins que je me trompe...

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Je ne sais pas, je lui dirais en tout cas
    Merci beaucoup pour votre aide ça m'a beaucoup aidé en plus j'ai appris des nouveaux mots avec HAVING c'est cool !

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

Discussions similaires

  1. [SQL-Server] Récuperer champs en php / Sql server
    Par Minimoy's dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 10/07/2017, 08h38
  2. [MySQL] PHP/SQL n'afficher que les champs vides
    Par rouly dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/02/2010, 05h47
  3. [ADO][Access][SQL]Renommer un champ
    Par dleu dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/08/2005, 19h03
  4. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59
  5. [SQL] Compter des champs indépendement l'un de l'autre
    Par rippey dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 29/10/2003, 15h35

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