cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 2013
-
30 juin 2011 à 19:15
Gaetan777 -
6 avril 2019 à 20:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
kammdem
Messages postés2Date d'inscriptionmardi 16 février 2010StatutMembreDernière intervention25 février 2015 26 sept. 2013 à 09:32
@ayoubshadow
je suis debutant php j'aimerais savoir comment afficher les informations de ma base de données sur forme de tableau comme tu l'as fait. En fait je ne comprends pas ta fonction Edition ect..
Merci d'avance
bahrounitarek
Messages postés3Date d'inscriptionsamedi 29 mai 2010StatutMembreDernière intervention26 mars 2012 26 mars 2012 à 16:38
bonjour,
@ayoubshadow
tu peut me donner le diagramme de classe de ton application ? j'ai y besoins
cordialement
bahrounitarek
Messages postés3Date d'inscriptionsamedi 29 mai 2010StatutMembreDernière intervention26 mars 2012 26 mars 2012 à 16:35
bonjour,
@ayoubshadow
tu peut me donner le diagramme de classe application de ton a? j'ai y besoins
cordialement
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 4 juil. 2011 à 19:22
Si c'est pour laisser un code horrible à lire et truffé de failles, je vois pas pourquoi ça nous "servirait" (cf description). Beaucoup seront tentés de reprendre bêtement le code-source dans trop faire attention ... [[Rude, peut-être mais réaliste. J'ai déjà vu les effets d'exemples pourris que tout le monde reprend dans d'autres langages de prog, voilà pourquoi je dis ça]].
Améliore ton appli, ça sera bénéfique pour toi et le reste de la communauté (si t'as des questions, n'hésite pas à les poser sur le forum).
ayoubshadow
Messages postés3Date d'inscriptionmardi 25 janvier 2011StatutMembreDernière intervention 4 juillet 2011 4 juil. 2011 à 14:24
merci beaucoup pour vos conseils, je tacherai d'éviter ces erreurs la prochaine fois.
cs_stay
Messages postés493Date d'inscriptionjeudi 7 juillet 2005StatutMembreDernière intervention24 mai 20174 4 juil. 2011 à 12:11
Bonjour à tous,
Très bonne analyse @emilia123.
@ayoubshadow, tu n'as pas fait d'erreur en n'utilisant pas la fonction foreach.
Tu as utilisé la fonction while pour toutes tes requêtes et vue l'utilité, c'est très bien.
Je disais, qu'il y avait aucun foreach dans toute l'application et que je n'avais jamais vu cela pour une raison précise.
Dans une application importante, il y a énormément d'informations qui peuvent être utilisées de plusieurs façons.
Comme par exemple, un breadcrumb : http://fr.wikipedia.org/wiki/Fil_d%27Ariane_%28ergonomie%29. La navigation, qui est récupérée dans plusieurs tables via une requête SQL ou plusieurs, est reprise dans un foreach pour être filtrée.
Et donc, on peut y renvoyer quelque choses de différent. Comme un breadcrumb, alors que cette même requête avait servie pour le menu principal.
Un array (comme je l'ai expliqué sur un post précédent), peut être modifié à la volée pour retourner quelque chose de différent.
On peut aussi imaginer un menu d'un site multilingue qui dans le champ langue d'une table a des valeurs comme, des codes ISO.
Exemple : "fr,en,de".
Dans un foreach, on pourrait modifier les valeurs à retourner en "Français,Anglais,Allemand".
Ce qui est intéressent avec un foreach, c'est la récupération des clés/valeurs.
foreach($arrayTest as $key => $value) {}
À ne pas oublier, cette application que tu proposes était soi-disant initié.
J'espère avoir pu répondre à ta question ?
cs_emilia123
Messages postés122Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 5 janvier 2009 4 juil. 2011 à 07:44
Bonjour,
Je ne ferais qu'un seul commentaire (rude, mais il faut le dire)....
Il ne faut pas utiliser ce code dans l'état.
Il y a (comme évoqué au dessus) de GROSSES failles de sécurité dans les requêtes SQL.
On trouve des choses comme cela :
# $id=$_GET['supp_stage'];
# mysql_query("delete from stage where numstage='$id'");
Que se passe t il si je passe
1' or '1'='1
en valeur pour $_GET['supp_stage']... la réponse est simple, cela vide la table des stages.
Il ne doit JAMAIS JAMAIS JAMAIS y avoir de valeur utilisateur directement dans les requêtes SQL.
- le minimum est d'utiliser mysql_real_escape_string($var) pour sécuriser la variable passée à la requête, mais c'est spécifique à mysql.
- sinon un petit htmlspecialchars($var) à minima pour empêcher le passage de ' ou de " ceci étant fonctionnel pour diverses bases
Le mieux étant quand même de formater chaque variable en fonction du type attendu.
ex : toutes les variables de type numérique, utilisé dans une requête SQL devrait être ajouté avec "intval($var)" pour être sur que la requête n'est pas en danger, et qu'aucun caractères spécial ne peut être utilisé.
De plus, il ne faut pas penser qu'un select non sécurité n'est pas forcément très dangereux, car c'est faux.
Si on est libre de passer ce qu'on veut, on peut transformer un simple select, en un affichage de n'importe quelle info de la base via un " union " qui permet de récupérer d'autres infos que celles de la table du select d'origine.
Donc le coté "niveau Initié" est à revoir.
Bonne continuation quand même...
EM.
ayoubshadow
Messages postés3Date d'inscriptionmardi 25 janvier 2011StatutMembreDernière intervention 4 juillet 2011 3 juil. 2011 à 23:11
Merci pour vos conseils, j'aurais du faire niveau "Débutant" :), je vous informe que c'est mon premier projet en php. seulement j'ai po compris l'utilité de "foreach" dans l'application, ou est ce que j'aurais du l'utilisé?
cs_stay
Messages postés493Date d'inscriptionjeudi 7 juillet 2005StatutMembreDernière intervention24 mai 20174 3 juil. 2011 à 09:53
L'objet est très utile, c'est de plus utile quand l'application prend une ampleur importante.
Mais ici, on parlait de l'utilité du foreach, qui gère aussi très bien l'objet dans ça la boucle.
@ghuysmans99, tu peux me donnée une solution alternative ?
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 2 juil. 2011 à 22:43
@Stav : On peut vivre sans foreach, tu sais ... Perso je ne m'en sers presque jamais. Pour le reste je suis d'accord avec toi ;)
cs_stay
Messages postés493Date d'inscriptionjeudi 7 juillet 2005StatutMembreDernière intervention24 mai 20174 2 juil. 2011 à 17:37
Bonjour à tous,
Ayoubshadow, tu dis que tu as créé ceci en 2ème année d'étude. Mais ce code est vieux de chez vieux.
Pour ma part, je ne vois rien d'initié.
Le code HTML est mauvais, même horrible.
Tu as mis ceci en niveau initié ???
Tu as imbriqué la balise <html> deux fois sur la première page du site.
Le balise <head> est inexistante.
Tu as optimisé le rendu sur un seul navigateur.
Au niveau du css, tu fais pas mal d'erreurs mais, il y a de la maitrise.
Il ne te reste qu'à travailler ton inspiration pour le layout design du site.
Donc la pareil, pas initié.
La gestion des dossiers et fichiers sont inexistantes.
Tu as imbriqué tous les langages de programmations, ceci pour la maintenance c'est trop compliqué.
Donc pareil, pas initié.
La sécurité sur le site vers la base de donnée est inexistante.
Tout les POST sur le site sont des dangers pour la db.
http://en.wikipedia.org/wiki/SQL_injection Donc pareil, pas initié.
Pour le php que tu as écris, n'apporte rien à un débutant.
Aucune gestion de tableau, comme le menu principal qui ne vient pas de la DB.
Il y a aucun foreach dans toute l'application. J'ai jamais vue ça.
Donc pareil, pas initié.
Pour le référencement, tu n'as rien travaillé "URL et tag html".
Tu aurais mis "niveau débutant", je t'aurai expliqué cela d'une façon moins direct.
Mais bon, si tu prend ce que j'ai dis en considération, et que tu recodes le tout, cela pourrais aidée quelqu'un.
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 1 juil. 2011 à 10:56
Il te suffit de faire l'affichage du formulaire dans une fonction. Comme ça, un seul fichier ;)
ayoubshadow
Messages postés3Date d'inscriptionmardi 25 janvier 2011StatutMembreDernière intervention 4 juillet 2011 1 juil. 2011 à 10:03
Bonjour,
en ce qui concerne les infos de connexion, c'est une erreur de ma part, je l'avoue, mais pour le traitement des opérations(ajout_x, modif_x ... ), je crois que c'est mieux de les séparer pour pouvoir les modifier et les étendre facilement.
Merci pour les critiques ;).
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 30 juin 2011 à 20:18
Très mal codé en fait : impossible de changer les infos de connexion au serveur sans aller modifier tous les scripts PHP un par un, code pas facile à lire ...
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 30 juin 2011 à 19:15
Dommage pour les fautes d'ortho et la tonne de fichiers : ajout_x, modif_x, affiche(r)_x peuvent être regroupés !
Modifié le 6 avril 2019 à 20:42
27 mai 2018 à 02:43
tt ca fonctionne bien mais j n trouve pas acces d admin
cordialement
19 avril 2018 à 14:35
21 févr. 2018 à 05:54
11 mai 2017 à 14:55
merci
13 août 2016 à 13:52
2 juin 2016 à 18:51
19 avril 2016 à 09:24
17 févr. 2014 à 01:36
26 sept. 2013 à 13:05
26 sept. 2013 à 09:32
je suis debutant php j'aimerais savoir comment afficher les informations de ma base de données sur forme de tableau comme tu l'as fait. En fait je ne comprends pas ta fonction Edition ect..
Merci d'avance
26 mars 2012 à 16:38
@ayoubshadow
tu peut me donner le diagramme de classe de ton application ? j'ai y besoins
cordialement
26 mars 2012 à 16:35
@ayoubshadow
tu peut me donner le diagramme de classe application de ton a? j'ai y besoins
cordialement
4 juil. 2011 à 19:22
Améliore ton appli, ça sera bénéfique pour toi et le reste de la communauté (si t'as des questions, n'hésite pas à les poser sur le forum).
4 juil. 2011 à 14:24
4 juil. 2011 à 12:11
Très bonne analyse @emilia123.
@ayoubshadow, tu n'as pas fait d'erreur en n'utilisant pas la fonction foreach.
Tu as utilisé la fonction while pour toutes tes requêtes et vue l'utilité, c'est très bien.
Je disais, qu'il y avait aucun foreach dans toute l'application et que je n'avais jamais vu cela pour une raison précise.
Dans une application importante, il y a énormément d'informations qui peuvent être utilisées de plusieurs façons.
Comme par exemple, un breadcrumb : http://fr.wikipedia.org/wiki/Fil_d%27Ariane_%28ergonomie%29.
La navigation, qui est récupérée dans plusieurs tables via une requête SQL ou plusieurs, est reprise dans un foreach pour être filtrée.
Et donc, on peut y renvoyer quelque choses de différent. Comme un breadcrumb, alors que cette même requête avait servie pour le menu principal.
Un array (comme je l'ai expliqué sur un post précédent), peut être modifié à la volée pour retourner quelque chose de différent.
On peut aussi imaginer un menu d'un site multilingue qui dans le champ langue d'une table a des valeurs comme, des codes ISO.
Exemple : "fr,en,de".
Dans un foreach, on pourrait modifier les valeurs à retourner en "Français,Anglais,Allemand".
Ce qui est intéressent avec un foreach, c'est la récupération des clés/valeurs.
foreach($arrayTest as $key => $value) {}
À ne pas oublier, cette application que tu proposes était soi-disant initié.
J'espère avoir pu répondre à ta question ?
4 juil. 2011 à 07:44
Je ne ferais qu'un seul commentaire (rude, mais il faut le dire)....
Il ne faut pas utiliser ce code dans l'état.
Il y a (comme évoqué au dessus) de GROSSES failles de sécurité dans les requêtes SQL.
On trouve des choses comme cela :
# $id=$_GET['supp_stage'];
# mysql_query("delete from stage where numstage='$id'");
Que se passe t il si je passe
1' or '1'='1
en valeur pour $_GET['supp_stage']... la réponse est simple, cela vide la table des stages.
Il ne doit JAMAIS JAMAIS JAMAIS y avoir de valeur utilisateur directement dans les requêtes SQL.
- le minimum est d'utiliser mysql_real_escape_string($var) pour sécuriser la variable passée à la requête, mais c'est spécifique à mysql.
- sinon un petit htmlspecialchars($var) à minima pour empêcher le passage de ' ou de " ceci étant fonctionnel pour diverses bases
Le mieux étant quand même de formater chaque variable en fonction du type attendu.
ex : toutes les variables de type numérique, utilisé dans une requête SQL devrait être ajouté avec "intval($var)" pour être sur que la requête n'est pas en danger, et qu'aucun caractères spécial ne peut être utilisé.
De plus, il ne faut pas penser qu'un select non sécurité n'est pas forcément très dangereux, car c'est faux.
Si on est libre de passer ce qu'on veut, on peut transformer un simple select, en un affichage de n'importe quelle info de la base via un " union " qui permet de récupérer d'autres infos que celles de la table du select d'origine.
Donc le coté "niveau Initié" est à revoir.
Bonne continuation quand même...
EM.
3 juil. 2011 à 23:11
3 juil. 2011 à 09:53
Mais ici, on parlait de l'utilité du foreach, qui gère aussi très bien l'objet dans ça la boucle.
$objectTest = (object) array(
'test1' => 'Test 1 réussi',
'test2' => 'Test 2 réussi',
'test4' => 'Test 4 réussi'
);
print_r($objectTest);
foreach ($objectTest as &$test) {
$objectTest->test2 = 'Test 2 raté';
$objectTest->test3 = 'Test 3 réussi';
unset($objectTest->test4);
}
stdClass Object
(
[test1] => Test 1 réussi
[test2] => Test 2 raté
[test3] => Test 3 réussi
)
3 juil. 2011 à 09:07
3 juil. 2011 à 00:58
Dans un array, exemple :
$arrayTest = array(
'test1' => 'Test 1 réussi',
'test2' => 'Test 2 réussi'
);
foreach ($arrayTest as &$test) {
$test['test3'] => Test 3 réussi'
}
print_r($arrayTest);
array(
'test1' => 'Test 1 réussi',
'test2' => 'Test 2 réussi',
'test3' => 'Test 3 réussi'
)
@ghuysmans99, tu peux me donnée une solution alternative ?
2 juil. 2011 à 22:43
2 juil. 2011 à 17:37
Ayoubshadow, tu dis que tu as créé ceci en 2ème année d'étude. Mais ce code est vieux de chez vieux.
Pour ma part, je ne vois rien d'initié.
Le code HTML est mauvais, même horrible.
Tu as mis ceci en niveau initié ???
Tu as imbriqué la balise <html> deux fois sur la première page du site.
Le balise <head> est inexistante.
Tu as optimisé le rendu sur un seul navigateur.
Au niveau du css, tu fais pas mal d'erreurs mais, il y a de la maitrise.
Il ne te reste qu'à travailler ton inspiration pour le layout design du site.
Donc la pareil, pas initié.
La gestion des dossiers et fichiers sont inexistantes.
Tu as imbriqué tous les langages de programmations, ceci pour la maintenance c'est trop compliqué.
Donc pareil, pas initié.
La sécurité sur le site vers la base de donnée est inexistante.
Tout les POST sur le site sont des dangers pour la db.
http://en.wikipedia.org/wiki/SQL_injection
Donc pareil, pas initié.
Pour le php que tu as écris, n'apporte rien à un débutant.
Aucune gestion de tableau, comme le menu principal qui ne vient pas de la DB.
Il y a aucun foreach dans toute l'application. J'ai jamais vue ça.
Donc pareil, pas initié.
Pour le référencement, tu n'as rien travaillé "URL et tag html".
Tu aurais mis "niveau débutant", je t'aurai expliqué cela d'une façon moins direct.
Mais bon, si tu prend ce que j'ai dis en considération, et que tu recodes le tout, cela pourrais aidée quelqu'un.
1 juil. 2011 à 10:56
1 juil. 2011 à 10:03
en ce qui concerne les infos de connexion, c'est une erreur de ma part, je l'avoue, mais pour le traitement des opérations(ajout_x, modif_x ... ), je crois que c'est mieux de les séparer pour pouvoir les modifier et les étendre facilement.
Merci pour les critiques ;).
30 juin 2011 à 20:18
30 juin 2011 à 19:15