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 :

Optimisation du script


Sujet :

PHP & Base de données

Vue hybride

jean-paulridolfi Optimisation du script 19/03/2014, 08h10
karamaster Bonjour, un aperçu de ce que... 19/03/2014, 11h04
Dendrite Le concept d'auto-formation,... 19/03/2014, 12h33
jean-paulridolfi Bonsoir et désolé pour le... 20/03/2014, 19h00
Dendrite edit : Quels sont les... 20/03/2014, 19h20
jean-paulridolfi J'avais mis id en... 20/03/2014, 20h45
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Octobre 2013
    Messages : 31
    Par défaut Optimisation du script
    Bonjour,

    Je me suis lancé dans un script mais je dois reconnaître que je n'ai pas le niveau.
    Alors je serais reconnaissant à une bonne âme de me dire comment m'en sortir.
    J'ai déjà eu des réponse me renvoyant vers des exemples mais j'avoue que malgré mes efforts, je n'ai pas réussi à les adapter à mon travail.

    Vous allez rire.
    Je ne trouve pas de modèle à adapter à mon script tout simple qui consiste à insérer une fiche dans la base de données et ensuite l'afficher dans une page existante à partir d'une recherche par nom et une autre par compétence.
    J'insère et j'affiche sans problèmes.
    Par contre:
    - Je n'arrive pas à empêcher les doublons à l'insert.(je dois pouvoir enregistrer 2 personnes du même nom mais avec des prénoms différents.)
    - Dans l'affichage des résultats de la recherche, je n'affiche rien en cas de recherche sur un nom qui n'existe pas. j'obtiens une page blanche en cas d’échec ou l'affichage de la fiche en cas de succès.
    - Si par exemple, il n'y a pas d'adresse_3, je voudrais que l'affichage ne laisse pas un ligne vide mais passe à la suivant directement.

    J'ai fait des tas d'essais en fonction des recherches que j'ai pu faire mais je n'ai fait que m'embrouiller et finalement. Je n'ai plus le temps de m'astreindre à l'autoformation. (on verra ça plus tard)
    Si quelqu'un peut me débloquer sans m'envoyer vers des tutos avant que je ne sois obligé d'aller demander un devis sur codeur.com

    merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 240
    Par défaut
    Bonjour, un aperçu de ce que tu as déjà fait et de table nous aiderait .

    bah voilà ce que je te propose:
    1 - Je n'arrive pas à empêcher les doublons à l'insert.
    Je suppose que ta fiche comporte les propriétés de ta table dans le BDD. Tu n'a qu'a fait une vérification sur le nom et le prenom
    2- Dans l'affichage des résultats de la recherche, je n'affiche rien en cas de recherche sur un nom qui n'existe pas. j'obtiens une page blanche en cas d’échec ou l'affichage de la fiche en cas de succès.

    il te suffit de mettre des conditions avant l'affichage
    si la requête a échoué tu affiche vide, bon ça ne sert à rien il faut mettre un message pour informer le user
    si nom n'existe pas on exécute le script
    sinon on affiche les info.

  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
    Le concept d'auto-formation, quand on voit ce type de forum, il n'y a plus grand-chose d'auto ? si ? J'appellerais plutôt ça de la formation collaborative.
    Ceci dit, ça ne veut pas dire qu'on va coder à ta place, pour ça, effectivement, ton devis chez codeurs.com (ça existe au fait ?);
    Tu es débutant, tu ne sais pas par quel bout le prendre, mais tu veux apprendre et comprendre ? Tu es au bon endroit.
    Quant au fait d'être pressé, faut pas rêver, on ne peut pas apprendre et être pressés. "Salut, je connais 3 mots de suédois, vous pouvez m'aider à écrire une rédaction pour mardi en suédois ?" ben non...

    Evite de faire un nouveau fil à chaque question. Restons sur celui là.

    1) Oublie le code pour l'instant.

    Montre nous ta base de données, enfin sa structure, ses index tout ça quoi. Une base de données saine, c'est primordial avant de faire une ligne de code.
    On va donc bosser d'abord exclusivement sur ton phpmyadmin.

    Tu stockes des avocats apparemment ?
    Peux-tu nous montrer la structure de tes tables ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre averti
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Octobre 2013
    Messages : 31
    Par défaut
    Bonsoir et désolé

    pour le temps de réaction, j'étais pas là...
    Pour la syntaxe, J'ai essayé avec pdo mais j'ai systématiquement la même erreur (quel que soit le script) même quand je n'y modifie rien... un peu comme si ça venait d'ovh.
    Mais c'est autre chose...

    En préambule et pour répondre à vos interrogations légitimes, je ne suis pas pressé de rendre le script mais surtout ne pas me planter quand je vais donner la réponse au Bâtonnier. Si je dis que je peux faire, je dois faire et bien le faire.
    Sinon, je le compte dans le devis et je passe par https://emploi.developpez.com

    Ensuite, je prends le temps qu'il faut pour le fabriquer ou attendre qu'un pro me le fabrique. Or ça fait 10 jours que j'essaye des tas de scripts et que je commence à fatiguer. D'où mes larmes quand j'écris.

    La bdd
    Code sql : 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
    --
    -- Structure de la table `avocats`
    --
     
    CREATE TABLE IF NOT EXISTS `avocats` (
      `id` int(11) NOT NULL,
      `nom` char(30) NOT NULL,
      `prenom` char(30) NOT NULL,
      `competence` varchar(250) NOT NULL,
      `adresse_1` varchar(250) NOT NULL,
      `adresse_2` varchar(250) NOT NULL,
      `adresse_3` varchar(250) NOT NULL,
      `code` varchar(10) NOT NULL,
      `ville` varchar(70) NOT NULL,
      `tel` varchar(20) NOT NULL,
      `fax` varchar(20) NOT NULL,
      `email` varchar(70) NOT NULL,
      `web` varchar(250) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    --

    Le script d'insertion
    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
    24
    25
    26
    27
    28
    29
    <?php
    // connexion base
    $base = mysql_connect ('.....', 'xxxxx', 'wwwwww');
    mysql_select_db ('quel con je fais ', $base) ;
    ?>
     
    <?php
    //  variables  déclarées
    $nom = ($_GET['nom']);
    $prenom = ($_GET['prenom']);
    $competence = ($_GET['competence']) ;
    $adresse_1 = ($_GET['adresse_1']);
    $adresse_2 = ($_GET['adresse_2']);
    $adresse_3 = ($_GET['adresse_3']);
    $tel = ($_GET['tel']);
    $fax = ($_GET['fax']);
    $ville = ($_GET['ville']);
    $code = ($_GET['code']);
    $email = ($_GET['email']);
    $web = ($_GET['web']);
     
    // ok
     
    $req = "INSERT INTO avocats (id,nom,prenom,competence,adresse_1,adresse_2,adresse_3,tel,fax,code,ville,email,web) VALUES('','$nom','$prenom','$competence','$adresse_1','$adresse_2','$adresse_3','$teL','$fax','$code','$ville','$email','$web')";
     
    mysql_query($req) or die ('Erreur '.mysql_errno().' : ' . mysql_error()); 
     
     
    ?>


    Le script affichage
    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
     
    ///$sql =("SELECT * FROM avocats WHERE nom =    '". $_GET['nom']."'");<?php 
    $nom = $_GET['nom'];
    $sql =("SELECT * FROM avocats WHERE nom LIKE  '%$nom%' ");
     
     
    //  la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    // on va scanner tous les tuples un par un
    while ($data = mysql_fetch_array($req))
    {
    // affichage  résultats
    include ("affichage.php");
    }

  5. #5
    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
    edit :
    Quels sont les indexes sur ta table ? Notamment, comment définis-tu un doublon ?
    Le plus logique, ça serait de mettre une clé primaire sur ton id (peut-être avec un auto-increment), mais surtout, un index d'unicité sur 3 champs : nom + prenom + mail par exemple.
    En effet, c'est ce qui va définir ce qu'est un doublon pour toi. Attention, cette unicité impliquerait que chaque avocat ait un mail obligatoire. Il me semble que si tu te cantonnes à nom et prénom, tu auras un vrai problème un jour avec 2 Michel Dupond. L'idéal, c'est nom + prénom + date de naissance. Un truc que tout le monde a de façon unique.
    Ensuite, il te faut indexer (index simple) nom, ville, et tout ce qui peut servir dans une recherche... Ca, c'est pour les performances.

    Quand tu vas faire une insertion, il va maintenant détecter un doublon, et l'interdire; Mais si tu ne souhaites pas qu'il plante en cas de doublon, il te faudra ajouter ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //pour l'instant, je ne t'embête pas avec les risques d'injection sql, ou ta façon de te connecter, on verra ça après, même si c'est important
    $req = 'INSERT IGNORE INTO avocats (id,nom,prenom) VALUES("","'.$_POST['nom'].'","'.$_POST['prenom'].'"';


    Peut-être la suite est-elle hors-sujet, je n'ai pas bien compris comment tu alimentes ta base :


    Maintenant, il te faut un formulaire, pour saisir les données.
    Appelons la page form.html s'il n'y a pas de PHP dedans.
    Mets tout ça dans une architecture de page HTML.
    Faut que tu bosses un peu ça, on trouve ça partout sur le net...
    Voilà déjà le cadre minimum à un formulaire :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <form method="post" action="traitement.php">
    <!-- pas de méthode get, tu ne vas pas passer toutes ces choses par l'url !-->
    <!-- traitement.php, c'est le fichier qui va recevoir et traiter les données reçues-->
       NOM <input type="text" name="nom" />
       <!--Pour tous les trous, tu te débrouilles -->
     
     
       <input type="submit" name="valider" value="OK" /><br/>
    </form>
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Membre averti
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Octobre 2013
    Messages : 31
    Par défaut
    J'avais mis id en auto-increment mais j'ai dû faire la modif au moment ou je tâtonnais pour mettre un index sur nom/prenom. Comme ça couillait, j'ai supprimé le double index et j'ai oublié de rétablir l'auto-increment.

    Je veux pouvoir enregistrer des avocats ayant le même nom avec des prénoms différents (mari et femme avec les 3 gosses par exemple

    Je comprends la possibilité de doublonner avec 2 avocats de mêmes noms et prénoms mais rassure-toi, il doit y en avoir environ 110 sur la Corse-du Sud et je ne pense que cela soit possible.

    Pour alimenter la base, j'ai un formulaire, je n'ai pas voulu le mettre pour ne pas charger le post:
    le voici quand-même. Je le mets sous forme de liste pour pouvoir ensuite lui appliquer des css et ne pas m'emm.. avec les problèmes de flux
    Je ne fais plus de tableaux depuis longtemps non plus. Get c'était pour surveiller si tous les champs partaient correctement, je le vire après.

    (Je ne me suis pas encore occupé du contrôle avant insertion tant le sujet semble vaste: champs vide, adresse correctement formatée... )

    Code html : 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
    <form name="inscription" method="get" action="insertion.php">
        <ul>Entrez votre nom :
            <li><label>Nom:</label><input type="text" name="nom"/></li>
            <li><label>Prénom:</label><input type="text" name="prenom"/></li>
            <li><label>Compétence </label><input type="text" name="competence"/></li>
            <li><label>Adresse: </label><input type="text" name="adresse_1"/></li>
            <li><label>Adresse 2 </label><input type="text" name="adresse_2"/></li>
            <li><label>Adresse 3 </label><input type="text" name="adresse_3"/></li>
            <li><label>Tél: </label><input type="text" name="tel"/></li>
            <li><label>Fax: </label><input type="text" name="fax"/></li>
            <li><label>Code postal: </label><input type="text" name="code"/></li>
            <li><label>Ville: </label><input type="text" name="ville"/></li>
            <li><label>Email: </label><input type="text" name="email"/></li>
            <li><label>Site internet: </label><input type="text" name="web"/></li>
            <li><input type="submit" name="valider" value="OK"></li>
            <li><input type="reset" value="effacer"/></li>
    </form>

    le fichier afichage.php avec des essais pour les adresses pas trop concluants (à parfaire)

    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
    <?php
    $data['adresse_1'] = UCWORDS (strtolower ($data['adresse_1'])) ;
    $data['adresse_2'] = UCWORDS (strtolower($data['adresse_2'])) ;
    $data['adresse_3'] = UCWORDS (strtolower($data['adresse_3'])) ;
    ?>
    <link href="../style_affichage.css" rel="stylesheet" type="text/css" />
    <ul>
    <!-- Nom et Prenom -->
    <li class="nom">
    <?php echo UCWORDS($data['nom']); ?> &nbsp;<?php echo UCWORDS($data['prenom']); ?></li>
    <!-- Compétences -->
    	<li class="competence"><?php echo  UCWORDS($data['competence']); ?></li>
    <p class="adresse">Adresse:</p>
    <!-- adresses  --> 
    <li class="telFax">
    <?php  $adresses = ($data['adresse_1'] ."<br>". $data['adresse_2']);  echo UCWORDS($adresses); ?> </li>
    <!-- code - ville  --> 
    <li ><?php  $localisation = ($data['code'] ."  ". $data['ville']); echo UCWORDS($localisation); ?> </li>
    <li ><?php echo   $data['adresse_3']; ?> </li
    ><!-- Tel et Fax -->    
     <li class="telfax">Tél: &nbsp;<?php echo FormatTel($data['tel']); ?> &nbsp;- &nbsp;Fax: &nbsp;<?php echo FormatTel($data['fax']); ?></li>
    <!-- mail  --> 
    <li class="mail"><a href="mailto: <?php ($data['email']); ?>" class="liens"> <?php echo $data['email']; ?></a></li>
    <!-- web  --> 
    <li class="web"><a href="http://<?php echo ($data['web']); ?>"> <?php echo ($data['web']); ?></a></li>
    </ul>
    Alors c'est un peu normal qu'en partant de zéro, je commence à sortir les avirons pour aller plus loin. Sans compter les autres boulots en cours et les chartes graphiques etc... (je me régale quand même...)

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Supprime immédiatement ton nom d'utilisateur et ton mot de passe du code que tu viens de poster, et modifie-les immédiatement sur ton serveur. Il ne faut jamais poster ce genre de choses en public, surtout quand tu mets plus haut que ton site est sur OVH, et que tu donne ensuite le nom du serveur de BDD!

    Et si jamais tu utilises cette même combinaison de login et de mot de passe ailleurs, il faut changer les mots de passe immédiatement!!

    Si un modérateur pouvait éditer le code et supprimer les informations de la BDD, ce serait bien aussi.

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Optimiser vos scripts
    Par djibril dans le forum Langage
    Réponses: 33
    Dernier message: 11/06/2009, 16h10
  3. [Oracle] Optimisation de script
    Par johnkro dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 12/07/2006, 10h33
  4. [Débutant] Accélérer et optimiser ses scripts PHP
    Par Metallic-84s dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2006, 12h37
  5. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33

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