Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/02/2006, 18h49   #1
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 131
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 131
Points : 25
Points : 25
Par défaut 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.
cescu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2006, 21h08   #2
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
salut
tu ne pas faire ceci dans une classe (ouvrir et fermer les balises php quand tu veut)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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>
      <?   
   }
jeff_! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2006, 21h53   #3
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 131
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 131
Points : 25
Points : 25
merci de m'avoir répondu,

mais j'ai tout viré et j'ai le même message d'erreur.
cescu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 09h02   #4
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 131
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 131
Points : 25
Points : 25
j'ai trouvé au matin après une bonne nuit de sommeil.
La solution d'un problème semble la plupart du temps tellement évidente...
une fois sous les yeux. Il suffit de mettre mysql_free_result($this->result); en commentaire. Tout ça parce-que j'ai utilisé un code existant pour en faire un autre.

A+
cescu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 09h03   #5
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Pas de quoi ^^.
Cliques sur "résolu" alors ?
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h37.


 
 
 
 
Partenaires

Hébergement Web