Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > Vos Fonctions ou astuces > Lecture du sujet

Vos Fonctions ou astuces

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  88  89  90  91  92  93  94  ...  97  98  99  100  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  88  89  90  91  92  93  94  ...  97  98  99  100  Suivante
Hors ligne Psykose # Posté le 25/07/2008 à 19:12:44
Carambaaa(r) !
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Je suis actuellement en train de l'améliorer ^^
Je la refais presque entièrement étant donné que je vais en faire une classe ;)
Édité le 25/07/2008 à 19:13:24 par Psykose

Mes tutos préférés :
Apprenez le Javascript - Dominos animables (blender) - Apprenez Maya
Mes tutos :
Créer une tête Cartoon avec Blender

Psykose's JukeboX : I - II - III - IV - V - Now extended ! - VI - VII - VIII
 
Hors ligne Quadehar # Posté le 25/07/2008 à 19:31:58
Avatar
Groupe : Membres
Une classe ? Est-ce vraiment utile pour simplement générer un mot ? Ôô

Libre Pensée - Blog regroupant des histoires et nouvelles rédigées par mes soins.
 
Hors ligne Psykose # Posté le 25/07/2008 à 19:34:13
Carambaaa(r) !
Avatar
Groupe : Membres
Oui parce que je compte faire différents types de mots; dans différents canevas de langues (germanique, latin, anglo-saxon et nordique) , et puis je n'ai jamais fait de POO à part avec des classes prédéfinies ce sera donc aussi un entrainement ^^

Mes tutos préférés :
Apprenez le Javascript - Dominos animables (blender) - Apprenez Maya
Mes tutos :
Créer une tête Cartoon avec Blender

Psykose's JukeboX : I - II - III - IV - V - Now extended ! - VI - VII - VIII
 
Hors ligne slimbaby # Posté le 28/07/2008 à 09:28:06
Avatar
Groupe : Membres
voila une fonction qui permet de recuperer les 5 dernieres images (ou autres mais moi je l'ai fait pour les images) d'un repertoire. Je ne sais pas si cela a deja été proposé ou si y'a mieux ^^
Moi je l'ai fait et ça marche super :)

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$folder = 'images/thumbs/'; // repertoire
function scandir_by_mtime($folder) {
  $dircontent = scandir($folder, 0);
  $arr = array();
  foreach($dircontent as $filename) {
    if ($filename != '.' && $filename != '..') {
      if (filemtime($folder.$filename) === false) return false;
      //$dat = date("YmdHis", filemtime($folder.$filename));
      
      $arr[filemtime($folder.$filename)] = $filename;
    }
  }
  if (!ksort($arr)) return false;
  else return $arr;
  
}
$files = array_slice(array_reverse(scandir_by_mtime($folder), true), 0, 5);

foreach($files as $filename) {
   
    echo '<li><a href="images/resized/'.$filename.'" title=""><img src="images/thumbs/'.$filename.'" title="'.$filename.'" alt="'.$filename.'" width="82px" height="65px" /></a></li>';
}
?>


voir >> www.teamksk.fr
Édité le 28/07/2008 à 09:30:17 par slimbaby
 
Hors ligne lemirandais # Posté le 28/07/2008 à 09:36:14
Ubuntu, Debian, Tiger USER
Avatar
Groupe : Membres
sa peut être un peu utile. En gros il peut simplement être modifier pour par exemple voir les x derniers fichiers modifiés (utile par exemple si on crée via php des fichiers sur un ftp.)
 
Hors ligne robocop # Posté le 28/07/2008 à 12:59:12
Avatar
Groupe : Membres
Hors ligne JeromeJ # Posté le 28/07/2008 à 15:39:03
Avatar
Groupe : Membres
Normal vu que le PHP est fait en C :-°








Secret (cliquez pour afficher)
Ce que je maitrise actuellement: XHTML, CSS, PHP, Action Script 2 et 3, JavaScript, SQL, Python, et un peu de C, C++ et d'erl
 
Hors ligne kwaencore # Posté le 28/07/2008 à 16:06:11
Coin Coin !
Avatar
Groupe : Membres
Ordonner un tableau à 2 dimensions
en fonction d'un élément de la 2ème dimension.

Code : PHP
 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
<?php
//fonction trier_tableau, permet de réordonner des tableaux à deux dimensions en fonction de la clé donnée en paramètre
function  trier_tableau($table, $key){
	//variables
	$param = array (); //tableau des paramètres que l'on va trier
	$cle = array(); //tableau des clés retournées en param
	$tableau_trie = array(); //resultat
	
	//echo "Pas Trié<pre>".print_r($table,true)."</pre>";
	
	//déterminons les paramètres à trier
	for ($i = 0; $i < count($table); $i++) {
		$param[$i] = $table[$i][$key];
	}
	
	//trions les paramètres
	asort($param);
		
	
	//echo "Param<pre>".print_r($param,true)."</pre>";
	
	//on s'assure que le pointeur est bien revenu au début
	reset($param);
	
	//On refait un tableau pour déterminer le nouvel ordre des champs triés,
	for ($i = 0; $i < count($param); $i++) {
		$cle[] = key($param); // on récupère la clef de param
		next($param); // on passe à l'élément suivant
	}
	
	//echo "Cle<pre>".print_r($cle,true)."</pre>";
	
	// on refait le tableau en fonction de l'ordre accordé:
	for ($i = 0; $i < count($cle); $i++) {
		$tableau_trie[] = $table[$cle[$i]];		
	}
	
	//echo "Trié<pre>".print_r($tableau_trie,true)."</pre>";
	
	return $tableau_trie;
}

?>


Note: Le code peut être facilement optimisé pour bypasser la boucle de remplissage de l'array key[], ligne 25 à 29. (Et s'affranchir ainsi de cette variable). J'ai ci-dessus opté pour une version compréhensible par tous.

Par contre, en version raccourcie cela nous donne:
Code : PHP
 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
<?php
//fonction trier_tableau, permet de réordonner des tableaux à deux dimensions en fonction de la clé donnée en paramètre
function  trier_tableau($table, $key){
	//variables
	$param = array (); //tableau des paramètres que l'on va trier
	$tableau_trie = array(); //resultat à retourner
	
	//déterminons les paramètres à trier
	for ($i = 0; $i < count($table); $i++) {
		$param[$i] = $table[$i][$key];
	}
	
	//trions les paramètres
	asort($param);
	
	//on s'assure que le pointeur est bien revenu au début
	reset($param);
	
	// on refait le tableau en fonction de l'ordre accordé:
	for ($i = 0; $i < count($param); $i++) {
		$tableau_trie[] = $table[key($param)];
		next($param);
	}
	
	return $tableau_trie;
}

?>


Test:
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?php
$test0 = array ("lettre" => "neuf", "num" => 9);
$test1 = array ("lettre" => "un", "num" => 1);
$test2 = array ("lettre" => "deux", "num" => 2);
$test3 = array ("lettre" => "cinq", "num" => 5);
$test4 = array ("lettre" => "quatre", "num" => 4);
$test5 = array ("lettre" => "trois", "num" => 3);
$test6 = array ("lettre" => "six", "num" => 6);
$test7 = array ("lettre" => "huit", "num" => 8);
$test8 = array ("lettre" => "sept", "num" => 7);
$test9 = array ("lettre" => "zéro"  , "num" => 0);
$test10 = array ("lettre" => "Re-trois", "num" => 3);

$table = array ($test0 , $test1 , $test2 , $test3 , $test4 , $test5 , $test6 , $test7 , $test8 , $test9, $test10);
$key = "num";

echo "Pas Trié<pre>".print_r($table,true)."</pre>";
echo "Trié<pre>".print_r(trier_tableau($table, $key),true)."</pre>";
?>


Retour du test:
Code : Autre
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
136
137
138
139
140
141
142
143
Pas Trié

Array
(
    [0] => Array
        (
            [lettre] => neuf
            [num] => 9
        )

    [1] => Array
        (
            [lettre] => un
            [num] => 1
        )

    [2] => Array
        (
            [lettre] => deux
            [num] => 2
        )

    [3] => Array
        (
            [lettre] => cinq
            [num] => 5
        )

    [4] => Array
        (
            [lettre] => quatre
            [num] => 4
        )

    [5] => Array
        (
            [lettre] => trois
            [num] => 3
        )

    [6] => Array
        (
            [lettre] => six
            [num] => 6
        )

    [7] => Array
        (
            [lettre] => huit
            [num] => 8
        )

    [8] => Array
        (
            [lettre] => sept
            [num] => 7
        )

    [9] => Array
        (
            [lettre] => zéro
            [num] => 0
        )

    [10] => Array
        (
            [lettre] => Re-trois
            [num] => 3
        )

)

Trié

Array
(
    [0] => Array
        (
            [lettre] => zéro
            [num] => 0
        )

    [1] => Array
        (
            [lettre] => un
            [num] => 1
        )

    [2] => Array
        (
            [lettre] => deux
            [num] => 2
        )

    [3] => Array
        (
            [lettre] => Re-trois
            [num] => 3
        )

    [4] => Array
        (
            [lettre] => trois
            [num] => 3
        )

    [5] => Array
        (
            [lettre] => quatre
            [num] => 4
        )

    [6] => Array
        (
            [lettre] => cinq
            [num] => 5
        )

    [7] => Array
        (
            [lettre] => six
            [num] => 6
        )

    [8] => Array
        (
            [lettre] => sept
            [num] => 7
        )

    [9] => Array
        (
            [lettre] => huit
            [num] => 8
        )

    [10] => Array
        (
            [lettre] => neuf
            [num] => 9
        )

)
Édité le 28/07/2008 à 16:46:49 par kwaencore

Birdy, birdy in the sky
Why did U sh*t in my eye
But don't worry I won't cry
I'm just glad the cows don't fly
 
Hors ligne Cortexd # Posté le 28/07/2008 à 17:02:26
Maouunnwww !
Avatar
Groupe : Membres
tu sais que la fonction usort() existe ?
Code : PHP
1
2
3
4
5
6
7
<?php
function sort_by_num(array $a, array $b)
{
    return strcmp($a['num'], $b['num']);
}

usort($table, 'sort_by_num');
Édité le 28/07/2008 à 17:02:59 par Cortexd

Comme l'or, il est caresse et volupté...
Image utilisateur Arrêt sur image


 
Hors ligne kwaencore # Posté le 28/07/2008 à 18:26:49
Coin Coin !
Avatar
Groupe : Membres
Citation : Cortexd
tu sais que la fonction usort() existe ?
Code : PHP
1
2
3
4
5
6
7
<?php
function sort_by_num(array $a, array $b)
{
    return strcmp($a['num'], $b['num']);
}

usort($table, 'sort_by_num');

Ah ouais... Quand même :)

Birdy, birdy in the sky
Why did U sh*t in my eye
But don't worry I won't cry
I'm just glad the cows don't fly
 
Hors ligne nax # Posté le 30/07/2008 à 10:39:47
Avatar
Groupe : Membres
J'aurai peut-être du le mettre en première page, mais lisez la doc avant de poster !
On ne va pas réinventer la roue tout le temps.
 
Hors ligne christouphe # Posté le 30/07/2008 à 10:42:41
Avatar
Groupe : Membres
désolé de flooder, mais alors là MDR !!! :D :D

Des fois ça m'arrive quand j'ai un truc à faire vitef' mais bon j'y reviens après.

Sur ce, bonne journée. :-° ^^

Une fois que vous éliminez l'impossible, peu importe si ce qui reste est improbable, ce devrait être la vérité. :p
"Tracker addict ;) :-° ", La POO en PHP, il n'y a que ça de vrai :D :pirate:
J'en ai marre des codeurs qui C/C sans lire ou relire et viennent pleurer pour rien ici !!!
 
Hors ligne Jeremie78 # Posté le 30/07/2008 à 18:37:50
Powered by GNU/Linux
Groupe : Membres
Citation : nax
J'aurai peut-être du le mettre en première page, mais lisez la doc avant de poster !
On ne va pas réinventer la roue tout le temps.

Encore faut'il savoir que la roue existe :p .

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne nax # Posté le 31/07/2008 à 11:47:42
Avatar
Groupe : Membres
Citation : nax
Lisez la doc avant de poster !
:-°
 
Hors ligne anonyme # Posté le 31/07/2008 à 11:53:41
Groupe :
Petit truc qui ne semble pas être dans la doc : quand on copie une variable, le contenu n'est pas copié tant qu'une des variables n'est pas modifiée.
Code : PHP
 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
<?php

echo memory_get_usage();

$a = 'llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll';

echo memory_get_usage();

$b = $a;

echo memory_get_usage();

$b[0] = 'a';
// $a[0] = 'a';

echo memory_get_usage();

?>

Sortie :
Code : Console
53416
55440
55440
57344

Ca vaut également pour les paramètres des fonctions et sans doute les paramètres des méthodes de classe.
Merci à winzou qui a trouvé ça.
Hors ligne Jeremie78 # Posté le 31/07/2008 à 14:07:07
Powered by GNU/Linux
Groupe : Membres
Et ce que ça viendrait pas d'outils d'opitimisations du genre xcache et zend optimizer ?

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne anonyme # Posté le 31/07/2008 à 19:14:37
Groupe :
Je n'ai rien installé de plus que Wamp5 (php 5.2.5).
Hors ligne Jeremie78 # Posté le 31/07/2008 à 23:16:04
Powered by GNU/Linux
Groupe : Membres
Dans le PHPinfo, c'est marqué presque tout en haut, après le texte :

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Si tu as un optimiseur de code, il sera mentionné juste après :)
Perso, moi j'ai installé XCache, et ça m'a divisé le temps d'exécution par 2 :p

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne anonyme # Posté le 31/07/2008 à 23:24:26
Groupe :
Point d'optimiseur en vue.
Hors ligne Jeremie78 # Posté le 31/07/2008 à 23:49:59
Powered by GNU/Linux
Groupe : Membres
Intéressant alors :)

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Cortexd # Posté le 01/08/2008 à 00:18:12
Maouunnwww !
Avatar
Groupe : Membres
en tout cas ça ne fonctionne pas chez moi, les quatre valeurs sont différentes avec php 5.2.6 sans option

Comme l'or, il est caresse et volupté...
Image utilisateur Arrêt sur image


 
Hors ligne Gaspoute # Posté le 04/08/2008 à 12:21:00
Avatar
Groupe : Membres
Citation : winzou
Fonction sdzv3 qui retourne un array avec les pages à afficher (ex : array(1,2,3,4,'...',45,46,47,48))
$page est la page courante
$nb_page le nombre de pages totales
$nb le nombre de page à retourner à droite et à gauche (uhm, $nb = 4 dans mon exemple juste au dessus)
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?php
function get_list_page($page, $nb_page, $nb = 4)
        {
$list_page = array();
                for ($i=1;$i <= $nb_page;$i++)
                {
                        if (($i < $nb) OR ($i > $nb_page - $nb) OR (($i < $page + $nb) AND ($i > $page -$nb)))
                        $list_page[] = $i;
                        else
                        {
                                if ($i >= $nb AND $i <= $page - $nb)
                                $i = $page - $nb;
                                elseif ($i >= $page + $nb AND $i <= $nb_page - $nb)
                                $i = $nb_page - $nb;
                        $list_page[] = '...';
                        }
                }
        return $list_page;
        }

J'ai une question concernant cette fonction de winzou. Je ne comprends cette partie de la fonction:
Code : PHP
1
2
3
4
5
6
7
<?php
if ($i >= $nb AND $i <= $page - $nb)
        $i = $page - $nb;
elseif ($i >= $page + $nb AND $i <= $nb_page)
        $i = $nb_page - $nb;
$list_page[] = '...';
?>

Merci!
Édité le 04/08/2008 à 12:24:39 par Gaspoute
Hors ligne Barbary # Posté le 04/08/2008 à 12:58:41

Avatar
Groupe : Membres
La fonction de winzou permet de racourcir une suite de nombres en remplaçant certains nombres par: ...
Et cette partie de la fonction fait en sorte que ça le fasse.

Image utilisateur
 
Connecté Savageman # Posté le 05/08/2008 à 04:36:43
Insa : If inside
Avatar
Groupe : Membres
Cette partie sert à faire "sauter" le i.
Par exemple, dans ce topic, on a actuellement 91 pages. La liste des pages affichée est 1 2 3 ... 88 89 90 et 91.
Cette partie sert à faire passer $i de 3 à 88 en rajoutant ... au milieu. C'est de l'optimisation pour ne pas faire 91 tours de boucles, mais seulement 8. ;)
 
Hors ligne etaty # Posté le 05/08/2008 à 11:53:06
Avatar
Groupe : Membres
Citation : `Haku
Petit truc qui ne semble pas être dans la doc : quand on copie une variable, le contenu n'est pas copié tant qu'une des variables n'est pas modifiée.
Code : PHP
 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
<?php

echo memory_get_usage();

$a = 'llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll';

echo memory_get_usage();

$b = $a;

echo memory_get_usage();

$b[0] = 'a';
// $a[0] = 'a';

echo memory_get_usage();

?>

Sortie :
Code : Console
53416
55440
55440
57344

Ca vaut également pour les paramètres des fonctions et sans doute les paramètres des méthodes de classe.
Merci à winzou qui a trouvé ça.


Si c'est dans la doc :p
sauf qui faut connaitre :lol: (merci au super livre : Best practices PHP5 (en Fr))
lien : http://fr.php.net/internals2.ze1.zendapi
faut rechercher dans la page la function : "_zvalue_value"
Et lire les explications qu'il y a autour
Le point important est le compteur de référence (refcount) qui va permettre de gérer les données
Édité le 05/08/2008 à 12:01:33 par etaty
Hors ligne Yaëld # Posté le 07/08/2008 à 13:32:43
Groupe : Membres
Une fonction qui permet de simplifier l'utilisation d'une BDD MySQL

Fonction


Code : PHP
 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
<?php
function request($request,$db='localhost',$db_username='root',$db_password=''){
	$k=0;
	if($request=='connecter'){
		mysql_connect($db, $db_username, $db_password) or die('Connection à la base de donnée impossible');
		return true;
	}
	if($request=='deconnecter'){
		mysql_close();
		return true;
	}
	mysql_select_db($db) or die('<b>Impossible de sélectionner la base </b>"'.$db.'"<b> <br/>Erreur : </b>'.mysql_error());;
	$sql_data = mysql_query($request) or die('<b>Erreur de requête<br/>Erreur : </b>'.mysql_error());
	$temps_fin = microtime_float();
	$GLOBALS['sql_time'] += $temps_fin - $temps_debut;
	$GLOBALS['nb_request']++;
	if(substr($request,0,6)=='SELECT'||substr($request,0,4)=='SHOW'){
		while ($data = mysql_fetch_array($sql_data) ){
			$save_keys = array_keys($data);
			$i = count($data);
			$nb_to_delete = $i/2;
			reset($data);
			while($i){
				next($data);
				if($i==count($data)){ 
					$curent_element=current($data);
				}else{
					$curent_element = next($data);
				}
				$values[$i] = $curent_element;
				$i--;
			}
			$j = $nb_to_delete;
			while($j>0){
				unset($values[$j]);
				$j--;
			}
			
			$i = count($save_keys);
			reset($save_keys);
			while($i!=0){
				next($save_keys);
				if($i==count($save_keys)){ 
					$curent_element=current($save_keys);
				}else{
					$curent_element = next($save_keys);
				}
				$keys[$i] = $curent_element;
				$i--;
			}
			$j = $nb_to_delete;
			while($j>0){
				unset($keys[$j]);
				$j--;
			}
			$combine = array_combine($keys,$values);
			$return[$k]=$combine;
			$k++;
		}
		if(isset($return)){ return $return;}
	}
}
?>

Retour


un tableau à deux dimensions comme ceci:
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
Array
(
    [0] => Array
        (
            [id] => 1
            [nom] => Titi
            [code_postal] => 75000 
        )
    [1] => Array
        (
            [id] => 2
            [nom] => Toto
            [code_postal] => 77000
        )
    [2] => Array
        (
            [id] => 3
            [nom] => Tata
            [code_postal] => 71000
        )
)
?>

Utilisation


Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?php
request('connecter','adresse_bdd','login','mot_de_passe');

// Ensuite vous faites vos requêtes comme ceci

$reponses = request('SELECT * FROM `clients`','client');

// Puis pour les traiter:
foreach($reponses a $reponse){
 echo 'Le code postal de '.$reponse['nom'].' est '.$code_postal
}

// Ou plus rapide si vous savez que vous n'aller avoir qu'une réponse (ici le nom du client avec l'ID 1)
$reponse = request('SELECT `nom` FROM `clients` WHERE `ID` = 1 ','client');
$reponse = $reponse[0]['nom']
?>

Star Wars Jedi Alliance : le nouveau site sur star wars par des Zéros -> http://www.swja.fr
Gestionnaire de fenêtres web en cours de réalisation : http://www.swja.fr/forum/admin_bureau.php
Mon site le mien a moi :p : http://nath.infos.st
Ancien pseudo : -=Y@h0o=- Webmaster
 
Hors ligne JeromeJ # Posté le 07/08/2008 à 14:16:05
Avatar
Groupe : Membres
@Yaëld: Personnellement je trouve ça "mochachier" ^^ et je préfère de loin l'utilisation de Mysqli + POO. Maintenant ce n'est que mon petit jugement en tant que membre pas assez compétent pour vraiment juger toujours correctement :lol: je laisse faire les autres.

Puis regrouper tout en un n'est pas forcément mieux. Déjà pour tes requêtes connecter, déconnecter, ... il serait mieux d'utiliser des constantes ;)
Édité le 07/08/2008 à 14:18:56 par JeromeJ








Secret (cliquez pour afficher)
Ce que je maitrise actuellement: XHTML, CSS, PHP, Action Script 2 et 3, JavaScript, SQL, Python, et un peu de C, C++ et d'erl
 
Connecté Tracker # Posté le 07/08/2008 à 16:26:33
Avatar
Groupe : Membres
+1
En plus tu gères pas les unions (parenthèses au début de l'ordre) ni les procédures stockées qui peuvent retourner des résultats, et surement pleins d'autres trucs qui me viennent pas à l'esprit.
Pas de préparation des ordres... pas de connexions multiples...

Bref aucun intérêt.


le passage marrant:
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
// [...]
if($request=='connecter'){
  mysql_connect($db, $db_username, $db_password) or die('Connection à la base de donnée impossible');
  return true;
}
if($request=='deconnecter'){
  mysql_close();
  return true;
}
// [...]

Mets toi à la POO ...

Tracker.
Édité le 07/08/2008 à 16:31:07 par Tracker

Un peu de lecture: PHP // MySQL // JavaScript // w3schools // SQL
 
Hors ligne Yaëld # Posté le 07/08/2008 à 17:23:08
Groupe : Membres
Vous avez oublié le mot clé les gars : SIMPLIFIER

perso, j'utilise aussi MySQLi mais pour des débutants, une fonction qui gère MySQL en une fonction c'est pas mal je trouve.
Après, OK c'est "mocheachier" t'a raison :p .

Star Wars Jedi Alliance : le nouveau site sur star wars par des Zéros -> http://www.swja.fr
Gestionnaire de fenêtres web en cours de réalisation : http://www.swja.fr/forum/admin_bureau.php
Mon site le mien a moi :p : http://nath.infos.st
Ancien pseudo : -=Y@h0o=- Webmaster
 
Hors ligne JeromeJ # Posté le 07/08/2008 à 19:06:40
Avatar
Groupe : Membres
Bon j'vais pas trop critiquer car le travail de M@téo est respectable (c'est d'ailleurs grâce à lui que j'ai débuter) mais faire "simple" d'apparence parce qu'on est newbie c'est pas le top du tout. Je cite les travaux de M@téo qui ne donne rarement (je trouve) les meilleurs solutions dans ces tutos (j'entend par là les plus optimales) (et il est pas vraiment complet, mais on parle pas de ça là ^^).

Ton code est parfait pour les noobs oui, mais c'est prendre une très mauvaise habitudes. Autant apprendre sur de bonnes bases.
Édité le 07/08/2008 à 19:08:04 par JeromeJ








Secret (cliquez pour afficher)
Ce que je maitrise actuellement: XHTML, CSS, PHP, Action Script 2 et 3, JavaScript, SQL, Python, et un peu de C, C++ et d'erl
 
Hors ligne Jeremie78 # Posté le 07/08/2008 à 19:55:38
Powered by GNU/Linux
Groupe : Membres
Citation : Yaëld
Vous avez oublié le mot clé les gars : SIMPLIFIER

perso, j'utilise aussi MySQLi mais pour des débutants, une fonction qui gère MySQL en une fonction c'est pas mal je trouve.
Après, OK c'est "mocheachier" t'a raison :p .


J'utilise PDO :) (en standard avec PHP 5 :p)
Et ma classe de gérant les SGBDR sert juste à gérer la connexion et les erreurs (avec PDO, ce sont des execptions, il faut donc les "catcher" !).

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 

Retour au forum "PHP" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 280 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.1143s (0.0946s)