Pages :
(reprise du message précédent)

Oui autant pour moi c'est pas $data mais $value ..

 
$idPersonne  = $value['id'];
echo ' <tr>
			<form method="POST" action="traitement.php">
			<td>'. $value['nom'].'</td>
			<td>'. $value['prenom'].'</td>
			<td>				
				<select name="etat" class="form-control">'. $option_etat.'</select>
			</td>  			
 			<td>
				<select name="groupe" class="form-control">'.$option_groupe.'</select>
			</td>
			<td>
				<input type="hidden" name="Personne" value="'.$idPersonne.'">
				<input type="submit" name="Envoyer" value="Valider">
			</td>
			
 			</form>
		</tr>
		'; 
Merci...j'ai fait cette modif mais toujours rien....n'y aurait il pas une erreur sur ma connexion
$DB = new PDO('mysql:host=xxxxxx;dbname=xxxx', 'xxx', 'xxx');       


//Ici tes deux requetes pour aller chercher les etats et groupes dans ta bdd
$etat = $DB->query("SELECT id_eta,etat FROM `ny6dh_man_etat`")->fetchAll();
$groupe = $DB->query("SELECT id_grp,groupe FROM `ny6dh_man_groupe`")->fetchAll();


Au niveau de cette écriture peut être $DB = new PDO
exemple de requête select :


function REQUETE-SELECT ()
{
$resultats=$connexion->query("SELECT membre FROM membres WHERE champ_id_membre='id_membre'");
$resultats->setFetchMode(PDO::FETCH_OBJ);
return $resultat;
}


et dans ton html
<?php require_once ('tonfichierphpdeconnexion.php');?>
<div>
<?php
while( $resultat = $resultats->fetch() )
{
        echo 'Utilisateur : '.$resultat->membre.'<br>';
}
$resultats->closeCursor();
?>
</div>

Modifié par JENCAL (14 Oct 2015 - 17:23)
Pour info, je viens de changer l'id du groupe, il y avait une petite erreur, soit

$option_groupe .= '<option value="'.$value['id_group'].'">1-'.$value['groupe'].'</option>';

changé par
$option_groupe .= '<option value="'.$value['id_grp'].'">1-'.$value['groupe'].'</option>';


Mais....toujours que l'entête du tableau.
Dans ta connexion ecrit ça stp :


$dns = 'mysql:host=localhost;dbname=xxxx';
$utilisateur = 'root';
$motDePasse = '';

$options = array( 
					PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8", 
					PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
					PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
				);
$DB = new PDO( $dns, $utilisateur, $motDePasse, $options );


Et donne moi l'erreur qui va s'afficher ce sera plus facile pour te dépanner.

Faut aussi un var_dump($data) au dessus de ton foreach pour voir ce que te sort ta requête.
Et affiche moi le resultat (ou une partie) stp.

JENCAL je comprend pas ton message. Il/ Elle travaille en PDO::FETCH_ASSOC pourquoi lui indiquer PDO::FETCH_OBJ ? Et en plus elle sort un tableau derrière donc il lui faut un fetchAll, ce qu'il/elle a fait ! De surcroît, je vois pas l'intérêt de ta fonction - même en exemple, je trouve que ça embrouille plus qu'autre chose ...
Modifié par J_B (14 Oct 2015 - 18:04)
J'ai bien remplacé
   $DB = new PDO('mysql:host=xxxxxx;dbname=xxxx', 'xxx', 'xxx');

Par la partie dont tu la demandé de mettre (en mettant bien mes identifiant,mdp...Lol)
Et mis le var_dump à ce niveau
var_dump($data)
$etat = $DB->query("SELECT id_eta,etat FROM `ny6dh_man_etat`")->fetchAll();
$groupe = $DB->query("SELECT id_grp,groupe FROM `ny6dh_man_groupe`")->fetchAll();


mais je n'ai plus rien,vide ...quand tu dit affichage d'une erreur tu parle au niveau de firebug ? Parce que sur l'écran c'est vide
Et quand j'enlève mon var_dump l'affichage du tableau s'arrête au titre du tableau
Modifié par Owenn (14 Oct 2015 - 18:17)
Je ne t'ai pas demandé de mettre tes mdp surtout pas. Je t'ai juste fait rajouter l'option pour que PDO t'affiche les erreurs. Pour plus de renseignement : http://php.net/manual/fr/pdo.error-handling.php .

Enfin, je t'ai dit de mettre var_dump($data) au dessus de ton foreach.
var_dump est une fonction qui te permet de connaître le contenu de ta variable, et donc de savoir si elle contient bien les informations que tu attends d'elle. Entre autre, tu dis que ton tableau est vide, pour te deboguer, je/tu (bonne pratique à prendre) doit savoir ce que contient le $value[], qui découle lui même de $data. Pour plus d'info sur la fonction, regarde ici : http://php.net/manual/fr/function.var-dump.php

Donc tu met ton var_dump($data); après ta requête ($data) et au dessus de ton foreach.
Cela devrait t'afficher quelque chose.

En outre, il existe une autre solution pour savoir si ta requete est bonne, tu vas sur ton phpmyadmin, sur ta base, et dans l'onglet sql tu tape ta requete. Donc :
SELECT id,id_etat,genre,nom,prenom,id_eta,etat,age,tel1,ville,mod_souhaite1,id_grp,groupe,id_groupe
FROM `ny6dh_man_eleve` A, `ny6dh_man_groupe` B , `ny6dh_man_etat` C
WHERE A.id_etat = 0
AND A.mod_souhaite1 = 1
AND B.id_grp = A.id_groupe
AND A.id_etat = C.id_eta

Tu va vite voir si ça te sort les résultat attendu, dans le cas contraire c'est que le problème viens de là.

Cela dit, je ne comprend pas comment tu as pu écrire une requête comme ça en ayant pratiquement aucune base... tes erreurs html, php que tu relèves depuis le début sont des erreurs "anodine", que tu aurais du théoriquement voir par toi-même et donc corriger tout seul.


Edit : attend, peut-être que ton problème vient de ta version de php.
Je te réécris un truc
Modifié par J_B (14 Oct 2015 - 18:33)
Donc, oublie ce que j'ai dit plus haut;

Plutôt que d'écrire :

$etat = $DB->query("SELECT id_eta,etat FROM `ny6dh_man_etat`")->fetchAll();
$groupe = $DB->query("SELECT id_grp,groupe FROM `ny6dh_man_groupe`")->fetchAll();

qui correspond à façon d'écrire plus récente.
Essaie :

$req_etat=$DB->query("SELECT id_eta,etat FROM ny6dh_man_etat");
$etat = $req_etat->fetchAll();

$req_groupe = $DB->query("SELECT id_grp,groupe FROM ny6dh_man_groupe");
$groupe = $req_groupe->fetchAll();


En dessous tu écris
var_dump($etat);
var_dump($groupe);

Enfin, si ça te sort quelque chose, tu pourras modifier les autres requetes de la même façon.
Modifié par J_B (16 Oct 2015 - 16:45)
Donc pour la connexion, je laisse ce que j'ai mis précédemment et y ajoute ton nouveau code, soit

$DB = new PDO('mysql:host=xx;dbname=xxx', 'xxx', 'xxx');     

$dns = 'mysql:host=xxxxx;dbname=xxxxxt';
$utilisateur = 'root';
$motDePasse = '';

$options = array( 
					PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8", 
					PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
					PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
				);
$DB = new PDO( $dns, $utilisateur, $motDePasse, $options ); 


C'est bien cela?? Mais tu me dis de ne surtout pas mettre mon mdp dans ton nouveau code, d'accord, mais je renseigne bien au niveau de host,dbname et utilisateur c'est bien cela (je parle pour ton nouveau bout de code sensé afficher le code erreur)
J_B a écrit :
Je ne t'ai pas demandé de mettre tes mdp surtout pas. Je t'ai juste fait rajouter l'option pour que PDO t'affiche les erreurs.


Donc.....je remets ma connexion

$DB = new PDO('mysql:host=xx;dbname=xxx', 'xxx', 'xxx');


Puis ton bloc ou juste ton bloc?Où mettre mes id et mdp de la BDD?
Ps : var_dump, j'ai bien compris et l'ai donc mis comme ceci :

$data = query("SELECT id,id_etat,genre,nom,prenom,id_eta,etat,age,tel1,ville,mod_souhaite1,id_grp,groupe,id_groupe 
FROM `ny6dh_man_eleve` A, `ny6dh_man_groupe` B , `ny6dh_man_etat` C 
WHERE A.id_etat = 0 
AND A.mod_souhaite1 = 1 
AND B.id_grp = A.id_groupe
AND A.id_etat = C.id_eta")->fetchAll();
var_dump($data)


La requête est bonne, aucun pb là dessus, re-testée et fonctionne sans pb, par contre pour la connexion à la BDD...cf mon message ci dessus
ça c'est un c/c de mon propre site web, donc je suis sur que ça fonctionne :

$DB = new PDO('mysql:host=xx;dbname=xxx', 'xxx', 'xxx');     

$dns = 'mysql:host=xxxxx;dbname=xxxxxt';
$utilisateur = 'root';
$motDePasse = '';

$options = array( 
					PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8", 
					PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
					PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
				);
$DB = new PDO( $dns, $utilisateur, $motDePasse, $options ); 


Ce que je te dis, c'est de ne pas mettre ton mot de passe ici - sur le forum.

Que tu écrives ça :

$DB = new PDO('mysql:host=xx;dbname=xxx', 'xxx', 'xxx');

ou ça :

$dns = 'mysql:host=xxxxx;dbname=xxxxxt';
$utilisateur = 'root';
$motDePasse = '';
$options = '';
$DB = new PDO( $dns, $utilisateur, $motDePasse, $options ); 


C'est la même chose !
Je voulais simplement que tu rajoutes ça :
$options = array( 
					PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8", 
					PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
					PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
				);

pour que tu puisses voir tes erreurs. Et me les envoyer ici ( les erreurs qui s'afficheront sur ta page).
Owenn a écrit :

La requête est bonne, aucun pb là dessus, re-testée et fonctionne sans pb, par contre pour la connexion à la BDD...cf mon message ci dessus


Testé comment ? Sur phpmyadmin ?
Quel est ta version php ? [tu peux le savoir avec echo phpinfo(); ]


Owenn a écrit :
Ps : var_dump, j'ai bien compris et l'ai donc mis comme ceci : var_dump($data)

Et ça t'a affiché quoi ????? (tu as oublié le ; à la fin de var_dump($data);
Pour la version, PHP Version 5.4.38 ....J'ai testé toutes les requêtes sur phpmyadmin... Sinon Toujours rien, et pourtant....

<?php  

$dns = 'mysql:host=xxxxx;dbname=xxxx';
$utilisateur = 'xxxx';
$motDePasse = 'xxxx';
$options = array( 
					PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8", 
					PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
					PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
					);
$DB = new PDO( $dns, $utilisateur, $motDePasse, $options );   


//Ici tes deux requetes pour aller chercher les etats et groupes dans ta bdd

$req_etat=$DB->query("SELECT id_eta,etat FROM ny6dh_man_etat");
$etat = $req_etat->fetchAll();

$req_groupe = $DB->query("SELECT id_grp,groupe FROM ny6dh_man_groupe");
$groupe = $req_groupe->fetchAll();

$var_dump($etat);
$var_dump($groupe);

//on initialises les variables qui vont contenir les data de etat et groupe
$option_etat = $option_groupe = '';
foreach($etat as $value){
	$option_etat .= '<option value="'.$value['id_eta'].'">'.$value['etat'].'</option>';
}

foreach($groupe as $value){
	$option_groupe .= '<option value="'.$value['id_grp'].'">1-'.$value['groupe'].'</option>';
}
?>


 </div><!-- /.box-header -->
                <div class="box-body">
                  <table id="example1" class="table table-bordered table-striped">
 <thead>
                      <tr>
                        <th>Genre</th>
                        <th>Nom</th>
                        <th>Prénom</th>
                        <th>Enregistré</th>
                        <th>Groupe</th>                        
                      </tr>
                    </thead> <tbody>                 
                   

<?php
$data = query("SELECT id,id_etat,genre,nom,prenom,id_eta,etat,age,tel1,ville,mod_souhaite1,id_grp,groupe,id_groupe 
FROM `ny6dh_man_eleve` A, `ny6dh_man_groupe` B , `ny6dh_man_etat` C 
WHERE A.id_etat = 0 
AND A.mod_souhaite1 = 1 
AND B.id_grp = A.id_groupe
AND A.id_etat = C.id_eta")->fetchAll();
var_dump($data);
//on créer le tableau - 
foreach($data as $value){
   $idPersonne = $value['id']; 
echo ' <tr>
			<form method="POST" action="traitement.php">
			<td>'. $value['nom'].'</td>
			<td>'. $value['prenom'].'</td>
			<td>				
				<select name="etat" class="form-control">'. $option_etat.'</select>
			</td>  			
 			<td>
				<select name="groupe" class="form-control">'.$option_groupe.'</select>
			</td>
			<td>
				<input type="hidden" name="Personne" value="'.$idPersonne.'">
				<input type="submit" name="Envoyer" value="Valider">
			</td>
			
 			</form>
		</tr>
		';
}

closeCursor();
?>

                    </tbody>
                    <tfoot>
                      <tr>
                        <th>Genre</th>
                        <th>Nom</th>
                        <th>Prénom</th>
                        <th>Enregistré</th>
                        <th>Groupe</th>
                      </tr>
                    </tfoot>
                  </table>
                </div><!-- /.box-body -->
              </div><!-- /.box -->

Modifié par Owenn (15 Oct 2015 - 07:55)
Bon, tu ne me dit toujours pas ce que contiennent les var_dump(); Comment veux-tu que je t'aide si tu répond pas aux questions que je te pose ?

Donc pour la n-iième fois, que renvoie les var_dump() que je t'ai fais mettre ? Il doit obligatoirement te renvoyer quelque chose même "null". Tu me le dis.

Après moi je vois pas d'erreur, donc soit il y a quelque chose qui m'échappe, soit tu as un problème au niveau de ta connexion.
Rajoute un var_dump($DB); et dit-moi ce que ça t'affiche.

Enfin, refait le phpinfo();
- tu as une partie PDO, regarde si ton serveur support le PDO. Tu dois avoir quelque chose comme ça : PDO drivers-> mysql, sqlite..
- et regarde si tu as xdebug. Tu dois avoir quelque chose comme ça : xdebug
xdebug support enabled Version 2.2.5

J'attend toutes les réponses à mes questions pour pouvoir continuer à t'aider
Modifié par J_B (15 Oct 2015 - 09:35)
Bonjour, j'ai bien compris que tu attends le code que renvoie le var_dump mais je n'ai rien du tout d'affiché...pour les infos demandées,
Au niveau du phpinfo, j'ai :

PDO

PDO support enabled
PDO drivers mysql, pgsql, sqlite

pdo_mysql

PDO Driver for MySQL enabled
Client API version 5.1.73

Directive Local Value Master Value
pdo_mysql.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock

pdo_pgsql

PDO Driver for PostgreSQL enabled
PostgreSQL(libpq) Version 8.4.21
Module version 1.0.2
Revision $Id$

pdo_sqlite

PDO Driver for SQLite 3.x enabled
SQLite Library 3.7.7.1

Pour xdebug je ne trouve pas ce terme (ni en faisant CTRL+f)

J'ai pour "curl" debug:no...
Pour le var_dump($DB);
J'ai ce message :
object(PDO)#1 (0) { }

Sinon je te répète que les autres var_dump ne donnent rien
Modifié par Owenn (15 Oct 2015 - 18:07)
D'accord. Alors on aurait du commencer par là dès le début ( je le saurais pour mes prochains cas).
Tu dois installé xdebug en rapport avec ton os ( tu dois être sur linux je pense - ubuntu peut-être ? )
Quoi qu'il arrive, tu ne l'a pas, et c'est pour ça que tes erreurs ne s'affichent pas.

Donc je te conseille très très fortement de l'installer, tape xdebug ubuntu si tu es dessus.
Tu verras c'est le jour et la nuit, plutôt que d'avancer à l'aveuglette.

Pour var_dump($DB); apparemment il y a bien un objet d'instancié, donc théoriquement la connexion est bonne. On est au point mort, je re-regarde ton code, en attendant que tu installe xdebug. Si je vois quelque chose, je te dis.
Modifié par J_B (15 Oct 2015 - 18:56)
Aiiie je ne travaille pas en local...je suis chez ovh et je n'arrive pas à trouver un tuto pour installer xdebug via FTP...J'ai vu l'efficacité de cet outil mais comment l'installer, sachant que je ne peux (VEUX) pas travailler en local...
Dans ce cas il va falloir te rapprocher du forum OVH. Ou dans ton manager tu peux écrire un billet pour avoir une réponse plus personnalisé.
C'est assez rapide, généralement en deux jours tu sais tu ou tu vas.
J'ai ouvert un ticket chez OVH...personne ne connaît un site pour déboguer son code en ligne?
Pages :