Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Installation
Installation Forum d'entraide sur les problèmes liés à l'installation de 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 23/03/2006, 15h04   #1
Invité de passage
 
Inscription : mars 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 7
Points : 3
Points : 3
Par défaut [résolu][Fonction]Mysql_fetch_array

Bonjour !

J'ai récemment installé Wamp pour créer un intranet car je dispose de plusieur ordi, reliés par une livebox, en wifi, ethernet ou usb.

Je souhaiterai créer un carnet d'adresses très simple. Pour tester si tout fonctionne bien, voila le script que j'ai écrit. Tout en ayant bien entendu, créé la base et la table dans phpMyadmin.

Dans la base carnet_adressses, il y a une table nommée contacts qui elle meme contient 9 champs.

ID (primaire, auto-increment), nom, prenom, (en VARCHAR 50)...

Il y a deux enregistrements dans cette table.

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
 
 
<?php 
 
$connexion = mysql_connect('localhost', 'root', '12206pompier') OR die ("impossible de se connecter au serveur");
 
mysql_select_db('carnet_adressses', $connexion) OR die ("impossible de se connecter a la base");
 
$nom1="SELECT nom, prenom FROM `contacts`" OR die("erreur");
 
$nom2="SELECT * FROM `contacts` " OR die("erreur");
 
$nom1_ok = mysql_query($nom1, $connexion) OR die("erreur");
 
$nom2_ok = mysql_query($nom2, $connexion) OR die("erreur");
 
$nb_valeur = mysql_num_rows($nom1_ok);
 
$nb_valeur2 = mysql_num_rows($nom2_ok);
 
$nb_valeur3 = $nb_valeur + $nb_valeur2;
 
echo $nb_valeur3;
 
while($tableau=mysql_fetch_row($nom1_ok))
{
$nom=$tableau['nom'];
$prenom=$tableau['prenom'];
} 
 
?>
La page de résultat affiche le chiffre 4. Qui est bien le nombre total d'enregistrement additionné deux fois. Par contre, je n'ai absolument rien qu'en a l'affichage des données contenues dans la page. Et aucune erreure remonté par php.

De plus, j'ai installé un cms sur une autre base, il va tres bien. Je voulais faire ce site par moi meme. J'ai pourtant réalisé plusieurs sites en php. Dont un pour les études, il était hébergé chez free. Est-ce que le fait d'être en local produit cela ?

Aucune des fonction die ne renvoie d'erreur, avec le test faute d'orthographe dans la ligne, une erreur est présente. Ca veut bien dire que la connexion est bien faite avec Mysql.

Quand a l'affichage, j'ai essayé 25 méthodes, echo, print, printf, écrire autrement les valeurs, mais toujours rien, je bloque.

Merci pour vos éclairsissements.



@ ++
aiFTai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 15h58   #2
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
C'est tout simplement parceque tu essai d'acceder aux données de la base via un fetch_row qui te renvoie un tableau sur base d'index numériques ( 1ere colone 0, etc...)

Si tu veux passer par les noms des colones, alors il faut utiliser mysql_fetch_assoc()


Ou mieux encore, tu peux utiliser mysql_fetch_array qui te renvoie un tableau avec des index numériques et noms de colones. Un genre de combinaison de row et assoc quoi


pierre
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 17h13   #3
Invité de passage
 
Inscription : mars 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 7
Points : 3
Points : 3
Merci de ton aide. C'est vrai que c'etait bete de ma part.

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
<?php 
 
$connexion = mysql_connect('localhost', 'root', '12206pompier') OR die ("impossible de se connecter au serveur");
 
mysql_select_db('carnet_adressses', $connexion) OR die ("impossible de se connecter a la base");
 
$nom1="SELECT nom, prenom FROM `contacts`" OR die("erreur");
 
$nom2="SELECT * FROM `contacts` " OR die("erreur");
 
$nom1_ok = mysql_query($nom1, $connexion) OR die("erreur");
 
$nom2_ok = mysql_query($nom2, $connexion) OR die("erreur");
 
$nb_valeur = mysql_num_rows($nom1_ok);
 
$nb_valeur2 = mysql_num_rows($nom2_ok);
 
$nb_valeur3 = $nb_valeur + $nb_valeur2;
 
echo $nb_valeur3;
 
while($tableau=mysql_fetch_array($nom1_ok))
{
print($tableau['nom']);
print($tableau['prenom']);
}
 
?>
Ca fonctionne correctement :o) Merci. Et désolé de la bétise ^^.

@++
aiFTai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 17h27   #4
Membre actif
 
Avatar de snipes
 
Inscription : septembre 2004
Messages : 497
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 497
Points : 195
Points : 195
Et le ptit plus qui va nous montrer que c'est résolue
rajoute le tag
snipes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 17h27   #5
Invité de passage
 
Inscription : mars 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 7
Points : 3
Points : 3
Je viens de modifier un peu le code, pas moyen de mettre ça dans un tableau qui fait plus tableau... ?

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
<?php 
 
$connexion = mysql_connect('localhost', 'root', '12206pompier') OR die ("impossible de se connecter au serveur");
 
mysql_select_db('carnet_adressses', $connexion) OR die ("impossible de se connecter a la base");
 
$nom1="SELECT nom, prenom FROM `contacts`" OR die("erreur");
 
$nom1_ok = mysql_query($nom1, $connexion) OR die("erreur");
 
$nb_value = mysql_num_rows($nom1_ok);
 
echo $nb_value;
 
?>
 
<p align="center" class="Style1">Carnet d'adresses</p>
<p>&nbsp;</p>
<p align="center">A | B | C |  D | E | F |  G | H | I |  J</p>
<p align="center">Adresses les plus vues. </p>
 
<?
 
while($tableau=mysql_fetch_array($nom1_ok))
{
 
?>
 
<table width="659" border="1" align="center">
  <tr>
    <td width="208"><?php print($tableau['nom']); ?></td>
    <td width="233"><?php print($tableau['prenom']) ;?></td>
  </tr>
</table>
 
<?
 
} 
 
?>
La variable $nb_value indique bien le nombre d'enregistrements, 2.

Par contre, ça je n'ai rien pour les noms et prenom, il laise un tableau d'une ligne et deux colonnes, vide.

aiFTai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 17h29   #6
Invité de passage
 
Inscription : mars 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 7
Points : 3
Points : 3
Citation:
Envoyé par snipes
Et le ptit plus qui va nous montrer que c'est résolue
rajoute le tag
oups ^^

Heu... c'est tjs le meme sujet, j'vais pas refaire un topic la si ?

Pour le résolu, ça va bientot le faire je pense, c'est du meme hack-habit ^^

aiFTai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 17h44   #7
Membre du Club
 
Mohamed AMINE OSMAN
Inscription : août 2002
Messages : 131
Détails du profil
Informations personnelles :
Nom : Mohamed AMINE OSMAN
Âge : 45
Localisation : Tunisie

Informations forums :
Inscription : août 2002
Messages : 131
Points : 48
Points : 48
Envoyer un message via Yahoo à osman.amine Envoyer un message via Skype™ à osman.amine
quel est la difference entre mysql_fetch_array et mysql_fetch_assoc
osman.amine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 18h01   #8
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Le tableau renvoyé par mysql_fetch_array contient en plus les champs sous forme d'index numérique comme je l'ai expliqué un peu plus haut.

Plus d'infos dans la doc mysql_fetch_array

Pierre
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 18h12   #9
Membre du Club
 
Mohamed AMINE OSMAN
Inscription : août 2002
Messages : 131
Détails du profil
Informations personnelles :
Nom : Mohamed AMINE OSMAN
Âge : 45
Localisation : Tunisie

Informations forums :
Inscription : août 2002
Messages : 131
Points : 48
Points : 48
Envoyer un message via Yahoo à osman.amine Envoyer un message via Skype™ à osman.amine
est ce que assoc est plus rapide que array ou non parce que dans mes codes j'utilise array
osman.amine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 18h13   #10
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
ce n'est pas pour rien que je donne l'adresse de la doc :


Citation:
Performance : Une chose importante à noter est que l'utilisation de mysql_fetch_array() n'est pas significativement plus lent que l'utilisation de mysql_fetch_row(), alors qu'il fournit des valeurs significatives ajoutées.
Edit : Désolé du ton mais c'est la fin de la journée
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2006, 21h21   #11
Invité de passage
 
Inscription : mars 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 7
Points : 3
Points : 3
Re,

J'ai regardé la doc, ça pas été tout a fait ce que j'imaginais, en fait ça m'a pas beaucoup aidé.

Voila ce que j'ai fait pour que ça fonctionne :

Code :
1
2
3
4
5
6
7
8
9
10
11
while($tableau=mysql_fetch_array($nom1_ok))
 
{
 
echo "<table width=\"659\" border=\"0\" align=\"center\">
  <tr>
    <td width=\"208\">"; echo $tableau['nom'] ; echo "</td>
    <td width=\"233\">"; echo $tableau['prenom'] ; echo "</td>
  </tr>
</table>";
}
On est obligé d'écrire le html grace a la fonction php echo ?
Car si dans la boucle while je ferme ?> que je met mon html et ou a l'interieur je rajoute <? echo ... ?> ça ne fonctionne pas.

Je sais pas si j'ai été très clair, mais encore merci pour vos éclairssissements justement.

aiFTai 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 21h01.


 
 
 
 
Partenaires

Hébergement Web