Pour avoir vérifié tes accolades, elles ont l'air cohérente, pour le coup je vois pas forcément le problème.
Tu es sûre de toi? Vide ton cache, relance ton navigateur.
Version imprimable
Pour avoir vérifié tes accolades, elles ont l'air cohérente, pour le coup je vois pas forcément le problème.
Tu es sûre de toi? Vide ton cache, relance ton navigateur.
il ne m'affiche plus de message d'erreur mais lorsque je saisi un nom et prénom ne se trouvant pas dans la base de données ça fonctionne ce n'est pas normale.
Est ce que ma requête est valide ?
Voici les codes que j'utilise afin de faire une vérification à travers la BD:
identification facture il faut renseigner le champ nom et prenom. et vérifier qu'il se trouve bien dans la BD et on arrivera sur la page web suivante
Cette page nous permet d'arriver sur cette page la :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 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>habilitation</title> <style> h1 { color :skyblue; font-size :3em; font-family :Arial; } </style> </head> <body> <h1><center><br> habilitation facture </br></center></h1> <legend> demande d'habilitation : </legend> <fieldset> <form action="facture.php" method="post"> <p> <label for="nom"> nom : </label> <input type="text" name="Nom"/><br> <label for="prénom"> prénom : </label> <input type="text" name="Prénom"/><br> </p> <div class="button"> <button type="submit"> Valider </button> <button type="submit"> Annuler </button> </div> </fieldset> </form> </form> <img src ='carmi.png'> </body> </html>
facture.php
Quelque soit le nom que je saississe il me renvoi toujours vers la page d'erreur. Or dans ma table users j'ai: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 <html> <head> <meta charset="utf-8" /> <style> h1 { color:skyblue; font-size:3em; font-family:Arial; } </style> </head> <body> <?php if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; if(isset($_POST['prenom'])) $prenom=$_POST['prenom']; else $prenom=""; // On vérifie si les champs sont vides // connexion à la base require_once 'login1.php'; $conn = new mysqli($hn, $un, $pw, $db); if ($conn->connect_error) die($conn->connect_error); $query = "SET NAMES utf8"; // Force l'encodage en utf-8 $result = $conn->query($query); if (!$result) die($conn->error); $query = "select nom, prenom from users where nom = '$nom' AND prenom = '$prenom' "; $result = $conn->query($query); if (!$result) die ("Échec d'accès à la base de données : " . $conn->error); $conn->close(); if (isset($_GET['message'])) { echo($_GET['message']); } else // Sinon, on affiche un message d'erreur { $message = "Identifiants incorrects."; header( 'Location: http://localhost/html/identification_facture.php?message=' . $message); echo "vous n'êtes pas autorisé à accéder aux archives des fichiers factures."; } ?> <h1><center> Facture </center></h1> <p> Les champs sont les suivants : </p> <p> Nom du client, n°client, n°facture </p> <legend>Mots clés :</legend> <fieldset> <form method="POST" action="liste_facture.php"> <center> <input type="text" name="nomclient" size="30" value="nomclient" maxlength="50"><br> <br> <input type="text" name="numclient" size="30" value="numclient" maxlength="6"><br> <br> <input type="text" name="numfacture" size="30" value="numfacture" maxlength="6"><p> le champs fichierfacture peut rester vide <p> <input type="text" name="fichierfacture" size="30" value="fichierfacture" maxlength="50"><br> <br> <input type="submit" value="Rechercher" name="Rechercher"> </center> </form> </fieldset> <img src ='carmi.png'> <br> </body> </html>
toto pour le nom et titi pour le prenom mais ca ne fonctionne pas
Dans l'idée c'est à peu près ça, mais ce n'est pas comme ça qu'on traite les résultats que la base de donnée te retourne.
Regarde du côté de http://php.net/manual/fr/mysqli-result.fetch-array.php
Je pensais comme j'ai déja réalisé des requetes dans le programme qui suit celui de facture qui me permettait de lister des nom de fichiers avec des mots que je saisissais et bien évidement qui se trouvait dans la BD
C'est quoi la différence entre style orienté objet et style procédurial ?
Déjà traités de millions de fois... http://www.developpez.net/forums/d70...cedural-objet/
Bonjour,
tu as vraiment de grosses lacunes sur les bases de développement et en conception.
Je te conseille TRES VIVEMENT de LIRE et FAIRE LES EXERCICES de ce TUTO :
- PHP : Le tutoriel pour grands débutants pressés
(sauf la partie base de données : l'extension mysql_ est obsolète)
Je ne comprend pas le lien entre style objet, style procédurial et mon probleme
Quand on te donne des liens, c'est pour que tu cliques dessus.
Tu as encore besoin d'APPRENDRE.
Tu ne peux pas le sucer de ton pouce...
N.B. Pour info : TU utilises déjà le style (la syntaxe) Orienté Objet.
(le tout est de ne pas mélanger les deux syntaxes)
A aucun moment il a été cité ces différentes méthodes de développement. Qui plus est, applique les conseils de Jreaux du post au-dessus, tu as des lacunes qui empêchent la compréhension de problèmes plus complexes (à ton niveau j'entends)
Mais mon resultat sera une nouvelle page eb je ne veux pas qu'il m'affiche mon nom et prenom à l'ecran aussi
Tu troll là? :?
Comment ça ?
On te donne des conseils, tu t'obstines à répondre à côté...
je suis dans l'urgence c'est pour ça. Mais je viens de regarder le tuto que vous m'avez conseillé
Je sais pas combien de temps ça fait qu'on est sur ton post, drôle d'urgence :aie:
Mais ce que tu comprends pas, c'est qu'avec tes lacunes actuelles, on parle pas vraiment le même langage. Tu fais des erreurs de bases qui t'empêche tout simplement d'aller plus loin, c'est pour ça que je te conseil vivement de prendre une journée ou deux (voir une semaine) pour travailler les différents liens qui t'ont été fournis ici afin de consolider tes bases...
Oui c'est ce que je suis en train de faire en ce moment même
Voici ce que j'ai utilisé:
Voici les différents message d'erreur :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 <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <?php if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; if(isset($_POST['prenom'])) $prenom=$_POST['prenom']; else $prenom=""; // On vérifie si les champs sont vides // connexion à la base require_once 'login1.php'; $conn = new mysqli($hn, $un, $pw, $db); if ($conn->connect_error) die($conn->connect_error); $query = "SET NAMES utf8"; // Force l'encodage en utf-8 $result = $conn->query($query); if (!$result) die($conn->error); //$query = "select nom, prenom from users where nom = '$nom' AND prenom = '$prenom' "; //$result = $conn->query($query); // if (!$result) die ("Échec d'accès à la base de données : " . $conn->error); $result = mysqli_query("select nom, prenom from login where nom = '$nom' and prenom = '$prenom'"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("nom :","prenom : %s", $row["nom"], $row["prenom"]); } $result->close(); $conn->close(); if (isset($_GET['message'])) { echo($_GET['message']); } else // Sinon, on affiche un message d'erreur { $message = "Identifiants incorrects."; header( 'Location: http://localhost/html/identification_facture.php?message=' . $message); echo "vous n'êtes pas autorisé à accéder aux archives des fichiers factures."; } ?> <h1><center> Facture </center></h1> <p> Les champs sont les suivants : </p> <p> Nom du client, n°client, n°facture </p> <legend>Mots clés :</legend> <fieldset> <form method="POST" action="liste_facture.php"> <center> <input type="text" name="nomclient" size="30" value="nomclient" maxlength="50"><br> <br> <input type="text" name="numclient" size="30" value="numclient" maxlength="6"><br> <br> <input type="text" name="numfacture" size="30" value="numfacture" maxlength="6"><p> le champs fichierfacture peut rester vide <p> <input type="text" name="fichierfacture" size="30" value="fichierfacture" maxlength="50"><br> <br> <input type="submit" value="Rechercher" name="Rechercher"> </center> </form> </fieldset> <img src ='carmi.png'> <br> </body> </html>
Citation:
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\html\facture.php on line 35
Citation:
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\wamp\www\html\facture.php on line 37
Je ne comprend pas trop les warnings pouvez vous m'aider merci d'avanceCitation:
Fatal error: Call to a member function close() on a non-object in C:\wamp\www\html\facture.php on line 40
1) mysqli_query attends deux paramètres, tu en donnes qu'un seul.
2) Ton retour est donc nul avec ta première erreur. Sauf que lorsque ça retourne des résultat, mysqli_query retourne un "resource". Donc lié à la première.
3) Tu peux close uniquement un objet "resource", mais comme encore une fois, ta requête ne renvoie rien puisqu'elle ne fonctionne pas...
CQFD
Comment ça ma requete ne renvoie rien ?
Il lui manque un paramètre, donc elle fonctionne pas.
Utilise Firebug, tu auras de meilleures erreurs.
Etant donné que je n'ai que des warnings j'arrive à accéder à la prochaine page web
D'accord, et bien bonne continuation.
Mais il faut que je retire ces messages tout de mêmes car ils s'affichent sur ma page web
C'est tout de même mieux que les erreurs qui s'affichent sur ta page web, dans ce sens là, elles sont meilleures :aie:
d'accord d'où l'intérêt d'utilisé firebug pour retirer les erreurs restantes, sauf si je trouve les bon parametres à rajouter n'est ce pas ?
Citation:
Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\html\facture.php on line 35
- Voir : mysqli_query()
mysql_fetch_array() : NON !Citation:
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\wamp\www\html\facture.php on line 37
mysqli_fetch_array()
- Voir : mysqli_fetch_array()
Il faut TOUJOURS aller consulter la doc (Manuel PHP) : :recherch: :google:
Maintenant je n'ai plus qu'un seul message d'erreur toujours celui ci :
Warning: mysqli_query() expects at least 2 parameters, 1 given
voici le code :
Le message d'ereur se trouve au niveau des lignes écrites en rougeCode:
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 <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <?php if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; if(isset($_POST['prenom'])) $prenom=$_POST['prenom']; else $prenom=""; // On vérifie si les champs sont vides // connexion à la base require_once 'login1.php'; $conn = new mysqli($hn, $un, $pw, $db); if ($conn->connect_error) die($conn->connect_error); $query = "SET NAMES utf8"; // Force l'encodage en utf-8 $result = $conn->query($query); if (!$result) die($conn->error); if ( $query = mysqli_query("select nom from login where nom = '$nom'") == true) { $row = mysqli_fetch_array($result, MYSQL_ASSOC); printf("nom : %s ", $row["nom"]); $query->close(); } if ( $result = mysqli_query("select password from login where password = '$password'")==true){ $row = mysqli_fetch_array($result, MYSQL_ASSOC); printf("password : %s", $row["password"]); $result->close(); } if ( $result = mysqli_query("select prenom from login where prenom = '$prenom'")==true){ $row = mysqli_fetch_array($result, MYSQL_ASSOC); printf("prenom : %s", $row["prenom"]); $result->close(); } $conn->close(); if (isset($_GET['message'])) { echo($_GET['message']); } else // Sinon, on affiche un message d'erreur { $message = "Identifiants incorrects."; header( 'Location: http://localhost/html/identification_facture.php?message=' . $message); echo "vous n'êtes pas autorisé à accéder aux archives des fichiers factures."; } ?> <h1><center> Facture </center></h1> <p> Les champs sont les suivants : </p> <p> Nom du client, n°client, n°facture </p> <legend>Mots clés :</legend> <fieldset> <form method="POST" action="liste_facture.php"> <center> <input type="text" name="nomclient" size="30" value="nomclient" maxlength="50"><br> <br> <input type="text" name="numclient" size="30" value="numclient" maxlength="6"><br> <br> <input type="text" name="numfacture" size="30" value="numfacture" maxlength="6"><p> le champs fichierfacture peut rester vide <p> <input type="text" name="fichierfacture" size="30" value="fichierfacture" maxlength="50"><br> <br> <input type="submit" value="Rechercher" name="Rechercher"> </center> </form> </fieldset> <img src ='carmi.png'> <br> </body> </html>
C'est écrit au moins deux ou trois fois plus haut.
J'ai suivi la doc pourtant mais je ne comprend quel parametre il me manque
http://lmgtfy.com/?q=+mysqli_query()...rs%2C+1+given+ Oh beh, y à déjà 2 millions de résultats sur cette question
Bonjour,
1/ déjà, vu ton niveau, évite de mettre plusierus instructions sur la même ligne :
à remplacer par :Code:if ( $result = mysqli_query("select password from login where password = '$password'")==true){
mysqli_query() : 2 PARAMETRES !! (ce n'est pourtant pas difficile de LIRE la doc (surtout quand elle est en français !)Code:
1
2
3
4 $query = "select password from login where password = '$password'"; $result = mysqli_query( $conn, $query ); // 2 PARAMETRES !! if ( $result ) {
2/ Je ne voudrais pas t'embrouiller mais...
quand on est "débutant", on n'utilise pas mysqli_ (à réserver uniquement à ceux qui veulent mettre à jour "à moindre frais" un ancien code mysql_),
mais PDO !
Merci pour ce coup de pouce :)
Maintenant il ne me reste plus qu'à bloquer les autres utilisateur en renvoyant un message d'erreur
lorsque je teste avec un utilisateur présent dans ma table ça fonctionne, j'accède à la page suivante
le printf me renvoi le nom et prenom de la personne.
Mais lorsque je saisi un utilisateur qui n'est pas présent dans ma table ça fonctionne aussi j'accède à la page suivante alors que ça ne devrait pas fonctionner.
le printf ne me renvoi aucune valeur.
Je pensais utiliser un message d'erreur de ce type est-ce que la syntaxe est correcte ?
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 <?php if (isset($_GET['message'])) { echo($_GET['message']); } if(isset($_POST['nom'])) $identifiant=$_POST['nom']; else $nom=""; if(isset($_POST['prenom'])) $prenom=$_POST['prenom']; else $prenom=""; $query = "select nom from login where nom = '$nom'"; $result = mysqli_query( $conn, $query ); if ( $result ) { $row = mysqli_fetch_array($result, MYSQL_ASSOC); printf("nom :%s", $row["nom"]); $result->close(); } else // Sinon, on affiche un message d'erreur { $message = "nom incorrect."; header( 'Location: http://localhost/html/facture.php?message=' . $message); $result->close(); } $query = "select prenom from login where nom ='$nom' and prenom = '$prenom'"; $result = mysqli_query( $conn, $query ); if ( $result ) { $row = mysqli_fetch_array($result, MYSQL_ASSOC); //printf("prenom : %s ", $row["prenom"]); $result->close(); } else // Sinon, on affiche un message d'erreur { $message = "prenom incorrect"; header( 'Location: http://localhost/html/facture.php?message=' . $message); $result->close(); }?>
Si je saisie des valeurs ne se trouvant pas la base de donnée j'arrive tout de meme à passer comment se faisse ?
Bonjour,
Ca se faisse (;)) que $result vaut true si la requête est BONNE ou false si elle est MAUVAISE. Point.Code:
1
2 $result = mysqli_query( $conn, $query ); if ( $result )
Mais ça ne veut pas dire qu'elle renvoit des données.
Il te faut vérifier que la requête renvoit bien UN enregistrement (une ligne de résultat).
Voir : mysqli_num_rows()
Lorsque je vérifie avec un printf et que je saisisse un nom et prénom se trouvant dans la table users il me l'affiche à l'écran
il écrit sur la page suivante nom:toto prenom:titi
et lorsque je saisie un nom et prénom qui ne se trouve pas dans la table users
il m'affiche sur la page suivante nom: prenom:
Est-ce normal ?
Je ne comprensd pas du tout pourquoi il accéde a la page suivante meme si le nom et prenom ne se trouve pas dans la BD
Bonjour,
la requête renvoie null quand il n'y a pas de résultat. Il faut donc tester la valeur de retour.
Personnellement, je mettrais "close" avant "header".