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 :

Un php pour plusieurs scripts


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut Un php pour plusieurs scripts
    bonjour,

    J'ai 2 scripts, un pour enregistrer mes données et l'autre pour les charger, je souhaiterais savoir si il était possible que ces 2 scripts puissent être contenu dans une seule page php, y a t-il une façon de faire ou des des choses à éviter.

    Merci à vous.

    Voici mes scripts:
    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
    <?php
     
      $serveur = 'sql.free.fr';
      $login = 'monLogin';
      $pass = 'monPass';
     
      $nom_cl = $_POST['nom_cl'];
      $prenom_cl  = $_POST['prenom_cl'];
     
      $naissance = $_POST['naissance'];
      $lieu = $_POST['lieu'];
      $adresse = $_POST['adresse'];
      $cp = $_POST['cp'];
      $ville = $_POST['ville'];
      $tel_fixe = $_POST['tel_fixe'];
      $tel_por = $_POST['tel_por'];
     
      try
     
      {
     
      $connexion = new PDO('mysql:host=$serveur;dbname=maTable;charset=UTF8', $login, $pass);
      $connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
      echo 'connexion=1';
     
      $requete = $connexion->prepare('INSERT INTO maTable (nom_cl,prenom_cl,naissance,lieu,adresse,cp,ville,tel_fixe,tel_por) 
                      VALUES (:nom_cl,:prenom_cl,:naissance,:lieu,:adresse,:cp,:ville,:tel_fixe,:tel_por)');
     
     
     
      $requete->bindParam(':nom_cl' , $nom_cl);
      $requete->bindParam(':prenom_cl' , $prenom_cl);
     
      $requete->bindParam(':naissance', $naissance);
      $requete->bindParam(':lieu', $lieu);
      $requete->bindParam(':adresse', $adresse);
      $requete->bindParam(':cp', $cp);
      $requete->bindParam(':ville', $ville);
      $requete->bindParam(':tel_fixe', $tel_fixe);
      $requete->bindParam(':tel_por', $tel_por);
     
      $requete->execute(); 
     
      }
     
      catch(PDOException $e)
     
      {	
        echo 'Echec de la connexion : ' .$e->getMessage();
      }
     
    ?>
    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
    <?php
     
      $serveur = 'sql.free.fr';
      $login = 'monLogin';
      $pass = 'monPass';
     
      $nom_cl  = $_POST['nom_cl'];
      $prenom_cl  = $_POST['prenom_cl'];
     
      try
     
      {
     
        $connexion = new PDO('mysql:host=$serveur;dbname=maTable;charset=utf8', $login, $pass);
        $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
        $requete = $connexion->prepare('SELECT nom_cl,prenom_cl,naissance,lieu,adresse,cp,ville,tel_fixe,tel_por 
                        FROM maTable WHERE nom_cl = :nom_cl AND prenom_cl = :prenom_cl');
     
     
        $requete->bindParam(':nom_cl', $nom_cl);
        $requete->bindParam(':prenom_cl', $prenom_cl);
     
     
        $requete->execute(); 
     
        $resultat = $requete->fetch();
     
        if( $resultat != 0 )
        {
          $connexion=1; // Récupéré dans mon appli pour confirmer le résultat
        }
        else
        {
          $connexion=2; // Récupéré dans mon appli pour confirmer le non résultat
        }
     
        echo 	
        '{        
           
        "connexion":'.$connexion.',
        
        "nom_cl":"'.$resultat['nom_cl'].'", 
        "prenom_cl":"'.$resultat['prenom_cl'].'",
        
        "naissance":"'.$resultat['naissance'].'",
        "lieu":"'.$resultat['lieu'].'",
        "adresse":"'.$resultat['adresse'].'",
        "cp":"'.$resultat['cp'].'",
        "ville":"'.$resultat['ville'].'",
        "tel_fixe":"'.$resultat['tel_fixe'].'",
        "tel_por":"'.$resultat['tel_por'].'"
        
        }';
     
      }
     
      catch(Exception $e)
     
      {
            die('Erreur : '.$e->getMessage());
      }
     
    ?>

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 521
    Par défaut
    Salut,

    Oui c'est bien possible de mettre le tout dans un seul script php.

    Tout d'abord tu commences par mettre les instructions de la connexion à la base dans un fichier a part que tu nommeras par exemple "dbConnect.php".

    dbConnect.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php 
    $serveur='sql.free.fr';
    $login='monLogin';
    $pass='monPass';
    try{
      $connexion = new PDO('mysql:host=$serveur;dbname=maTable;charset=UTF8', $login, $pass);
      $connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(Exception $e){    
        echo 'Echec de la connexion : ' .$e->getMessage();
    }
    Après tu peux appeler ce fichier en utilisant include ou require à chaque fois que t'en as besoin.

    Les trois script (de connexion, d'insertion et de sélection) sont groupés ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    include('dbConnect.php');//on appel le fichier dbConnect
    $role=$_POST["role"];//tu peux par exemple utiliser une variable $role qui détermine si c'est une insertion ou bien une sélection.
    if($role=="select"){
       /* ton code de sélection */
    }
    else if($role=="insert"){
       /* ton code d'insertion */
    }

  3. #3
    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
    Bonjour Cortoh,

    Tu as besoin de 3 notions : la notion d'architecture d'un petit site web, la notion d'include de fichier et la notion de fonction...

    Je pars du principe que ton code actuel tourne.

    tu crées un répertoire inc qui indiquera que tu placeras dans ce répertoire des bouts de scripts qui n'ont disons aucune existence autonome, qui ne peuvent exister que convoqués par des vrais scripts complets... Mais ça t'évite de les réécrire à chaque page...

    inc / connexion.inc.php

    Voici ce qu'il contiendra (oui, c'est exprès que tu ne fermes jamais la balise php).

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    try {
       $pdo = new PDO('mysql:host=localhost;port=3306;dbname=ma_base;charset=utf8','root', '', [
       PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
       PDO::ATTR_EMULATE_PREPARES   => false
       ]);
    }
    catch(PDOException $e)
    {	
       echo 'Echec de la connexion : ' .$e->getMessage();
    }

    Ensuite, allez, on ne va pas t'embêter maintenant avec la programmation objet, tu crées un répertoire fonctions.php à la racine de ton site...
    Il contient ceci

    Code PHP : 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
    <?php
    function insereDsTable( PDO $PDO, $params=array($nom_cl,$prenom_cl,$naissance,$lieu,$adresse,$cp,$tel_fixe,$tel_por) ){
       $colonnes=array(':nom_cl',':prenom_cl',':naissance',':lieu',':adresse',':cp',':ville',':tel_fixe',':tel_por') ;
       $requete = $PDO->prepare('INSERT INTO maTable VALUES (:nom_cl,:prenom_cl,:naissance,:lieu,:adresse,:cp,:ville,:tel_fixe,:tel_por)');
       $sql='INSERT INTO maTable VALUES (';
       $sql.=implode(',',$colonnes);
       $sql.=);
       $requete=$PDO->prepare($sql);
       $i=0;
       foreach($colonnes as $colonne){
          $requete->bindParam($colonne , $params[$i]);
          $i++;
       }
      return $requete->execute(); 
    }
    function recupereDsTable(PDO $PDO, $nom_cl, $prenom_cl){
       $requete = $PDO->prepare('SELECT nom_cl,prenom_cl,naissance,lieu,adresse,cp,ville,tel_fixe,tel_por 
                        FROM maTable WHERE nom_cl = :nom_cl AND prenom_cl = :prenom_cl');
        $requete->bindParam(':nom_cl', $nom_cl);
        $requete->bindParam(':prenom_cl', $prenom_cl);
        $requete->execute(); 
        return $requete->fetch(PDO::FETCH_ASSOC);
    }
    Enfin ton fichier index.php à la racine de ton site se composerait simplement de ceci :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    include('inc/connexion.inc.php');//ceci va créer la variable $pdo
    include('fonctions.php');
    $insertion=array( $_POST['nom_cl'], $_POST['prenom_cl'],$_POST['naissance'],$_POST['lieu'],$_POST['adresse'],$_POST['cp'],$_POST['ville'],$_POST['tel_fixe'],$_POST['tel_por']);
    if(insereDsTable($pdo,$insertion)){
       $row=recupereDsTable($pdo, $_POST['nom_cl'], $_POST['prenom_cl']);
       echo '<pre>';
       print_r($row);
       echo '</pre>';
    }
    unset($pdo);

    Voilà, rien n'est testé... mais ça ressemblerait à ça en gros... et ça serait mieux rangé.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Vraiment un gros merci pour vos réponses, je me met au travail et je vous tiendrais au courant après les premiers tests.

    Merci à vous

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Bonjour,

    Mission accomplie ça fonctionne parfaitement, j'ai dans un premier temps utilisé la méthode proposée par Toufik83, ça fonctionne nickel, je vais voir pour passer à l'étape supérieur via la méthode de Dendrite, j'ai pas tout capté mais je vais quand mème essayer.

    En attendant, bon dimanche à tous.

  6. #6
    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
    Good job Cortoh !
    Et puisque tu es en forme, je me permets de te dire tout de suite un truc important (il y en a plein, je vais pas te les déballer tous d'un coup, tu partirais en courant. )

    Une bonne pratique essentielle dans ta base de données, c'est de mettre un identifiant UNIQUE à chaque ligne (et auto-incrémenté).

    Rien n'interdit dans la nature d'avoir 2 Jean Martin né le 12/01/1947 ? Et la base de données DOIT trouver un moyen de les distinguer dès le départ...

    Explications ici, paragraphe 2

    https://www.developpez.net/forums/bl.../pdo-soupe-lit

    Ce qui fait qu'ensuite, tu ne recherches des contacts que par l'id qui ne bouge jamais... jamais par un truc moins solide disons.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 74
    Par défaut
    Bonjour Dentrite,

    Tu met pile-poil le doigt sur difficulté qui est un vrai problème et que je n'ais pas encore réussi à régler, Exemple dans mon appli tu entres le nom et le prénom d'un de tes clients ex:Martin Pierre afin d'avoir avoir instantanement une liste succincte d'infos sur celui-ci âge, adresse, tel etc ... maintenant si ta base de données contient 3 Martin Pierre ça pose effectivement un problème, comme tu la remarqué mes scripts recherchent essentielllement via le nom et prénom, donc j'obtiendrais par défaut les données du premier Martin Pierre de ma BDD, je pourrais ajouter l'id du client dans les conditions de recherche mais comment l'utilisateur pourrait connaitre l'id de sont client afin de le distinguer des autres Martin Pierre puisque qu'il ne connait que son nom et prénom ?

Discussions similaires

  1. Renseignement script php pour gerer sous-domaine
    Par mecmec dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 04/06/2006, 15h01
  2. [Librairies] Ch script PHP pour reconnaissance de texte (OCR)
    Par yvan02 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/05/2006, 16h50
  3. Réponses: 4
    Dernier message: 30/12/2005, 11h00
  4. [Sécurité] Script PHP pour valider du HTML
    Par marcha dans le forum Langage
    Réponses: 2
    Dernier message: 06/11/2005, 14h57
  5. script php et plusieurs div
    Par bébé dans le forum Langage
    Réponses: 4
    Dernier message: 02/10/2005, 21h02

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