Bonjour,

j'essaye d'avancer sur mon soucis pour creer une requete a choix multiple en PDO via un formulaire j'y vais par tâtonnement avant de m'occuper du formulaire j'essaye de sortir les donnees de ma base en saisissant les variables en "dur" dans ma requete mais j'ai un soucis je n ai rien dans mon "array" quelqu'un aurai t'il une idée?
je vous mets mon bout de code:

<?php $Auth->allow('Agence'); ?>
<?php
$req = $PDO->prepare('SELECT users.nom, users.prenom, users.agenceid, roles.name
                                    FROM users
                                    LEFT JOIN roles
                                    ON users.role_id=roles.id
                                    WHERE users.id=:id');
$req->execute(array(
    'id' => $Auth->user('id')
));
$user = $req->fetch();
?>
<?php
            global $PDO;
            $req = $PDO->prepare('SELECT boncommande.NumBdc, boncommande.Status, boncommande.Mail, agence.id
                                                FROM BonCommande
                                                LEFT JOIN agence
                                                ON boncommande.IdAgence=agence.id
                                                WHERE Status = 1
                                                AND boncommande.IdAgence = :agenceid');
            $req->bindParam(':agenceid', $agenceid, PDO::PARAM_INT);
            $req->execute();
            $result = $req->fetchAll();

?>

<pre>
<?php
    print_r($result);
    ?>
<br />
</pre>

et ce que j'obtiens a l affichage:

Array
(
)

Session

Array
(
[Auth] => stdClass Object
(
[id] => 1
[login] => admin
[mail] =>
[agenceid] => 0
[name] => Administrateur
[slug] => Admin
[level] => 10
)

)

merci d'avance pour votre aide

Gilles

6 réponses


Bonjour,

ce ne serai pas plutôt $user'agenceid'] au lieu de $agenceid à la ligne 25 ?

gilles40
Auteur

Merci royal tu m'as mis sur la voie, c etait:
"

$req->bindParam(':agenceid', $Auth->user('agenceid'), PDO::PARAM_INT);

maintenant je voudrai faire plusieuts "cas" je m'explique:

par un formulaire je voudrai pouvoir faire la recherche sur les criteres indiquer dans le formulaire en PDO mais je coince encore, comment puis je l'integrer pour que lorsque la premiere requete n'est pas valide il passe a la seconde et ainsi de suite?

voila mon formulaire:

<form action="index.php?p=searchbdc" method="post">
    <input type="hidden" name="ACTION" value="SEARCH">
       <input type="hidden" name="IdAgence" value=<?php echo $Auth->user('agenceid') ?> />
                Rechercher par :
                <select name="TypeRecherche">
                    <option value="0">En attente</option>
                    <option value="1">Référence</option>
                    <option value="2">Immatriculation</option>
                    <option value="3">Fournisseur</option>
                </select>
                Valeur : <input type="text" name="Valeur" size="30"/>
                <input type="submit" value="Rechercher"/>
</form>

merci d'avance pour le coup de main

Gilles

gilles40
Auteur

Bonjour,

j ai bien avancé sur mon formulaire mais maintenant j ai un probleme je n arrive pas a afficher les donnees extraites de la base,
voici mon code:

<?php
 if ( isset($_POST) && (!empty($_POST'ACTION']))){
        if ( $_POST'ACTION']=='SEARCH'){
            extract($_POST); // je vous renvoie à la doc de cette fonction
                                                   $val=$Valeur;
                                                   $cas= $Type;
            global $PDO;
                switch ($cas) // on indique sur quelle variable on travaille
                    {
                    case 0: // dans le cas où $cas vaut 0
                    $req = $PDO->prepare('SELECT *
                                                FROM BonCommande
                                                LEFT JOIN agence
                                                ON boncommande.IdAgence=agence.id
                                                WHERE Status = 0
                                                AND boncommande.IdAgence = :agenceid');
                    $req->bindParam(':agenceid', $Auth->user('agenceid'), PDO::PARAM_INT);
                    break;
                    case 1: // dans le cas où $cas vaut 1
                    $req = $PDO->prepare('SELECT *
                                                FROM BonCommande
                                                LEFT JOIN agence
                                                ON boncommande.IdAgence=agence.id
                                                WHERE boncommande.RefBdc =:RefBdc
                                                AND boncommande.IdAgence = :agenceid');
                    $req->bindParam(':agenceid', $Auth->user('agenceid'), PDO::PARAM_INT);
                    $req->bindParam(':RefBdc', $Valeur, PDO::PARAM_STR);
                    break;
                    case 2: // dans le cas où $cas vaut 2
                    $req = $PDO->prepare('SELECT *
                                                FROM BonCommande
                                                LEFT JOIN agence
                                                ON boncommande.IdAgence=agence.id
                                                WHERE boncommande.Immat = :Immat
                                                AND boncommande.IdAgence = :agenceid');
                    $req->bindParam(':agenceid', $Auth->user('agenceid'), PDO::PARAM_INT);
                    $req->bindParam(':Immat', $Valeur, PDO::PARAM_STR);
                    break;
                    case 3: // dans le cas où $cas vaut 3
                    $req = $PDO->prepare('SELECT *
                                                FROM BonCommande
                                                LEFT JOIN agence
                                                ON boncommande.IdAgence=agence.id
                                                WHERE boncommande.Fournisseur = :Fournisseur
                                                AND boncommande.IdAgence = :agenceid');
                    $req->bindParam(':agenceid', $Auth->user('agenceid'), PDO::PARAM_INT);
                    $req->bindParam(':Fournisseur', $Valeur, PDO::PARAM_STR);
                    break;
                     }
            $req->execute();
            $result = $req->fetchAll();
            print_r($result);
  }
  }
?>
<div class="bloc">
    <div class="bloc1">
        <p>Bonjour, <?php echo $Auth->user('prenom');?> <?php echo $Auth->user('nom');?>, vous êtes connecté en tant que <?php echo $Auth->user('name');?></p>
    </div>
    <div class="bloc2">
    <input type="submit" value="Se déconnecter"onclick="document.location.href = 'index.php?p=logout';" />
    </div>
</div>
<form action="index.php?p=boncommande" method="post">
    <input type="hidden" name="ACTION" value="SEARCH">
       <input type="hidden" name="IdAgence" value=<?php echo $Auth->user('agenceid') ?> />
                Rechercher par :
                <select name="Type">
                    <option value="0">En attente</option>
                    <option value="1">Référence</option>
                    <option value="2">Immatriculation</option>
                    <option value="3">Fournisseur</option>
                </select>
                Valeur : <input type="text" name="Valeur" value=""size="30"/>
                <input type="submit" value="Rechercher"/>
</form>

<div class="contenu">
        <?php require 'menu.php';?>
    <div class="affichage">
    </div>
</div>

et ce que cela me renvoi en faisant un 'print_r'

Array ( [0] => stdClass Object ( [NumBdc] => 10017 [RefBdc] => 2005/AXE/10017 [Fournisseur] => Carglass [Demandeur] => Anne sophie [DateDemande] => 2005-06-09 11:00:12 [TypeVL] => VU [Marque] => [Chassis] => WOLOXCF2533037377 [DateMiseCircu] => 2003-04-17 00:00:00 [Immat] => 879AHC51 [MVA] => 2970085 [Kilometre] => 32900 [RefacturableRA] => 525961634 [Status] => 0 [Commentaire] => eclat pb/ok constat [Mail] => auxerre@massoutre-locations.com [IdAgence] => 1 [Numfact] => [DateFact] => [MtTTC] => [Signataire] => [Id] => 1 [Ville] => Auxerre [CodeMne] => AXE ) [1] => stdClass Object ( [NumBdc] => 29776 [RefBdc] => 2010/ADM/29776 [Fournisseur] => Renault des cites [Demandeur] => Lucienne [DateDemande] => 2010-01-13 08:44:14 [TypeVL] => VP [Marque] => RENAULT CLIO [Chassis] => VF1BR1F0H41195453 [DateMiseCircu] => 2009-04-28 00:00:00 [Immat] => AA372FC [MVA] => 2937222 [Kilometre] => 19941 [RefacturableRA] => 0 [Status] => 0 [Commentaire] => A VOIR [Mail] => huber@massoutre-locations.com [IdAgence] => 1 [Numfact] => [DateFact] => [MtTTC] => 0.0000 [Signataire] => [Id] => 1 [Ville] => Auxerre [CodeMne] => AXE ) )

mais je n'arrive pas a afficher mes donnes avec un 'echo',

si quelqu un pouvait me mettre sur la voie se serai sympa

merci d'avance

Gilles

tu peux simplifier comme ceci

<p>Bonjour, <?php echo $Auth->user('prenom') . $Auth->user('nom') . 'vous êtes connecté en tant que' . $Auth->user('name');?> </p>

il faut simplifier ton code en y ajoutant des points de concaténation pour séparer tes variable des string = texte.
tiens moi au courant.

gilles40
Auteur

Salut Demeter,

ca marche, comme je debute je ne connaissait pas cette methode, en ce moment j ai le cerveau farci de PHP,PDO

merci pour le conseil

Gilles

Bonjour Gilles40
Je suis content d'avoir su t'aider a bientôt au tour d'un post.