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 :

Nettoyage de code PHP ?


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut Nettoyage de code PHP ?
    Salutations,

    je viens de pondre avec mes MAIGRES connaissances PHP le code suivant qui semble faire ce que je souhaite :

    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
    <?php
    	// Serveur
    	include $_SERVER["DOCUMENT_ROOT"]."/moteurs/app-data.php";
     
    	// Connexion SQL
    	include $_SERVER["DOCUMENT_ROOT"]."/moteurs/cnx-moteur.php";
     
    	// Check benevoles
    	$req = $connexion->query ("SELECT * FROM $table4 WHERE Actif = 'Oui' AND debarras <> '' ORDER BY Date ASC");
     
    	// Nombre de benevoles
    	$aboadh = $req->num_rows;
    ?>
     
    <style type="text/css">
    	/* 380 par 391 max */
    	#parent {
    	   position: relative;
    	}
    </style>
     
    <div id="parent"><img src="https://wda-fr.org/pict/France_WDA.png">
     
    	<?php
            while ($donnees = $req->fetch_assoc())
                {
    				$coordonnees = $donnees['maps'];
    				if ($coordonnees != "") {
    					$axe = explode(",", $coordonnees);
    					// Debugg
    					echo "<br />Ordonnee : " . $axe[0] . "<br />"; // Oordonnee
    					echo "Abscisse : " . $axe[1] . "<br />"; // Abscisse
    					?>
     
    					<img style="position: absolute; top: <?php echo $axe[0]; // Ordonnee ?>; left: <?php echo $axe[1]; // Abscisse ?>; z-index: 10;" class="superpose" src="https://wda-fr.org/pict/checked.png" title="Coordonnees d'un benevole." alt="Coordonnees d'un benevole." />
     
    					<?php
    				}
    			}
        ?>
     
    </div>
    Par contre, je ne sais pas trop si mon code est assez propre.
    Surtout niveau routine d'extraction des variables PHP en CSS.

    Vos avis ?
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    -- Y'a des problèmes d'indentation => Utilise les espaces plutôt que la tabulation, et jamais les deux en même temps
    -- include qui échoue donne une notification, or si tu n'arrive pas à inclure un de tes fichiers il vaut mieux souvent avoir une erreur fatale => Utilise plutôt require
    -- $_SERVER["DOCUMENT_ROOT"] peut être remplacée par __DIR__
    -- __DIR__ est inutile si le script n'est inclus nul part, que c'est une page "de base"
    -- Tu peux utiliser la syntaxe NOW/HEREDOC pour rédiger tes requêtes SQL => Le code est ainsi plus clair https://www.php.net/manual/fr/langua...syntax.heredoc
    -- Souvent il vaut mieux éviter le "SELECT *" => Précise tes champs, ça permet d'avoir un code plus lisible et évite de sélectionner des champs inutiles (et ainsi réduire le trafic MySQL => PHP et l'emprunte mémoire)
    -- Tu n'affiches pas les enregistrements sans coordonnées => Tu peux les filtrer dans ton SQL
    -- Attention aux variables venant d'autres fichiers ayant des noms un peu trop génériques ($connexion, $table4), ça peut être bugogène => Tu peux les encapsuler dans une fonction ou un tableau ($db dans mon exemple) et ainsi réduire la voilure
    -- Du PHP/HTML mélangés dur à lire => Passe par la syntaxe alternative https://www.php.net/manual/fr/contro...ive-syntax.php
    -- Des "<?php echo" que tu peux abréger en "<?="
    -- Des coordonnées stockées en bdd dans un même champ, ce qui te force à faire du traitement PHP pour dissocier tes axes => Il faudrait plutôt stocker latitude et longitude (par ex.) dans 2 champs différents de ta BdD
    -- Tu peux répartir des balises HTML sur plusieurs lignes pour en faciliter la lecture

    Voilà pour le principal

    Je formulerais ton script ainsi :

    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
    <?php
     
    require __DIR__ . "/moteurs/app-data.php";
    require __DIR__ . "/moteurs/cnx-moteur.php";
     
    $sql = <<<SQL
        SELECT  axe_x, axe_y
        FROM {$db['table4']} 
        WHERE TRUE 
            AND axe_x <> '' AND axe_y <> '' 
            AND Actif = 'Oui' 
            AND debarras <> '' 
        ORDER BY Date ASC
        SQL;
     
    $req = $db['connexion']->query ($sql);
     
    ?>
    <div id="parent" style="position: relative">
        <img src="https://wda-fr.org/pict/France_WDA.png">
     
        <?php while ($donnees = $req->fetch_assoc()): ?>
     
            Ordonnée : <?= $donnees['axe_y'] ?><br>
            Abscisse : <?= $donnees['axe_x'] ?><br>
     
            <img
                style="position: absolute; top: <?= $donnees['axe_y'] ?>; left: <?= $donnees['axe_x'] ?>; z-index: 10"
                class="superpose"
                src="https://wda-fr.org/pict/checked.png"
                title="Coordonnees d'un benevole."
                alt="Coordonnees d'un benevole."
            >
     
        <?php endwhile ?>
     
    </div>
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    Salutations,

    merci de ce retour, je commence à m'atteler au nettoyage :

    - __DIR__ : Ne fonctionne pas, il me mets une erreur.

    Mon code actuel :

    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
    <?php
    	// Serveur
    	require $_SERVER["DOCUMENT_ROOT"]."/moteurs/app-data.php";
     
    	// Connexion SQL
    	require $_SERVER["DOCUMENT_ROOT"]."/moteurs/cnx-moteur.php";
     
    	// Check benevoles
    	$req = $connexion->query ("SELECT * FROM $table4 WHERE Actif = 'Oui' AND debarras <> '' ORDER BY Date ASC");
     
    	// Nombre de benevoles
    	$aboadh = $req->num_rows;
    ?>
     
    <div id="parent" style="position: relative;">
    	<img src="https://wda-fr.org/pict/France_WDA.png" />
     
    	<br />
     
    	<?php while ($donnees = $req->fetch_assoc()): ?>
     
    	<?php
    		$nom = utf8_encode($donnees['Prenom']) . " " . utf8_encode($donnees['Nom']);
    		$adresse = utf8_encode($donnees['Adresse']);
    		$coordonnees = $donnees['maps'];
    		if ($coordonnees != "") {
    			$axe = explode(",", $coordonnees);
    			?>
     
    			<img
            		style="position: absolute; top: <?php echo $axe[0] . "px"; // Ordonnee ?>; left: <?php echo $axe[1] . "px"; // Abscisse ?>; z-index: 10;" src="https://wda-fr.org/pict/checked.png"
            		title="Coordonnees du benevole <?php echo $nom; ?>."
            		alt="Coordonnees d'un benevole WDA." />
     
    			<?php
    			// Debugg
    			echo "<br />B&eacute;n&eacute;vole : " . $nom . "<br />"; // Nom
    			echo "Adresse : " . $adresse . "<br />"; // Adresse
    			echo "Ordonnee : " . $axe[0] . "<br />"; // Oordonnee
    			echo "Abscisse : " . $axe[1] . "<br />"; // Abscisse
    		}
    	?>
     
    	<?php endwhile ?>
     
    </div>
    Question subsidiaire : Si je veux mettre un quadrillage SUR l'image en plus, une idée ?
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    - __DIR__ : Ne fonctionne pas, il me mets une erreur.
    Quelle erreur ? Quelle version de PHP utilises-tu ? De mémoire __DIR__ est dispo depuis PHP 5.4

    Question subsidiaire : Si je veux mettre un quadrillage SUR l'image en plus, une idée ?
    Ajouter la grille en dur avec un logiciel comme Paint
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    Quelle erreur ? Quelle version de PHP utilises-tu ? De mémoire __DIR__ est dispo depuis PHP 5.4
    Nous sommes en 7.4.21, mais c'est surtout que cela me change l'arborscence (je suis obligé de descendre d'un dossier en plus). Peu importe. je remplace par __DIR__.

    Sinon, autre pb, je cherche maintenant à intégrer cette page dans des includes d'autres pages, qui elles mêmes ont leur propre code et balises CSS.
    Du coup, par ex., les ou déconnent total.

    Je bidouille à nouveau le code, voici mon travail actuel :

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
     
    <?php
    	// Serveur
    	require __DIR__ . "/../moteurs/app-data.php";
     
    	// Connexion SQL
    	require __DIR__ . "/../moteurs/cnx-moteur.php";
     
    	// Check benevoles
    	$req = $connexion->query ("SELECT * FROM $table4 WHERE Actif = 'Oui' AND debarras <> '' ORDER BY Date ASC");
     
    	// Nombre de benevoles
    	$aboadh = $req->num_rows;
     
    	// Anetennes officielles WDA
    	$coord_Ant_Paris = explode(",", "62,194");
    	$coord_Ant_PACA = explode(",", "285,295");
    	$coord_Ant_Normandie = explode(",", "39,152");
    	$coord_Ant_Vendee = explode(",", "146,78");
    	$coord_Ant_Charente = explode(",", "198,130");
    	$coord_Ant_Belgique = explode(",", "0,257");
    	$coord_Ant_Bretagne = explode(",", "95,85");
    ?>
     
    <style type="text/css">
    	#France img {
    		position: relative;
    		text-align: center;
    	}
     
    	#Benevole img {
    		position: absolute;
    		text-align: center;
    	}
     
    	#Antenne img {
    		position: absolute;
    		text-align: center;
    	}
    </style>
     
    <div id="France">
    	<img src="France_WDA-clr.png" />
     
        <div id="Benevole">
    		<?php while ($donnees = $req->fetch_assoc()):
     
                $nom = utf8_encode($donnees['Prenom']) . " " . utf8_encode($donnees['Nom']);
                $adresse = utf8_encode($donnees['Adresse']);
                $coordonnees = $donnees['maps'];
                if ($coordonnees != "") {
                    $axe = explode(",", $coordonnees);
                    ?>
     
                    <img
                    style="
                    	top: <?php echo $axe[0] . "px"; // Ordonnee ?>;
    					left: <?php echo $axe[1] . "px"; // Abscisse ?>;
    				"
                    src="https://wda-fr.org/pict/wda-circle.png"
                    title="Coordonnees du benevole <?php echo $nom; ?>."
                    alt="Coordonnees d'un benevole." />
     
                    <?php
                    // Debugg
                    echo "<br />B&eacute;n&eacute;vole : " . $nom . "<br />"; // Nom
                    echo "Adresse : " . $adresse . "<br />"; // Adresse
                    echo "Ordonnee : " . $axe[0] . "<br />"; // Oordonnee
                    echo "Abscisse : " . $axe[1] . "<br />"; // Abscisse
                }
                endwhile
            ?>
    	</div>
     
    	<br />
     
    	<div id="Antenne">
            <img
                style="
                    top: <?php echo $coord_Ant_Paris[0] . "px"; // Ordonnee ?>;
                    left: <?php echo $coord_Ant_Paris[1] . "px"; // Abscisse ?>;
                "
                src="Local-point.png"
                title="Coordonnees d'une antenne'."
                alt="Coordonnees d'une antenne." />
            <img
                style="
                    top: <?php echo $coord_Ant_PACA[0] . "px"; // Ordonnee ?>;
                    left: <?php echo $coord_Ant_PACA[1] . "px"; // Abscisse ?>;
                "
                src="Local-point.png"
                title="Coordonnees d'une antenne'."
                alt="Coordonnees d'une antenne." />
            <img
                style="
                    top: <?php echo $coord_Ant_Normandie[0] . "px"; // Ordonnee ?>;
                    left: <?php echo $coord_Ant_Normandie[1] . "px"; // Abscisse ?>;
                "
                src="Local-point.png"
                title="Coordonnees d'une antenne'."
                alt="Coordonnees d'une antenne." />
            <img
                style="
                    top: <?php echo $coord_Ant_Vendee[0] . "px"; // Ordonnee ?>;
                    left: <?php echo $coord_Ant_Vendee[1] . "px"; // Abscisse ?>;
                "
                src="Local-point.png"
                title="Coordonnees d'une antenne'."
                alt="Coordonnees d'une antenne." />
            <img
                style="
                    top: <?php echo $coord_Ant_Charente[0] . "px"; // Ordonnee ?>;
                    left: <?php echo $coord_Ant_Charente[1] . "px"; // Abscisse ?>;
                "
                src="Local-point.png"
                title="Coordonnees d'une antenne'."
                alt="Coordonnees d'une antenne." />
            <img
                style="
                    top: <?php echo $coord_Ant_Belgique[0] . "px"; // Ordonnee ?>;
                    left: <?php echo $coord_Ant_Belgique[1] . "px"; // Abscisse ?>;
                "
                src="Local-point.png"
                title="Coordonnees d'une antenne'."
                alt="Coordonnees d'une antenne." />
            <img
                style="
                    top: <?php echo $coord_Ant_Bretagne[0] . "px"; // Ordonnee ?>;
                    left: <?php echo $coord_Ant_Bretagne[1] . "px"; // Abscisse ?>;
                "
                src="Local-point.png"
                title="Coordonnees d'une antenne'."
                alt="Coordonnees d'une antenne." />
    	</div>
    </div>
    Any idea ?

    Question subsidiaire : Une idée de comment automatiser le contenu du DIV Antenne ?

    Merci de l'aide
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Nous sommes en 7.4.21, mais c'est surtout que cela me change l'arborscence
    Donc l'erreur ne vient pas de __DIR__ mais du chemin vers le fichier à inclure.
    L'arborescence ne change pas (c'est tout l'intérêt de __DIR__), il suffit de te référer au script depuis lequel tu fais le include.

    je cherche maintenant à intégrer cette page dans des includes d'autres pages, qui elles mêmes ont leur propre code et balises CSS
    Il faut que tu fasses en sorte que le code HTML/CSS résultant soit cohérent.
    Je n'ai pas de solution miracle. Affiche la source de la page générée et corrige en conséquence.

    Question subsidiaire : Une idée de comment automatiser le contenu du DIV Antenne ?
    Mets tes valeurs dans un tableau, et boucle dessus.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    Mon véritable pb est la succession dans les autres include de "Position : Relative" ou "sticky", etc ...

    La j'ai la map qui passe PAR DESSUS le menu lorsque je simule avec les includes.

    Comme ces includes font appels à des pages générées à la volée, il peut y avoir beaucoup d'autres "position : relative" ou "absolute".

    Comment faire ?
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Il faut que le HTML final obtenu soit cohérent. As-tu vérifié ceci ?

    Je ne sais pas comment tu t'organises avec tes include, je ne peux donc pas t'en dire plus
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    Voici la page de test actuelle.

    Voici ce que cela donne dans un include type de test.

    A terme, elle doit remplacer cette carte.
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    C'est un problème de HTML/CSS, pas de PHP

    Il faut que tu encapsules tes éléments positionnés en absolu (tes <img>) dans un conteneur positionné d'une manière ou d'un autre (position: relative par ex.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="content" style="position: relative">...</div>
    Ainsi tes <img> seront positionnés relativement à #content et non à la page.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. Transcrire code PHP dans une DLL
    Par LEK dans le forum C++
    Réponses: 16
    Dernier message: 26/09/2005, 14h17
  2. Mettre un code php dans une variable...
    Par kedare dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2005, 12h55
  3. [Conception] Code php dans une base de donnée
    Par krfa1 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/09/2005, 10h58
  4. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23

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