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

J'ai ouvert un ticket chez OVH...personne ne connaît un site pour déboguer son code en ligne?
Bon alors pour ton code, voici les erreurs relevé.

Il s'agit de var_dump(); et non pas $var_dump(); var_dump() est une fonction, pas une variable. Donc tu peux enlever tous les $ qui sont devant. Smiley smile
Ensuite, tu as oublié le $DB sur ta dernière requête.
Donc : $data = $DB->query("SELECT ...)->fetchAll();
Enfin, le closecursor n'est pas bon. Ecrit plutôt : $DB=null;

Voilà, je n'ai pas encore vérifier traitement.php, mais regarde déjà si c'est bon pour toi. En tout chez moi c'est ok.

Edit : garde quand même ton ticket chez OVH c'est pas normal que tu n'es pas le xdebug, j'avais le meme type d'offre que toi et je n'ai jamais rencontré ce problème auparavant. .Là de suite avec les tables et les erreur php la correction est instantanée !
Tiens j'ai vu ça, si ça peut t'aider : https://forum.ovh.com/showthread.php/98294-Debugging-PHP-sous-mutualis%C3%A9-OVH
Modifié par J_B (16 Oct 2015 - 16:52)
Donc la réponse de ovh:

Bonjour Madame, Monsieur,

Cette extension n'est disponible sur nos serveurs. Néanmoins, ne connaissant ce module, pourriez-vous m'en dire plus ? S'agit-il par exemple de simplement affiché les erreurs PHP ? Si c'est le cas suivez ce guide afin de mettre en place l'affichage de ces erreurs :

https://www.ovh.com/fr/g1562.mutualise_comment_diagnostiquer_une_page_blanche

Je reste à votre disposition pour toute demande complémentaire
.

Donc j'ai collé

ini_set('display_errors',1);


Et il m'affiche

Fatal error: Function name must be a string in/home/xxxx/www/xxx/xx/xxx/data.php on line 495


Qui correspond à

$var_dump($etat);


Donc..?
Tout fonctionne maintenant au niveau de l'affichage !! Mais maintenant j'ai un code erreur au niveau de l'envoi des données avec ce message :

Fatal error: Call to a member function prepare() on a non-object in /home/xxx/www/xxx/xxx/xxx/traitement.php on line 18

Qui correspond à cette ligne de code dont tu m'a fourni :

$req =$bdd->prepare("UPDATE ny6dh_man_eleve(id_etat, id_groupe) VALUES(:groupe, :etat) WHERE id= [langue]ersonne");
$req->bindValue(':groupe', $groupe, PDO::PARAM_STR);
$req->bindValue(':etat', $etat, PDO::PARAM_STR);
$req->bindValue(':personne', $personne, PDO::PARAM_STR);
$req->execute();
}
$DB=null;
?>
J'ai bien lu ton précédent message mais là il s'agit de l'envoi des données....J'ai effectivement pu avoir une info supplémentaire sur le débogage avec ce message d'erreur en plus du précédent :

Notice: Undefined variable: bdd in /home/xxxx/www/xxx/xxx/xxx/traitement.php on line 19
Donc tu as deviné que ce n'était pas $bdd maiiiiiiiiiiiiiiiiiiis ???? regarde les autres requêtes
J'avais déjà remplacé $bdd par $DB mais...........................message d'erreur :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in /home/xxxx/www/xxx/xxx/xxx/traitement.php:23 Stack trace: #0 /home/xxx/www/xxxx/xxxx/xxxx/traitement.php(23): PDOStatement->execute() #1 {main} thrown in /home/xxxx/www/xxxx/xxxx/xxxx/traitement.php on line 23
Oui, désolé Owenn, je sais pas ou j'avais la tête que j'ai écris la première requete mais c'est pas ça du tout Smiley confused Smiley confused

if(isset($_POST['Envoyer'])){
	$etat = $_POST['etat'];
	$groupe= $_POST['groupe'];
	$personne= $_POST['Personne'];

	$req =$DB->prepare("UPDATE ny6dh_man_eleve SET id_etat = :etat, id_groupe=:groupe WHERE id= [langue]ersonne");
	$req->bindValue(':groupe', $groupe, PDO::PARAM_INT);
	$req->bindValue(':etat', $etat, PDO::PARAM_INT);
	$req->bindValue(':personne', $personne, PDO::PARAM_INT);
	$req->execute();

}
$DB=null;


ça fait un an que j'ai pas touché au php ... ça se voit !! Bon j'espère que ce cette fois-ci ce sera bon Smiley langue
affff toujours le même pb....sachant qu'un smiley (code) s'est glissé dans ton codage lol :
WHERE id= Smiley langue ersonne");

Donc j'ai bien compris que
[langue]
( Smiley langue ) est p mais j'ai toujours la même erreur...j'ai fait un var_dump et les value m'ont l'air bonne :
array(4) { ["etat"]=> string(1) "1" ["groupe"]=> string(1) "2" ["Personne"]=> string(3) "219" ["Envoyer"]=> string(7) "Valider" }

Modifié par Owenn (17 Oct 2015 - 11:30)
C'EST BOOOOOOOOOOOOOOOON, ça marche! J'ai fait une modif dans ma table via phpmyadmin et j'ai récupéré la requête, donc changé ce format :

UPDATE ny6dh_man_eleve SET id_etat = :etat, id_groupe=:groupe WHERE id= [langue]ersonne


Pour celui ci

UPDATE `xxxxxx`.`ny6dh_man_eleve` SET `id_etat` = :etat,`id_groupe` = :groupe WHERE `ny6dh_man_eleve`.`id` = [langue]ersonne


Bien sur
 [langue]
est enfait :LETTRE P

Merci BEAUCOUP J_B ta assuré!
Modifié par Owenn (17 Oct 2015 - 11:50)
Sinon une autre petite question......comment mettre mon bouton valider en dehors du tableau?
Si je le sors du tableau mais le laisse dans la boucle, il me le duplique x fois, si je le sors de la boucle, il n'est plus lié au tableau
Tu as deux solutions :
- soit tu fais un form à chaque boucle et donc tu as un bouton submit par formulaire. Ce qui est le cas actuellement .
- soit tu fais un formulaire général, donc tu sors tes balises form de la boucle, mais dans ce cas il faut que tout les names est un nom différent. Cette méthode est un peu plus sale, car ça signifie aussi que si tu as 20 lignes, tu vas récupérer 60 valeurs dans ton POST, les trier pour n'en garder que 3 au final ... C'est beaucoup de traitement qui pourrait être éviter.

Ou, il reste aussi la possibilité de travailler avec ajax /js.

Je te laisse le soin de chercher et d'appliquer la méthode qui te conviendra.
Merci pour ces informations !Pour l'instant je vais me contenter de ce code...J'ai pensé plutôt à enlever une liste déroulante pour l'enregistrement et utiliser le bouton submit pour envoyer en value "1" au lieu de "Valider"...
Donc je modifie la value comme ceci :

<td>
				<input type="hidden" name="Personne" value="'.$idPersonne.'">
				<input type="submit" name="Envoyer" class="btn btn-primary value="1">
			</td>


Et ensuite renvoie en POST par rapport au name

if(isset($_POST['Envoyer'])){
	$etat = $_POST['Envoyer'];
	$groupe= $_POST['groupe'];
	$personne= $_POST['Personne'];
var_dump($_POST);

	$req =$DB->prepare("UPDATE `xxxx`.`ny6dh_man_eleve` SET `id_etat` = :etat,`id_groupe` = :groupe WHERE `ny6dh_man_eleve`.`id` = [langue]ersonne");
$req->bindValue(':groupe', $groupe, PDO::PARAM_INT);
	$req->bindValue(':etat ', $etat, PDO::PARAM_INT);
	$req->bindValue(':personne', $personne, PDO::PARAM_INT);
	$req->execute();

Mais POURQUOI me renvoie t il "Valider" au lieu du 1 mis dans value? Même après plusieurs refresh de la page???

array(4) { ["etat"]=> string(1) "0" ["groupe"]=> string(1) "0" ["Personne"]=> string(3) "220" ["Envoyer"]=> string(7) "Valider" } 

Modifié par Owenn (17 Oct 2015 - 20:47)
Parce que ton value n'existe pas - il n'est pas interprêter en HTML car tu as oublié le quote fermant de class="btn btn-primary"
Modifié par J_B (18 Oct 2015 - 13:16)
Merci encore une fois!...autre question, pour modifier une ligne je dois absolument passer par du javascript? Car toutes les datatable editable que j'ai trouvé sur différents sites utilisent cela.....n'y aurait il pas un moyen uniquement avec du php (+Update)?
SALut, je te conseil d'ouvrir un autre sujet sur tes "autres questions" Smiley smile elles pourraient recevoir plus de visites ! parce que 3 pages ça peut faire reculer certains Smiley smile
Modifié par JENCAL (21 Oct 2015 - 14:05)
Pages :