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 :

Bouton de tri avec PHP sql dans un simple-MVC


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Wild code school
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Wild code school

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Par défaut Bouton de tri avec PHP sql dans un simple-MVC
    Bonjour à tous cela fait plusieurs jours que je galère sur un fonction de tri par prix je travail avec un MVC voici mon code :

    je suis en PHP 8.2

    Dans mon productManager :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public function sortByPrice(string $price): array
        {
            $sql = "SELECT * FROM WS_product ORDER BY price=:price";
            $stmt = $this->pdo->prepare($sql);
            $stmt->bindValue(':price', $price, \PDO::PARAM_STR);
            $stmt->execute();
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
    Dans mon productController:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function sortPrice(): string
        {
            if ($_SERVER['REQUEST_METHOD'] === 'get') {
                $price = $_GET['price'];
                $productManager = new ProductManager();
                $productManager->sortByPrice($price);
                header('Location:/product/sort?price=' . $price);
            }
            return $this->twig->render('Product/index.html.twig');
        }
    Et voici mon formulaire en html:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <form action="/product/sort" method="get">
                <input type="hidden" name="price" id="price" value="{{ product.price }}">
                <button class="btn btn-success m-3">Trier</button>
            </form>

    Mon but est de pouvoir cliquer sur mon bouton du formulaire et qu'il trie mes produits par ordre de prix grâce à la valeur du bouton car j'ai d'autre bouton qui vont par la suite utilisé la même fonction.

    Mais cela ne fonctionne pas et je ne sais plus quoi faire après 4 jours de recherche.
    En vous remerciant par avance,

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 319
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 319
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM WS_product ORDER BY price=:price";
    Ici ton SQL n'est pas bon, c'est comme si tu faisais ORDER BY TRUE.

    Puisque tu es dans une méthode sortByPrice() on peut raisonnablement fixer le tri en dur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function sortByPrice(): array
    {
        $sql = 'SELECT ALL tes_colonnes FROM WS_product ORDER BY price ASC'; // On évite le "SELECT *"
        return $this->pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    }

  3. #3
    Membre à l'essai
    Femme Profil pro
    Wild code school
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Wild code school

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Par défaut
    Bonjour,
    Merci de ton retour mais en dur je l avais réussis.
    Le but étais de pouvoir réutiliser cette fonction avec un autre bouton qui trirais par catégorie.
    Je suis sur la création d'un site e-commerce avec plusieurs façon de trier.
    Fonctionnant étape par étape
    Je souhaiterais avoir un fonction utilisable avec plusieurs boutons.
    Merci,

  4. #4
    Membre à l'essai
    Femme Profil pro
    Wild code school
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Wild code school

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Par défaut modification
    dans le html j'ai modifié la value était fausse mais cela ne suffit pas c’a fonctionne pas encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <form action="/product/sort" method="get">
                <input type="hidden" name="price" id="price" value="price">
                <button class="btn btn-success m-3">Trier</button>
            </form>

  5. #5
    Membre à l'essai
    Femme Profil pro
    Wild code school
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Wild code school

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Par défaut solution
    Bonjour,
    J'ai trouvé la solution la voici :

    productManager :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     public function sortByPrice(string $price)
        {
            $sql = "SELECT * FROM WS_product ORDER BY " . $price;
            $stm = $this->pdo->prepare($sql);
            $stm->execute();
            return $stm->fetchAll(PDO::FETCH_ASSOC);
        }
    ProductController

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function sortPrice(string $price): string
        {
            $productManager = new ProductManager();
            $products = $productManager->sortByPrice($price);
     
            if ($_SERVER['REQUEST_METHOD'] === 'get') {
                $price = $_GET['price'];
                header('Location:/product/sort?price=' . $price);
            }
            return $this->twig->render('Product/index.html.twig', ['products' => $products]);
        }
    html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <form action="/product/sort" method="get">
                <input type="hidden" name="price" value="price">
                <button class="btn btn-success m-3">Trier par prix</button>
            </form>


    et voila bonne lecture

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

Discussions similaires

  1. probleme avec requete SQL dans code VB6
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/05/2007, 21h36
  2. gérer les transactions avec php/sql server
    Par loukili81 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/05/2007, 17h39
  3. Besoin aide avec bd sql dans autre dossier
    Par barzalou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/01/2007, 09h34
  4. formule de calcul du TRI avec PL/SQL
    Par mongilotti dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 30/07/2005, 20h23

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