bonsoir à la communauté PHP,
voilà je travail sur une classe qui utilise des commandes MySql et j'ai un petit problème à l'utilisation.
Voici d'abord mon code pour qui voudra bien m'aider.
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 <? class MonSql { private $bdd; /* Base de données */ private $host; /* Hote (localhost en principe) */ private $user; /* Utilisateur */ private $pass; /* Mot de passe */ private $nb; private $arguments; private $resultat; private $resultats; private $monChamp; private $maTable; public function __construct() { $this->nb = func_num_args(); $this->arguments = func_get_args(); $this->bdd = $this->arguments[0]; $this->host = $this->arguments[1]; $this->user = $this->arguments[2]; $this->pass = $this->arguments[3]; } public function select($champDeTable, $table) { $this->monChamp = $champDeTable; $this->maTable = $table; // Ici on éclate $nombdreDeChampsDeTables en autant de champs que cette variable en contient $nombdreDeChampsDeTables = explode(",", $champDeTable); /* Connexion et sélection de la base */ $link = mysql_connect($this->host, $this->user, $this->pass) or die("Echec de la connection... Appelez l'administrateur de la base..."); mysql_select_db($this->bdd) or die("Echec à la selection de la base... Appelez l'administrateur de la base..."); $query = "SELECT " . $champDeTable . " FROM " . $table; $this->resultat = mysql_query($query) or die("la requete a échoué ... "); $result = $this->resultat; // On conserve au cas où ... // // On teste ici si $nombdreDeChampsDeTables contient un seul champ et pas * // en fait on fait un select sur un seul champ // if ((sizeof($nombdreDeChampsDeTables) == 1) && ($nombdreDeChampsDeTables[0] != "*")) { /* Recupération de la liste dans une variable */ $i = 0; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { $i = $i + 1; foreach ($line as $col_value) { $this->resultats[$i-1] = $col_value; } } } // Sinon on fait un select multi critère et on va chercher automatiquement le nom // des champs et l'information qui est dans le champ // else { if ($result = mysql_query($query)) { $i = 0; $this->resultat = $result; echo " !!!!!!!!!!!!!!!!!!!!"; while ($line = mysql_fetch_assoc($result)) { $limit = mysql_num_fields($result); $i++; for ($j = 0; $j < $limit; $j++) { $name = mysql_field_name($result, $j); $this->resultats[$i-1] = $this->resultats[$i-1] . $line[$name]; } } } } /* Libération des résultats */ mysql_free_result($result); /* Fermeture de la connexion */ mysql_close($link); } public function donneResultat() { return $this->resultats; } public function affiche() { ?> <table ALIGN="center" border="1"cellspacing="2" cellpadding="2"> <? while ($line = mysql_fetch_assoc($this->resultat)) { echo "<tr>"; for ($j = 1; $j <= mysql_field_name($this->resultat); $j++) { $k++; $name = mysql_field_name($this->resultat, $j); echo "<td align=LEFT>"; echo $line[$name]; echo "</td>"; } echo "</tr>"; } ?> </table> <? } } ?>
Ensuite son utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $requete1 = new MonSql("AnciensDiplomes","localhost","root",""); $requete1->select("*","etudiant"); $requete1->affiche();
Enfin l message d'erreur :
Si quelqu'un peut me donner son avis. En fait après avoir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 !!!!!!!!!!!!!!!!!!!! Warning: mysql_fetch_assoc(): 7 is not a valid MySQL result resource in c:\wamp\www\Z Test6\MonSql.php on line 89
fait $requete1->select("*","etudiant") je m'attends à pouvoir utiliser
correctement mysql_field_name($this->resultat).
Merci de vos lumières.
Partager