18041 sujets
Questions générales et questions de débutants
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.
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)
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.
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é
Et il m'affiche
Qui correspond à
Donc..?
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 :
Qui correspond à cette ligne de code dont tu m'a fourni :
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'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
ç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
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
affff toujours le même pb....sachant qu'un smiley (code) s'est glissé dans ton codage lol :
WHERE id= ersonne");
Donc j'ai bien compris que
Modifié par Owenn (17 Oct 2015 - 11:30)
WHERE id= ersonne");
Donc j'ai bien compris que
[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 :
Pour celui ci
Bien sur
Merci BEAUCOUP J_B ta assuré!
Modifié par Owenn (17 Oct 2015 - 11:50)
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 PMerci BEAUCOUP J_B ta assuré!
Modifié par Owenn (17 Oct 2015 - 11:50)
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.
- 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 :
Et ensuite renvoie en POST par rapport au name
Mais POURQUOI me renvoie t il "Valider" au lieu du 1 mis dans value? Même après plusieurs refresh de la page???
Modifié par Owenn (17 Oct 2015 - 20:47)
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)