Bonjour
le debug me donne ça
SQL: [49]
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT date_nais, adr FROM adherents_aca LIMIT 10 Params: 1 Key: Name: [8] :licence paramno=-1 name=[8] ":licence" is_param=1 param_type=2
Bonjour
le debug me donne ça
SQL: [49]
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT date_nais, adr FROM adherents_aca LIMIT 10 Params: 1 Key: Name: [8] :licence paramno=-1 name=[8] ":licence" is_param=1 param_type=2
euh juste a tout haasrd un echo + (variable x) ne pourrait pas faire l'affaire au lieu du print
encore une petite idee qui trottine
je suis sous wamp vers 2.5 et il semblerait que quelque fois il n'accede pas a nos projets (lu ça et là)
Salut andre260.
Les points à vérifier.
1) es-tu certain que ta base de données est bien 'test' ?
2) es-tu certain de ne pas t'être trompé de table ?
3) le nom de tes colonnes est forcé en minuscule. Dans le php, il faut les écrire en minuscule.
Es-tu certain de l'orthographe de tes colonnes ?
4) tu as repris le même exemple. Es-tu certain que ta base de données est en latin1 ?
Ne serait-ce pas plutôt de l'utf8 ?
5) tu fais un passage de paramètre par : $_POST['numlicence']
As-tu vérifié que tu passes bien quelque chose ?
Et ce quelque chose est bien ce que tu attends comme valeur ?
6) as-tu vérifié le compte-rendu de ta requête dans le fichier log ?
7) est-ce que le pdo est bien activé sous wamp ?
--> icône wampserver / php / extension php / php_pdo_mysql
La ligne doit être coché.
J'ai plus d'idées pour t'aider.
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
bonsoir
je reponds a artemus bien que ne voyant pas encore son message
ma base de données sous wamp est bien test (elle est dans le repertoire ; c:\wamp\www\test\test1\)
ma table est adherents_aca (minuscule)
le nom des colonnes est en minuscule voila une requete
alors oui j'etais en utf8 j'ai tout remis en latin1
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part `num_lic`, `id`, `date_nais`, `mail`, `tel`, `adr`SELECT * FROM `adherents_aca` WHERE 1
j'ai repris le meme exemple
seul le champ du formulaire est nommé : numlicence donc j'ai modifié $sel->bindParam('licence', $_POST['numlicence']);.
php.pdo.mysql est bien coche dans wamp
ou puis je trouver le fichier log (j'ai fait une recherche via (totalcommander) il ne trouve rien
alors l'idee m'est venue de changer de table (infos_club) ou on retrouve une partie des memes champs
le resultat est le meme, je ressaye plus tard avec les valeurs changées
merci je vous tiens informé
bon dimanche
une info oubliée
Serveur: mysql wampserver »Base de données: test »Table: adherents_aca
Salut andre260.
Si tu réponds à mon message (post #24), c'est que tu le voies ce message.Envoyé par andre260
Donc j'ai pas compris ce que tu veux dire.
D'accord. Ta base de données est bien 'test'.Envoyé par andre260
Non, la base physique n'est pas dans "c:\wamp\www\test\test1\".
Ta base de données physique est dans "c:\wamp\bin\mysql\mysql5.6.zz\data\test".
Ce dont tu me parles, je suppose qu'il s'agisse du script php.
Normalement, le répertoire "/www" est réservé à "localhost".
Si tu veux créer un site, il faut le mettre dans un autre répertoire, pas nécessairement dans "c:/wamp".
De plus, tu dois utiliser les virtualhosts.
Et tu as fais comment pour convertir ta base de utf8 en latin1 ?Envoyé par andre260
1) Voici un exemple de ce que tu dois déclarer pour une base de données et une table :
Quand je manipule MySql, je le fais toujours en mode transactionnel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 SET AUTOCOMMIT = 0; START TRANSACTION; -- ====================== -- Base de Données `base` -- ====================== DROP DATABASE IF EXISTS `base`; CREATE DATABASE `base` DEFAULT CHARACTER SET `latin1` DEFAULT COLLATE `latin1_general_ci`; USE `base`; -- ================ -- Table `etudiant` -- ================ DROP TABLE IF EXISTS `etudiant`; CREATE TABLE `etudiant` ( `id` integer unsigned NOT NULL AUTO_INCREMENT primary key, `email` char(255) NOT NULL, unique index `idx1` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci` ROW_FORMAT=COMPRESSED;
2) le script qui contient la déclarative de la base et des tables doit être aussi en latin1.
Pour cela, utiliser notepad++ et convertir le contenu du script en ANSI, ou en win1252.
Je ne me casse pas trop la tête, pour mes tests, j'utilise ANSI.
3) si la base et les tables sont en latin1 et si le script est stocké en ANSI, tu dois aussi mettre "set names latin1".
4) Tu trouves ce fichier log, en faisant :Envoyé par andre260
--> icône wampserver
--> php
--> php error.log
Supprimes tout ce qui est dedans. Et refais un test de ton script.
Si un message d'anomalie apparait, tu me le donnes.
5) Sebwar t'a conseillé de faire un test simple, que voici :
sans utiliser ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT date_nais, adr FROM adherents_aca LIMIT 10
juste pour savoir si tu obtiens des résultats.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sel->debugDumpParams();
Tu mets aussi en commentaire le "bindparam".
Si tu n'as aucun message d'erreurs, ni aucun résultat, c'est que ta table est vide.
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
Bonjour Artemus
Merci de ta reponse
alors je recois par mail l'avis de ta reponse, lorsque je vais sur l'interfaca developpez.net je ne vois pas ta reponse(normal >> donc F5 actualisez rien)
je ferme l'ordi redemarre toujours rien (les bizareries informatiques), je reponds apres envoi , bing ta reponse apparait, ceci dit pas grave
dans : c:\wamp\bin\mysql\mysql5.6.17\data\test il ya plusieurs fichiers dont 2 sur adherents_aca (form taille 8718mo, ibd 131072)
pour ecrire mes scipts (html, js,php) j'utlise depuis toujours notepad++, mes fichiers sont dans mes docs..pages web sauf pour les essais en localhost (wamp/wwwwtest..)
pour modifier mes tables j'utlise phpmyadmin (sous wampserver 2.5) je vais dans structure de ma table je coche tout et modifie l'interclassement
Ok j'ai modifié l'encodage dans notepad mis en ANSI, j'ai vidé le log refait un test et je vous redis
oui j'ai essayé les lignes de code sebware, et non je t'assure mes tables ne sont pas vides
aucun message d'erreur dans le php error log
ce qui signifie que ma table est vide.....
a n'y plus rien comprendre
je vais en creer une autre pour voir
Salut andre260.
Es-tu fâché avec les accents ?Envoyé par "andre260
Sur certains forums, j'ai déjà eu des comportements bizarres, du genre rien pendant plusieurs jours, puis tout d'un coup, toutes les messages apparaissent.
De ces messages, certaines dates justement de plusieurs jours et non de la date de réceptions.
J'ai même vu des messages de plus de six mois arrivés. Je pense qu'il devait être validé par un modérateur qui a oublié de le faire.
Ne pas toucher à ces fichiers. Si tu utilises le moteur InnoDB, tu dois avoir les types ".frm" et ".idb".Envoyé par "andre260
Si je ne me trompe pas l'un contient la structure (frm) de ta table et l'autre les data+index (idb).
S'il n'y a rien dans le log, cela signifie que tu n'as aucun problème avec ta requête.Envoyé par "andre260
Ta table avec tes données n'est pas nécessairement vide, mais elle se trouve ailleurs que dans ta base de données.
Tu dois avoir deux versions de cette table, l'une dans 'test' et l'autre ???
Essayes par exemple de mettre mysql comme base de données.
Je dis cela car si tu as créé ta table sans préciser où la mettre (je parle de la base de données), elle a très bien pu se mettre sous mysql.
Donc vérifie que tu ne trouves pas ta table en allant fouiller sous "c:/wamp/bin/mysql/mysql5.6.xx/data/mysql".
Et à tout hasard, essayes de voir si elle ne serait pas dans une autre base de données.
Quand tu fais une opération sur une base de données, hors php, il faut toujours préciser le nom de la base, en tapant :"use test" par exemple.
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
merci Artemus
dès la fin de l’après midi je me remets au travail
bonne journée
cdt
André
donc j'ai créé une nouvelle table mis dans la bd mysql test en localhost = RIEN
après j'ai mis mon script en ligne pour voir
voila une partie du code sur la page formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <html> <head> <meta charset="utf-8"> <title>ACA</title> <link href="mon_style_2.css" rel="stylesheet" type="text/css" /> </head> <body> <?php $nom_du_serveur = "mysql:host=axxxxde.mysql.db;dbname=axxxxde"; $nom_utilisateur = "axxxde"; $mot_de_passe = "xxxxx"; $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1", PDO::ATTR_CASE => PDO::CASE_LOWER, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => false, PDO::ATTR_AUTOCOMMIT ); try { $link = new PDO($nom_du_serveur, $nom_utilisateur, $mot_de_passe, $options); } catch (Exception $e) { echo "Connection à MySql impossible : ", $e->getMessage(); die(); } try { $sel = $link->prepare("SELECT date_naissance, adresse FROM adherents where num_lic = :licence"); $sel->bindParam('licence', $_POST['numlicence']); $sel->execute(); while ($row = $sel->fetch(PDO::FETCH_ASSOC)) { print_r($row['date_naissance'],$row['adresse']); } } catch ( Exception $e ) { echo "Une erreur est survenue dans la requête select : ", $e->getMessage(); die(); } $sel->closeCursor(); ?> <fieldset id="titre"> <p>Bonjour M: <?php echo $_POST['nom_prenom']; ?> <br>Tu es né le : <?php printf($row['datenaiss'],$row['adresse']); ?> <p>tu résides à <?php printf($row['date_nais'],$row['adr']); ?> </br> <br>ton numero de telephone est <?php echo $_POST['phone']; ?> ton mail : <?php echo $_POST['courriel']; ?> </br> <br>tu es affilié à la Federation : <?php echo $_POST['fede'];?></br> <br>tu as choisi de faire l'epreuve de : <?php echo $_POST['Rando'];?> Le : <?php echo $_POST['DateR'];?> et la distance de <?php echo $_POST['Dist'];?>Km</br></p> </fieldset> </body> </html>
et toujours pareil pas d'affichage sur les champs date naissance et adresse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <p> <label for="numlicence"><strong>N° de Licence : </strong></label> <input id="numlicence" type="text" name="numlicence" size="8" maxlength="10" /><br /> </p>
après ceci j'ai changé la table par une autre " Infos_Club " qui est sur serveur ovh celle ci fonctionne tres bien
et je ne recupere rien retour case départ
Salut andre260.
Il y a quelques petites erreurs dans ton script.
1) il faut obligatoirement mettre dans un document html, un doctype :
2) si tu travailles en "latin1", autant mettre tes documents html aussi en "latin1".
Code : Sélectionner tout - Visualiser dans une fenêtre à part <!doctype html>
Et ne pas oublier de convertir le document en "iso-8859-1".
Code : Sélectionner tout - Visualiser dans une fenêtre à part <meta charset="ISO-8859-1">
Ou encore comme je le fait, mets tout en "ANSI".
3) si tu as besoin de comptabiliser le nombre de lignes extraits de ta requête, tu peux utiliser ceci :
4) parfois, il est nécessaire de préciser le type de donnée que tu passes en argument dans un bindparam :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $count = $sel->rowCount();
5) il existe une autre forme d'écriture du bindparam qui peut-être plus simple à l'usage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sel->bindParam('licence', $_POST['numlicence'], PDO::PARAM_INT);
La différence se porte sur d'une part mettre un "?" dans la requête et d'autre part d'utiliser array() pour faire le passage positionnel des paramètres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $sel = $link->prepare("SELECT date_naissance, adresse FROM adherents WHERE num_lic = ?"); $sel->execute(array(1));
Personnellement, je préfère le bindparam.
6) tu dois extraire tes données de MySql et ensuite, les mettre en forme :
Je teste si l'extraction s'est bien faite. Deux cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if ($row = $sel->fetch(PDO::FETCH_ASSOC)) { $date_naissance = $row['date_naissance']; $adresse = $row['adresse']; } else { $date_naissance = '----'; $adresse = '----'; }
--> aucune ligne, la valeur de retour est à NULL.
--> il y a des lignes, la valeur de retour est un pointeur sur un tableau.
Ici, je récupère depuis $row[], puisque je suis dans le mode association, la valeur de la ligne courante.
Comme j'obtiens de l'extraction une et une seule ligne, il est inutile de faire une boucle.
Et comme tu le voies, j'ai rangé le résultat que j'obtiens directement dans la variable.
7) tu peux utiliser la fonction entities sur l'exception :
Ceci permet d'avoir la bonne conversion des caractères entre l'utf8 et iso8859-1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "Connection à MySql impossible : ", entities($e->getMessage());
8) j'ai repris mon exemple et je l'ai adapté. Maintenant ça fonctionne !
@+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <!doctype html> <html> <head> <meta charset="ISO-8859-1"> <title>ACA</title> <link href="styles.css" rel="stylesheet" type="text/css" /> </head> <body> <?php /*--------------*/ $_POST['numlicence'] = 1; /*--------------*/ /*-----------------------------------------------------*/ /* Informations pour la connexion à la base de données */ /*-----------------------------------------------------*/ $nom_du_serveur = "mysql:host=localhost;dbname=base"; $nom_utilisateur = "root"; $mot_de_passe = "root"; $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1", PDO::ATTR_CASE => PDO::CASE_LOWER, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => false, PDO::ATTR_AUTOCOMMIT ); /*----------------------*/ /* Connexion au Serveur */ /*----------------------*/ try { $link = new PDO($nom_du_serveur, $nom_utilisateur, $mot_de_passe, $options); } catch (Exception $e) { echo "Connection à MySql impossible : ", $e->getMessage(); die(); } /*---------------------*/ /* lecture de la table */ /*---------------------*/ try { $sel = $link->prepare("SELECT date_naissance, adresse FROM adherents WHERE num_lic = :licence"); /* $sel = $link->prepare("SELECT date_naissance, adresse FROM adherents WHERE num_lic = ?");*/ $sel->bindParam('licence', $_POST['numlicence'], PDO::PARAM_INT); $sel->execute(); /* $sel->execute(array(1));*/ if ($row = $sel->fetch(PDO::FETCH_ASSOC)) { $date_naissance = $row['date_naissance']; $adresse = $row['adresse']; } else { $date_naissance = '----'; $adresse = '----'; } } catch ( Exception $e ) { echo "Une erreur est survenue dans la requête select : ", $e->getMessage(); die(); } $sel->closeCursor(); ?> <p>DATE NAISSANCE : <?php echo $date_naissance ?></p> <p>ADRESSE : <?php echo $adresse ?></p> </body> </html>
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
Bonjour Artemus
Excuse moi j'ai un peu arrangé le code
Donc Ma bd est bien connectée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php //$nom_du_serveur = "mysql:host=ac--e.mysql.db;dbname=a--e"; //$nom_utilisateur = "a--e"; //$mot_de_passe = "A--2"; //$options = array( //PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1", //PDO::ATTR_CASE => PDO::CASE_LOWER, //PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //PDO::ATTR_PERSISTENT => false, //PDO::ATTR_AUTOCOMMIT //); try { $bdd = new PDO('mysql:host=a--db;dbname=a--e;charset=utf8', 'a--e', 'A--2'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } try { //$sel = $link->prepare("SELECT Adresse, Date_Naissance FROM Infos_Club where numerolic = :licence"); //$sel->bindParam('licence', $_POST['numlicence']); //$sel->execute(); //while ($row = $sel->fetch(PDO::FETCH_ASSOC)) //{ //print_r($row['Date_Naissance'],$row['Adresse']); //} } catch ( Exception $e ) { echo "Une erreur est survenue dans la requête select : ", $e->getMessage(); die(); } ?> <fieldset id="titre"> <p>Bonjour M: <?php echo $_POST['nom_prenom']; ?> <br>Tu es né le : <?php printf($row['Date_Naissance'],$row['Adresse']); ?> <p>tu résides Ã* <?php printf($row['Date_Naissance'],$row['Adresse']); ?> </br> <br>ton numero de telephone est <?php echo $_POST['phone']; ?> ton mail : <?php echo $_POST['courriel']; ?> </br> <br>tu es affilié Ã* la Federation : <?php echo $_POST['fede'];?> ton numero de licence : <?php echo $_POST['numlicence'];?></br> <br>tu as choisi de faire l'epreuve de : <?php echo $_POST['Rando'];?> Le : <?php echo $_POST['DateR'];?></br> <br> et la distance de <?php echo $_POST['Dist'];?>Km</br></p> </fieldset> <?php // On récupère tout le contenu de la table infos club $reponse = $bdd->query('SELECT * FROM Infos_Club LIMIT 5'); echo '<p></p>'; while ($donnees = $reponse->fetch()) { ?> <table> <td> <?php echo $donnees['Identite'];?></td> <td><?php echo $donnees['Sexe'];?></td> <td><?php echo $donnees['Date_Naissance'];?></td> <td> <?php echo $donnees['numerolic'];?></td> <td><?php echo $donnees['Email'];?></td> <td><?php echo $donnees['telephone'];?></td> <td><?php echo $donnees['Adresse'];?> </td> </p> </table> <?php } $reponse->closeCursor(); // Termine le traitement de la requête ?>
Il lit bien la table et il m'affiche les infos de la table "Infos_Club" (excuse pour les majuscules) partie echo donnees
par contre la 1ere partie du code ou il doit lire et afficher Date_Naissance et Adresse ne sont toujours pas lues
Je comprends pas c'est la même table
J'ai mis en commentaire car il restitue une erreur sur cette ligne
donc il suffit juste d'harmoniser ces 2 codes
Code : Sélectionner tout - Visualiser dans une fenêtre à part $sel = $link->prepare("SELECT Adresse, Date_Naissance FROM Infos_Club where numerolic = :licence");
je te remercie
Je viens seulement de prendre connaissance de ton message
je lis cela en fin d'apres midi à tête reposée
cdt
Salut andre260.
J'ai repris ton exemple. J'ai créé une table MySql avec un tout petit jeu d'essai.
J'ai adapté le code php ton exemple et j'ai fait en sorte d'obtenir une extraction.
Je l'ai testé cette fois-ci, et j'obtiens bien un résultat.
Maintenant, je pense que tu vas pouvoir t'en sortir !
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
Voici ce que j'obtiens
la partie superieure n'affiche pas les 2 renseignements desirés
et la partie basse le fait avec les mêmes champs (j'y perds mon latin)
Enfin j'ai trouvé ce qui clochait au lieu de prendre numlicence comme condition where
j'ai changé par le telephone et la bingo
tout s'affiche, je n'ai plus qu'a mettre un d'ordre
mais je voudrais bien comprendre, le pourquoi du comment
en tout cas je te remercie pour tout et de la patience
cdt
andre
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager