Pb d'utilisation de MySql
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:
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:
1 2 3 4
|
$requete1 = new MonSql("AnciensDiplomes","localhost","root","");
$requete1->select("*","etudiant");
$requete1->affiche(); |
Enfin l message d'erreur :
Code:
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 |
Si quelqu'un peut me donner son avis. En fait après avoir
fait $requete1->select("*","etudiant") je m'attends à pouvoir utiliser
correctement mysql_field_name($this->resultat).
Merci de vos lumières.