Bonjour.
Je n'y arrive pas.
Visiblement, je n'ai sélectionné aucune base et j'ai un soucis avec field que je ne comprends pas.
Pourtant ma base existe, voir post précédent.
Je ne sais plus où chercher.
Version imprimable
Bonjour.
Je n'y arrive pas.
Visiblement, je n'ai sélectionné aucune base et j'ai un soucis avec field que je ne comprends pas.
Pourtant ma base existe, voir post précédent.
Je ne sais plus où chercher.
Tu as fait ce que je t'ai dit dans le message précédent ?
Oui.
C'est vrai, je ne sais plus où j'en suis.
Le fichier ci-dessous :
renvoie :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 <?php $host = "localhost"; /* L'adresse du serveur */ $login = "root"; /* Votre nom d'utilisateur */ $password = ""; /* Votre mot de passe */ $base = "toulesport"; /* Le nom de la base */ $db = mysql_connect($host, $login, $password); echo '<table>'; $sql = "SHOW COLUMNS FROM " . mysql_real_escape_string($_POST['table']); $req = mysql_query($sql); echo $req; while ($row = mysql_fetch_assoc($req)) { echo '<tr>'; foreach ($row as $values) { echo '<th>' . $values['field'] . '</th>'; } echo '</tr>'; } $sql = "SELECT * FROM " . mysql_real_escape_string($_POST['table']); $req = mysql_query($sql); while ($row = mysql_fetch_assoc($req)) { echo '<tr>'; foreach ($row as $value) { echo '<td>' . htmlspecialchars($value) . '</td>'; } echo '</tr>'; } echo '</table>'; mysql_close(); /*affiche les erreurs*/ $req = mysql_query($sql); mysql_select_db($base,$db); echo mysql_error(); ?>
Citation:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V20.php on line 14
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V20.php on line 24
No database selected
Supprimer tes 3 dernières lignes.
Le mysql_select_db() que je mentionnais, c'est celui de ton fichier de connexion.
Nous revoilà avec ce booléen qui nous manque :
Citation:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V20.php on line 14
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V20.php on line 24
Bonjour.
je sais pas corriger l'erreur renvoyée et je ne comprends pourquoi une méthode qui me semblait la même que celle que j'ai employé pour créer la table ne permet plus de me connecter.
Tu as bien remis le mysql_select_db() dans ton code après le mysql_connect() ?
Non. Merci de ton aide. Une fois que ça fonctionnera, je poserai quelques questions sur ce que je n'ai pas compris. Cet exercice me permet de beaucoup avancer.
Avec :J'obtiens :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 <?php $host = "localhost"; /* L'adresse du serveur */ $login = "root"; /* Votre nom d'utilisateur */ $password = ""; /* Votre mot de passe */ $base = "toulesport"; /* Le nom de la base */ $db = mysql_connect($host, $login, $password); mysql_select_db($base,$db) ; echo '<table>'; $sql = "SHOW COLUMNS FROM " . mysql_real_escape_string($_POST['table']); $req = mysql_query($sql); echo $req; while ($row = mysql_fetch_assoc($req)) { echo '<tr>'; foreach ($row as $values) { echo '<th>' . $values['field'] . '</th>'; } echo '</tr>'; } $sql = "SELECT * FROM " . mysql_real_escape_string($_POST['table']); $req = mysql_query($sql); while ($row = mysql_fetch_assoc($req)) { echo '<tr>'; foreach ($row as $value) { echo '<td>' . htmlspecialchars($value) . '</td>'; } echo '</tr>'; } echo '</table>'; mysql_close(); ?>
Citation:
Resource id #4
Warning: Warning: Illegal string offset 'field' in E:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V20.php on line 17
Notice: Uninitialized string offset: 0 in E:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V20.php on line 17
i i N P a
D d N
i v Y
d d Y
d i Y
s v Y
d t Y
Une seule boucle suffit.
Code:
1
2
3
4
5 while ($row = mysql_fetch_assoc($req)) { echo '<tr>'; echo '<th>' . $row['field'] . '</th>'; echo '</tr>'; }
Merci, je comprends.
Mais pour mon field, j'ai toujours :et comme je ne comprends pas cette ligne, je ne troue pas.Citation:
Notice: Undefined index: field in E:\EasyPHP-DevServer-13.1VC9\data\localweb\includes\voir_table_V20.php on line 16
Essaie Field, dans phpmyadmin, il met une majuscule... mais je ne suis pas sûre que ce soit case sensitive...
Sinon, fais ça, pour voir ce que ton tableau a dans le ventre, et pour mieux comprendre ce que fait cette boucle.
Code:
1
2
3
4
5 while ($row = mysql_fetch_assoc($req)) { echo '<pre>'; print_r($row) ; echo '</pre>'; }
Merci super.
C'était bien un probleme de casse.
Je vais poser des questions sur le code.
Que représente field ?
Comment passer des commandes mysql_ au commandes mysqli_, la correspondance est elle linéaire, prennent elle le même nombre d'aguments ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php $host = "localhost"; /* L'adresse du serveur */ $login = "root"; /* Votre nom d'utilisateur */ $password = ""; /* Votre mot de passe */ $base = "toulesport"; /* Le nom de la base */ $db = mysql_connect($host, $login, $password); mysql_select_db($base,$db) ; echo '<table>'; $sql = "SHOW COLUMNS FROM " . mysql_real_escape_string($_POST['table']); $req = mysql_query($sql); while ($row = mysql_fetch_assoc($req)) { echo '<tr>'; echo '<th>' . $row['Field'] . '</th>'; echo '</tr>'; } echo '</table>'; mysql_close(); ?>
"Que représente 'Field' ?"
Si tu lances la commande 'show columns from matable' dans un phpmyadmin, tu obtiens ce genre de réponse (je te conseille de tester chez toi).
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
nom varchar(50) NO UNI NULL
type varchar(20) NO MUL NULL
dsn varchar(400) NO MUL NULL
login varchar(200) NO MUL NULL
mdp varchar(20) NO NULL
active tinyint(1) NO MUL 1
C'est une requête non pas à l'intérieur de matable, mais en amont, une meta requête, qui sollicite en réalité l'information schema (ta meta base).
Bref, quand tu vois ce tableau, tu vois mieux qu'il y a un champ Field, ainsi que Type, Null, Key etc...
Quelle que soit la table, il y a ces champs, qui décrivent la table.
Le champ "champ" field en anglais, liste les champs de ta table, etc.
Pour mysqli, prends l'exemple de cette page, style procédural. Tu n'as que peu de choses à changer...
http://php.net/manual/fr/mysqli.query.php
Le manuel PHP, si on l'utilise par l'exemple, est assez abordable.
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 <?php $link = mysqli_connect("localhost", "my_user", "my_password", "world"); /* Vérification de la connexion */ if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } /* "Create table" ne retournera aucun jeu de résultats */ if (mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) { printf("Table myCity créée avec succès.\n"); } /* Requête "Select" retourne un jeu de résultats */ if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) { printf("Select a retourné %d lignes.\n", mysqli_num_rows($result)); /* Libération du jeu de résultats */ mysqli_free_result($result); } /* Si nous avons à récupérer beaucoup de données, nous utilisons MYSQLI_USE_RESULT */ if ($result = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT)) { /* Notez que nous ne pouvons exécuter aucune fonction qui agit sur le serveur tant que le jeu de résultats n'est pas clos. Tous les appels retourneront un 'out of sync' */ if (!mysqli_query($link, "SET @a:='this will not work'")) { printf("Erreur : %s\n", mysqli_error($link)); } mysqli_free_result($result); } mysqli_close($link); ?>
Merci.
Bonne soirée.
Bonjour
je tiens à m'orienter envers des professionnels en PHP pour m'aider à résoudre un problème qui me freine dans l'avancement de mon projet bref.
je tiens à vous envoyer mon script afin de bien vous expliquez ma requête .
Alors mon erreur affiche en Numéro 23 qui s'intitule ainsi: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 <?php include("includes/header.php"); include("includes/config.php"); //connexion à la base de donnée BDD $mysqli = mysqli_connect($serveur, $user, $pass, $base, $port); $query = "SELECT * FROM fiche ORDER BY nom"; $result = mysqli_query($mysqli, $query); $num = mysqli_num_rows ($result); $mysqli->close(); ?> <center> <table border="0"> <tr> <td class="titre">LISTE DES FICHES</td> </tr> </table> <?php if ($num > 0 ) { $i=0; while ($i < $num) { if ($num > 0 ) { $i=0; while ($i < $num) { $nom = mysqli_result($result,$i,"nom"); $prenom = mysqli_result($result,$i,"prenom"); $total = mysqli_result($result,$i,"total"); $id = mysqli_result($result,$i,"id"); $id = mysqli_result($result,$i,"id") ?> <table border="0"class="table" class="texte"> <tr> <td><center><p class="texte">Mr, Mme <?php echo "$nom"; ?></center></td> </tr> </table> <?php echo "<p class=\"texte\"><b>N° :</b> $id<br>"; echo "<b>Nom :</b> $nom<br>"; echo "<b>Prenom :</b> $prenom<br>"; echo "<b>Tarif TTC :</b> $total<br>"; echo "<br><br>"; echo "</b></p>"; echo "<table border=\"0\" width=\"100%\">"; echo " <tr>"; echo " <td><p align=\"center\">"; echo " <a href=\"modif_fiche.php?id=$id\"><img border=\"0\" src=\"icones/edit.png\" width=\"48\" height=\"48\"><br>"; echo " Modifier Cette Fiche</a></td>"; echo " <td>"; echo " <td><p align=\"center\">"; echo " <a href=\"fiche.php?id=$id\"><img border=\"0\" src=\"icones/voir.png\" width=\"48\" height=\"48\"><br>"; echo " Voir La fiche</a></td>"; echo " <td>"; echo " <p align=\"center\">"; echo " <a href=\"suppr_fiche.php?id=$id\"><img border=\"0\" src=\"icones/suppr.png\" width=\"48\" height=\"48\"><br>"; echo " Supprimer Cette Fiche</a></td>"; echo " </tr>"; echo "</table>"; ++$i; } } else { echo "La base de donnée est vide"; } include("includes/footer.php"); ?>
Citation:
Fatal error: Call to undefined function mysqli_result() in C:\wamp\www\maintenance\fiche_list.php on line 23
Bonjour.
@Dendrite
C'est un peu magique, pour moi, que mysql_fetch_assoc($req) ne renvoie que les métadonnées de la première colonne puis de la deuxième si on refait la même requête. Il y a une boucle qui se fait quelque part.
Comment faire pour avoir en une requête sans boucle, un tableau avec les métadonnées de toutes les colonnes de la table ?
Comment faire pour avoir uniquement les métadonnées de la troisième colonne ?
Merci de m'aider à comprendre.
Quoi ?
Tu veux bien tester cette requête dans ton phpmyadmin ?
Il n'est pas question de boucle ici.
Code:SHOW COLUMS FROM MA_TABLE;
http://dev.mysql.com/doc/refman/5.0/...formation.htmlCitation:
Comment faire pour avoir en une requête sans boucle, un tableau avec les métadonnées de toutes les colonnes de la table ?
Code:SHOW TABLES;
Là pour le coup, il faut qu'en php, ta première requête boucle sur la seconde.Code:SHOW COLUMS FROM CHAQUE_TABLE;
Pas compris.Citation:
Comment faire pour avoir uniquement les métadonnées de la troisième colonne ?
Lis bien la doc du lien.... tout est là.
Merci pour tout.
a bientôt.