30

Nil (./18) :
Ton erreur est une "notice", c'est le niveau le plus bas d'"erreur", c'est uniquement message à caractère informatif. En général, on les vire même en phase de développement (sauf à vouloir faire du code TRES propre, ce qui n'est pas franchement la raison pour laquelle on fait du PHP biggrin.gif )

ergh #dead#
oué, en fait non ^^ ça fait des années que les notices sont activées sur mon poste de dev, et sur tous les postes de dev de gens qui ont bossé avec moi (et encore plus pour les postes de dev où c'est moi qui était responsable de la conf ^^ )
une notice, même si c'est soit disant "juste une info", ça apporte quand même une info intéressante, hein... une variable utilisée en lecture alors qu'elle n'a pas été écrite avant, c'est soit une erreur bête (mauvais index dans un tableau, faute de frappe -- et tu es content d'avoir une notice pour t'aider à le remarquer), soit une vraie erreur de logique dans ton code.

Enfin, en fait, même avis que Bob, plus ou moins :
- en dev, toutes les erreurs sont activées et affichées
- en prod, toutes les erreurs sont activées ; non affichées ; et loguées en fichier

D'ailleurs, pas sûr que notice soit le niveau "le plus bas" d'erreur : si tu prends PHP 5.3, E_STRICT n'est pas inclu à E_ALL, alors que E_NOTICE l'est (ça a changé avec PHP 5.4) ; j'aurais donc tendance à dire que "strict" est un niveau d'erreur "plus faible" que "notice"
Godzil (./24) :
(edit: wow les "auteurs" de php on ajouté un backtrace en cas de plantage ? eek.gif )

non ; c'est l'extension xdebug qui amène, entre autres :
- stacktraces en cas d'erreur / exception,
- var_dump amélioré
- debuggage \o/ (avec un vrai debugger dans l'IDE et breakpoints et tout, bien sûr)
- profiling
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

31

squale92 (./30) :
non ; c'est l'extension xdebug qui amène, entre autres :
- stacktraces en cas d'erreur / exception,
- var_dump amélioré
- debuggage \o/ (avec un vrai debugger dans l'IDE et breakpoints et tout, bien sûr)- profiling

Ça fait rêver l'an 2000 grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

32

comment ça ?
c'est pas tout à fait nouveau, xdebug...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

33

Je suis d'accord avec toi pour les E_NOTICE, mais le "problème" c'est quand tu reprends un projet fait par quelqu'un d'autre (en général pas pour PHP 5.3), et que tu te prends des tonnes de notifications simplement parce que le programme n'a pas été pensé comme ça. Obligation de désactiver les notice, sinon le programme n'est pas testable en l'état, et il est généralement impossible de tout corriger dans les temps (enfin, c'est vraiment une question de choix, hein... je ne suis pas dans un environnement critique, et j'ai souvent des délais de merde pour adapter des programmes à l'arrache).

Cela dit, phpStorm indique les variables inutilisées ou inutiles directement dans l'IDE \o/ cheeky
avatar

34

Merci de vos nombreux messages j'ai ( en théorie ) appliqué vos bon conseils voisi ce que donne mon code :

<?php

unset($_SESSION['choix']);

if(isset($_POST['choix']))
{
if($_POST['choix'] == "1") $_SESSION['choix'] = "vous avez choisi 1";
else if($_POST['choix'] == "2") $_SESSION['choix'] = "vous avez choisi 2";
else if($_POST['choix'] == "3") $_SESSION['choix'] = "vous avez choisi 3" ;
else if($_POST['choix'] == "4") $_SESSION['choix'] = "vous avez choisi 4";
else if($_POST['choix'] == "5") $_SESSION['choix'] = "vous avez choisi 5";
else $_SESSION['choix'] = "Choix non référencé";
}
else $_SESSION['choix'] = "Je suis nul en code";

echo $_SESSION['choix'];
?>
<br><br>
Salut Tu es à l'accueil de mon site (index.php). Tu veux aller sur une autre page

</body>
</html>



Et voici ce que donne le résultat :

rsultatr.png


Mes $_POST ou mes $_SESSION sont forées car elle n'importent aucune données de mon html ... J'ai beau chercher ... je ne trouve pas
Très grand médiocre.

35

Utilise un outil pour inspecter les requêtes envoyées (Firebug, les outils de développement de Chrom{e/ium}, Fiddler, peu importe) et vérifie que ta page envoie bien "choix" en POST. À condition d'avoir effectué la correction proposée par Nil (./10) ça devrait fonctionner.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

36

Pour voir le contenu des tableaux $_SESSION et $_POST, n'oublie pas que tu as la fonction print_r($array). Comme ça envoie du texte préformaté, je te conseille de te faire une petite fonction qui m'est personnellement indispensable :
function array_display($array) { echo "<pre>"; //Pas de contrôle sur le type : si ça n'est pas un tableau, ça ne lève pas d'exception print_r($array); echo "</pre>; }
avatar

37

rsultat.png

3i9khe2i.gif





Merci !!! J'ai enfin résolu ce problème qui me pourissait la vie , franchement merci wink dingue
Très grand médiocre.

38

Le problème venais , en fait de mon sumbit , et de mon php qui était mal formulé , et aussi de ma session ... que des petites fautes de codes toutes bêtes en fait , mais grâce a vous je vais pouvoir avancer !
Très grand médiocre.

39

Ha oui, donc PHP de base est toujours aussi facile a debugger, ça me rassure! (et l'interface pas pro du tout me semblait bizzare, les auteurs de PHP on plus de gouts, IE: '<b>Notice:</b> Vous vous etes planté ici.' #loin#)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

40

#alandon# #Awesome#

#ma contribution#
avatar

41

je me demandais pourquoi tu avais posté sur un topic php cheeky

42

Tiens, Fletsh a oublié de prendre ses pilules hum2
avatar

43

Bientôt encore un autre mini-yNaute ? grin

44

Je ne parlais pas de CES pilules, je ne suis pas au courant, pour le coup embarrassed
avatar

45

Tu pourrais dire "faire l'amour", au lieu de parler de coup, enfin quand même embarrassed

46

Toi, va vite dire à ta femme que tu es en manque, au lieu de te tripoter sur les mots #ohii#
avatar

47

oui , le ( ATTENTION FORUM ADDICTIF ) est vraiment a prendre au sérieux
Très grand médiocre.

48

Bienvenue dans le vortex !
avatar

49

protoss imba

50

Mauvais sujet embarrassed
avatar

51

52

Tiens, pourquoi ils ont retiré le Temporal Rift du jeu ? C'était über-classe sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

53

Folco > Arf, crotte, chuitronil sad
avatar

54

Salut salut , Nouvelle prise de tete sur mon php , et lorsque comment sa marche est impuissant , me voici devant vous cher yaronetien , a genoux en vous suppliant de m'aider ...

voila mon problème

je désire faire un bête calcul avec des valeurs dans des $_sessions
<?php session_start() ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="fr"> <head> <title>Configurateur Individuel : choix des platines</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery.js"></script> </head> <body> <h1>Projet Collectif</h1> <?php unset($_SESSION['NBRDB']); unset($_SESSION['CALCNBRDB']); unset($_SESSION['CALCF1']); if(isset($_POST['NBRDB'])) { if($_POST['NBRDB'] == "1") $_SESSION['NBRDB'] = "Vous avez choisi 1 batiment" ; else if($_POST['NBRDB'] == "2") $_SESSION['NBRDB'] = "Vous avez choisi 2 batiment" ; else if($_POST['NBRDB'] == "3") $_SESSION['NBRDB'] = "Vous avez choisi 3 batiment" ; else if($_POST['NBRDB'] == "4") $_SESSION['NBRDB'] = "Vous avez choisi 4 batiment" ; else if($_POST['NBRDB'] == "5") $_SESSION['NBRDB'] = "Vous avez choisi 5 batiment" ; else if($_POST['NBRDB'] == "6") $_SESSION['NBRDB'] = "Vous avez choisi 6 batiment" ; else if($_POST['NBRDB'] == "7") $_SESSION['NBRDB'] = "Vous avez choisi 7 batiment" ; else if($_POST['NBRDB'] == "8") $_SESSION['NBRDB'] = "Vous avez choisi 8 batiment" ; else if($_POST['NBRDB'] == "9") $_SESSION['NBRDB'] = "Vous avez choisi 9 batiment" ; else if($_POST['NBRDB'] == "10") $_SESSION['NBRDB'] = "Vous avez choisi 10 batiment" ; else if($_POST['NBRDB'] == "11") $_SESSION['NBRDB'] = "Vous avez choisi 11 batiment" ; else if($_POST['NBRDB'] == "12") $_SESSION['NBRDB'] = "Vous avez choisi 12 batiment" ; else $_SESSION['NBRDB'] = "erreur"; } else $_SESSION['NBRDB'] = "erreur"; echo $_SESSION['NBRDB']; if(isset($_POST['CALCNBRDB'])) { if($_POST['NBRDB'] == "1") $_SESSION['CALCNBRDB'] = intval(1); else if($_POST['NBRDB'] == "2") $_SESSION['CALCNBRDB'] = intval(2); else if($_POST['NBRDB'] == "3") $_SESSION['CALCNBRDB'] = intval(3); else if($_POST['NBRDB'] == "4") $_SESSION['CALCNBRDB'] = intval(4); else if($_POST['NBRDB'] == "5") $_SESSION['CALCNBRDB'] = intval(5); else if($_POST['NBRDB'] == "6") $_SESSION['CALCNBRDB'] = intval(6); else if($_POST['NBRDB'] == "7") $_SESSION['CLACNBRDB'] = intval(7); else if($_POST['NBRDB'] == "8") $_SESSION['CALCNBRDB'] = intval(8); else if($_POST['NBRDB'] == "9") $_SESSION['CALCNBRDB'] = intval(9); else if($_POST['NBRDB'] == "10") $_SESSION['CALCNBRDB'] = intval(10); else if($_POST['NBRDB'] == "11") $_SESSION['CALCNBRDB'] = intval(11); else if($_POST['NBRDB'] == "12") $_SESSION['CALCNBRDB'] = intval(12); else $_SESSION['NBRDB'] = "erreur"; } else $_SESSION['NBRDB'] = "erreur"; $_SESSION['CALCF1'] = $_SESSION['CALCNBRDB']+$_SESSION['CALCNBRDB']; echo $_SESSION['CALCNBRDB']; echo $_SESSION['CALCF1']; ?> </body> </html>

et voici ce que l'on me sort :

sanstitreao.png

le problème viens visiblement de mes intval ( oui je suis une burne en code ((pour rester poli )) )

je vous supplie oh grand fréquenteurs yaronettiens de bien vouloir me dépanner dans mon honorable quête #prosternation#
Très grand médiocre.

55

Bon, un premier commentaire : la succession de if comme ça, ça fait un peu sale, pourquoi tu ne fais pas un switch ?
Ensuite, pourquoi tu utilises intval alors que tu n'utilises que des entiers ?! Tu demandes la valeur entière de 1, c'est un peu inutile...

Ici, je pense que tu t'es planté (ligne 42) :
42 if(isset($_POST['CALCNBRDB']))
Alors que tu travailles avec $_POST['NBRDB'])...


Ah, et du coup, pourquoi, pour la seconde partie, tu ne fais pas
if(isset($_POST['NBRDB']))
{
$_SESSION['CALCNBRDB'] = $_POST['NBRDB'];
}

Et à la fin, tu devrais peut-être voir à remplacer
$_SESSION['CALCF1'] = $_SESSION['CALCNBRDB']+$_SESSION['CALCNBRDB'];
par
$_SESSION['CALCF1'] = $_SESSION['CALCNBRDB']*2;
Ca n'est pas que ça change énormément de choses au niveau performances (j'imagine que le système de cache de PHP doit rendre l'opération à peine plus lente en faisant deux accès au tableau), mais ça évite de risquer de te planter si tu dois corriger ton code. C'est typiquement le genre d'endroit où, si tu fais évoluer le code, tu vas changer le nom d'une clé à un endroit mais pas à l'autre.
avatar

56

houlala oui j'ai vu ma grosse bourde , je planche sur une utre option mais merci de tes conseils , sa n'aurais jamais marché autrement ...
Très grand médiocre.

57

sanstitreleu.png

sa vas tout de suit emieu merci ! grin

c'était bien le :" if(isset($_POST['CALCNBRDB']))
Alors que tu travailles avec $_POST['NBRDB'])... "

qui faisait tout planter

merci encore , yaronet est selon mes calculs 40000 fois plus efficace que le site du zéro ( ce calcul ne prend pas en compte le malus des réponses stupides que l'on m'ai donné sur ccm )

et encore merci ! top
Très grand médiocre.

58

ps :

le $_SESSION['CALCF1'] = $_SESSION['CALCNBRDB']+$_SESSION['CALCNBRDB'];

n'est pas mis la par hasard , je voulais m'assurer du même coup que je pouvais calculer des sessions entre eux et ne pas les manipuler individuellement
Très grand médiocre.

59

RE chers amis !

Voila petite question assez conne mais pas tant que cela , voila le topo : on a 600 logements ( dixit le code :: ) =

Je veux <SELECT name="NBRDB" size="10"> par batiment(s)
<OPTION value="1">1 logement
<OPTION value="2">2 logements
<OPTION value="3">3 logements
<OPTION value="4">4 logements
<OPTION value="5">5 logements
<OPTION value="6">6 logements
<OPTION value="7">7 logements
<OPTION value="8">8 logements
<OPTION value="9">9 logements
<OPTION value="10">10 logements
<OPTION value="11">11 logements
<OPTION value="12">12 logements
<OPTION value="13">13 logements
<OPTION value="14">14 logements
<OPTION value="15">15 logements
<OPTION value="16">16 logements
<OPTION value="17">17 logements
<OPTION value="18">18 logements
<OPTION value="19">19 logements
<OPTION value="20">20 logements
<OPTION value="21">21 logements
<OPTION value="22">22 logements
<OPTION value="23">23 logements
<OPTION value="24">24 logements
<OPTION value="25">25 logements
<OPTION value="26">26 logements
<OPTION value="27">27 logements
...
...
...
*se tire une balle*


y as t'il un moyen d’éviter que je tape 600 lignes a chaque fois que je dois manier ces 600 logement ? Par exemple une petite fonction toute bète qui répète le même phrase en incrémentant de1 la value J4USQUA 600 ^^ § , je n'ai pas trouvé sur google , et ccm ... bref
Très grand médiocre.

60

Moi je vois surtout un problème plus fondamental : une liste de 600 choix, sérieusement ? grin (surtout pour choisir une valeur purement numérique)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo