Auteur
Grafikart

122 Commentaires

1c7a3fd0815d9925039d843099218ce8?s=200&r=pg&d=mm
Donald Loignon, 19-04-2014 19:55:13 - Répondre

Comment faire pour remplacer le nom du id ?
WHERE " .$idname". =

Fd299a52b2dfaaae419048b7ed3d7d5d?s=200&r=pg&d=mm
TigerDesign, 19-09-2013 00:44:19 - Répondre

J'ai modifier model.php afin de l'adapté pour PDO; mais étant débutant je me demande si cela est correct, malgré le fait que cela soit fonctionnel.

Sinon excellent tutoriel... J'ai appris des choses.

Le code :

<?php
class Model{

public $table;
public $id;

public function read($fields=null){
if($fields==null){
$fields = "*";
}
global $DB;
$req = $DB->query("SELECT $fields FROM ".$this -> table." WHERE id=".$this -> id);
$data = array();
while($data = $req->fetch(PDO::FETCH_OBJ)){
foreach ($data as $k => $v) {
$this -> $k = $v;
}
}
}

public function save($data){
global $DB;

$result = "";
foreach ($data as $k => $v) {
if($k != "id"){
$result .="$k='$v',";
}
}
$result = substr($result,0,-1);

if(isset($data["id"]) && !empty($data["id"])){
$req = $DB->exec("UPDATE ".$this -> table." SET ".$result." WHERE id=".$data["id"]);
}
else {
global $DB;

unset($data["id"]);

$result2 = "";
foreach ($data as $k => $v) {
$result2 .="$k,";
}
$result2 = substr($result2,0,-1);

$result3 = "";
foreach ($data as $v) {
$result3 .="'$v',";
}
$result3 = substr($result3,0,-1);

$req = $DB->exec("INSERT INTO ".$this -> table." (".$result2.") VALUES (".$result3.")");
}

if(!isset($data["id"])){
$id = $this -> id;
$id = PDO::lastInsertId();
}
else {
$this -> id = $data["id"];
}
}

public function find($data){
global $DB;

$conditions = "1=1";
$fields = "*";
$limit = "";
$order = "id DESC";
if(isset($data["conditions"])) { $conditions = $data["conditions"]; }
if(isset($data["fields"])) { $fields = $data["fields"]; }
if(isset($data["limit"])) { $limit = "LIMIT ".$data["limit"]; }
if(isset($data["order"])) { $order = $data["order"]; }
$req = $DB->query("SELECT $fields FROM ".$this -> table." WHERE $conditions ORDER BY $order $limit");

$d = array();
while($data = $req->fetch(PDO::FETCH_ASSOC)){
$d[] = $data;
}
return $d;
}

public function delete($id = null){
global $DB;

if($id == null) { $id = $this -> id; }
$req = $DB->exec("DELETE FROM ".$this -> table." WHERE id=$id");
}

static function load($name){
require("$name.php");
return new $name();
}
}
?>

---------------------
Merci pour vos commentaires...

Fd299a52b2dfaaae419048b7ed3d7d5d?s=200&r=pg&d=mm
TigerDesign, 19-09-2013 01:08:51 - Répondre

j'ai modifier le code ici ->

if(!isset($data["id"])){
$id = "";
}
else {
$this -> id = $data["id"];
}

Dcf3c36cb6a654ef061ccafb9854aab1?s=200&r=pg&d=mm
karou, 21-07-2013 01:28:53 - Répondre

svp j'ai essayé avec un autre système pour créer ma propre mvc.est qu'il y a personne qui m'envoyer ce code là.du tutoriel

4268eb15dbb76e595f320f61776dfc0e?s=200&r=pg&d=mm
Koffi, 02-07-2013 14:07:33 - Répondre

Merci

A8d918261fd72411604024cf9718a248?s=200&r=pg&d=mm
Chrill, 21-06-2013 20:56:43 - Répondre

Bonsoir, voila je suis en train de créer mon model, mais je veux le faire avec pdo, et j'ai un petit problème :
dans mon core je créer un objet PDO que je stock dans un objet appelé $bdd où se trouve toutes les données pour me connecter à ma base de données. Et le soucis c'est lorsque que je veux exécuter une requête (avec query par exemple) il me donne une fatal error car il ne détecte pas un objet PDO. Je pense qu'il y a un petit soucis au niveau des require ou des utilisation des variable (créer une variable global ?) enfin bref voila un bout de code pour mieux comprendre ^^ :

core.php
-------------------------------------------------------------------
<?php
try
{
$bdd = new PDO('mysql:host=*****;dbname=****', '****', '****');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
require("model.php");
?>
----------------------------------------------------------------------
model.php
---------------------------------------------------------------------
<?php

class Model{

public $table;

public function read($fields=null){

if($fields==null)
{
$fields = "*";
}

$req = $bdd->query('SELECT '.$fields.' FROM '.$this->table.' WHERE id='.$this->id);
$data = $req->fetch(PDO::FETCH_ASSOC);
foreach ($data as $k => $v)
{
$this->$k = $v;
}
}

static function load($name){
require("$name.php");
return new $name();
}
}
?>
------------------------------------------------------------------------

Merci d'éclairer ma lanterne :D

A8d918261fd72411604024cf9718a248?s=200&r=pg&d=mm
Chrill, 22-06-2013 01:11:27 - Répondre

Bon j'ai trouvé une petite solution mais je pense que cela est assez "sale" : j'ai déclaré dans mon core.php $bdd étant une variable global, est-ce bien cela ?

8bc7784ced8ad7531dc23cbb2de6f2ec?s=200&r=pg&d=mm
menkouss, 14-03-2013 19:30:34 - Répondre

bonjour je suis un débutant alors vous trouverez peut être ma question débile,
quel IDE utilisiez vous dans le tuto?

828eef18ccbefbf1df8578f51740a459?s=200&r=pg&d=mm
Imillix, 06-04-2014 02:23:47 - Répondre

Salut, ce n'est pas moi qui ai fais le tuto mais je croix qu'il utilise NetBeans.

Cf0f9779a400db661f8f48f656a55ee4?s=200&r=pg&d=mm
Franck, 08-03-2013 17:52:41 - Répondre

Raaahhh !!
Très bon tuto comme toujours, mais mes lacunes font que je bloque désespérément au bout de 16mn.
J'ai créé ma class contact (c'est ainsi qu'elle s'appelle chez moi) exactement comme dans le tuto, exception faite que j'utilise des requetes préparées pour pdo.

class Contact{

public $table;
public $uid;

//fonction de selection de données à afficher
public function read($fields = null){
global $connexion;

if($fields==null){
$fields = "*";
}

try{
$req = $connexion->prepare("SELECT ".$fields." FROM ".$this->table." WHERE uid=".$this->uid);
$req->execute();
$data = $req->fetch(PDO::FETCH_ASSOC);
foreach ($data as $key => $value) {
$this->key = $value;
}
}
catch(PDOException $e){
echo $e->getMessage();
}
}
}

$contact = new Contact();

dans mon index, j'ai bien l'appel a core.php et la base est accessible (déjà fait les tests), et j'ai :

$contact->uid = 2;
$contact->table = 'contact';
$contact->read();
echo $contact->nom;

Malgré ça j'ai une erreur :

Notice: Undefined property: Contact::$nom in C:\wamp\www\contact3\index.php on line 23

la seule façon que j'ai trouvé pour afficher le résultat souhaité et de faire un

echo $contact->read('nom');

et de faire un return $value après la boucle foreach() dans ma classe.

Je pige pas....

Cf0f9779a400db661f8f48f656a55ee4?s=200&r=pg&d=mm
Franck, 08-03-2013 20:46:28 - Répondre

ça m'a couté mon après midi et mon début de soirée, mais j'ai trouvé mon erreur.
la boucle foreach contenait une erreur

$this->key = $value;

au lieu de

$this->$key = $value;

Je me mettrais des baffe des fois....

C8c7f5dc34525309ee61e35407d5177f?s=200&r=pg&d=mm
lordgodgiven, 27-02-2013 19:04:59 - Répondre

Bonjour,

J'ai suivi le tuto mais j'ai j'ai un bug, l'update ne fonctionne pas

<?php

class Model {

public $table;
public $id;


public function read($fields = null) {

if ($fields == null) {$fields = "*";}
$sql = "SELECT $fields FROM " . $this->table . " WHERE idUtilisateur=" . $this->id;
$req = mysql_query ( $sql ) or die ( mysql_error () );
$data = mysql_fetch_assoc ( $req );
foreach ( $data as $k => $v ) {
$this->$k = $v;
}
}
//Cette partie ne fonctionne pas, j'ai beau chercher mais rien
public function save($data) {

if (isset ( $data ["id"] ) && ! empty ( $data ["id"] )) {
$sql = "UPDATE " . $this->table . " SET ";
foreach ( $data as $k => $v ) {
if($k!="id"){
$sql.="$k='$v',";
}
}
$sql = substr ( $sql, 0, - 1 );
$sql .= "WHERE idUtilisateur=" . $data ["id"];
echo $sql;
}
}

public function find($data=array()){
$conditions = "1=1";
$fields ="*";
$limit = "";
$order = " DESC";
if(isset($data["conditions"])){$conditions = $data["conditions"];}
if(isset($data["fields"])){$fields = $data["fields"];}
if(isset($data["limit"])){$limit = "LIMIT ".$data["limit"];}
if(isset($data["order"])){$order = $data["order"];}
$sql="SELECT $fields FROM ".$this->table." WHERE $conditions ORDER BY $order $limit";
$req = mysql_query ( $sql ) or die ( mysql_error () );
$d=array();
while ($data = mysql_fetch_assoc ( $req )) {
$d[]=$data;
}
return $d;
}


public function delete($id){
if($id==null){$id = $this->id;}
$sql="DELETE FROM ".$this->table." WHERE idUtilisateur=$id";
mysql_query ( $sql ) or die ( mysql_error () );
}

static function load($name) {
require ("$name.php");
return new $name ();
}

}

?>

Quelqu'un peut il me dire ce qui ne va pas?

Merci

Cf0f9779a400db661f8f48f656a55ee4?s=200&r=pg&d=mm
Franck, 08-03-2013 17:55:30 - Répondre

Fais un echo de ta requete mysql pour qu'on voit ce qu'elle renvoie

8be627baf4fb8f9bffe1d84937d1a281?s=200&r=pg&d=mm
stormfire, 02-01-2013 19:32:53 - Répondre

Bien en me relisant j'avais oublié un $req devant mon mysql_query.Le seul message d'erreur qu'il me reste est:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1=1 ORDER BY position ASC' at line 1
=>

8be627baf4fb8f9bffe1d84937d1a281?s=200&r=pg&d=mm
stormfire, 26-12-2012 03:50:00 - Répondre

Trés bon tuto.Je débute,et arrive parfois à débugger mes erreurs de frappe.Par contre j'en ais une persistante et qui ne me permet pas d'utiliser le script.Pour le code :mysql_query($sql) or die(mysql_error()."<br />=>".mysql_query());il me retourne-->Warning: mysql_query() expects at least 1 parameter, 0 given in C:\wamp\www\mvc\model\model.php on line 62.Je suis sous wamp et php 5.4.3,et le manuel en ligne de php m'indique que mysql_query()ne serais plus adapté.Est-ce cela ou pas?

2385a909d1477c2f422f49694eeb09ca?s=200&r=pg&d=mm
Bizi, 18-11-2012 11:54:40 - Répondre

il est très bien ton tuto, il m'a permit de revoir les choses que j'ai zappé et commencer a dev en poo ^_^

Ea77c6205a415ce9d809004c408f1ab4?s=200&r=pg&d=mm
Seddik06, 13-11-2012 17:58:03 - Répondre

WAW, tu ma éclairer le chemin, merci et bonne continuation :)

686914a237b8c8c9a053bc35183705fb?s=200&r=pg&d=mm
MIMOS, 05-11-2012 04:05:43 - Répondre

Bonjour,merci pour ce tuto mais j'ai pas compris la partie de 20:14 jusqu'à 21:37 s'il vous plais voulez vous me l'expliquer surtout 21:28 jusqu'à 21:32 et merci.

686914a237b8c8c9a053bc35183705fb?s=200&r=pg&d=mm
MIMOS, 05-11-2012 04:02:01 - Répondre

Bonjour,merci pour ce tuto mais j'ai pas compris la partie de 20:14 jusqu'à 21:37 s'il vous plais voulez vous me l'expliquer surtout 21:28 jusqu'à 21:32 et merci.

4a97ba1f24cddd8bc14c17a31da86ae9?s=200&r=pg&d=mm
marcus wright, 19-08-2012 15:19:29 - Répondre

Merci bcp pour ce tuto c'est vraiment de la bombe. Moi qui m'intéresse beaucoup à la création de sites, ces enseignements me sont très utiles. Je suis un peu un jeune padawan.

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Red-One, 19-08-2012 00:41:57 - Répondre

Tutoriel très simple à comprendre.
Bien qu'aujourd'hui ces fonctions mysql soient obsolètes.

6330
Couss, 14-08-2012 10:46:31 - Répondre

Bon tuto mais c'est vrai que niveau accès des données de la class c'est pas très sécurisé.
le mieux serait de les mettre en protected ou private et faire les accesseurs ainsi que l'hydratation des objet
Mais pour une première approche on comprend assez rapidement.

F125bfe522d1c8338a83d190908dd619?s=200&r=pg&d=mm
attar, 24-06-2012 02:04:23 - Répondre

Tuto vraiment sympa. Le model principal peut être amélioré en passant éventuellement la variable $table renseignée qu'un constructeur initialise ($this->table=$table) ce qui évite la création de sous modèles.

C3d1caa0cb70d0bc16702c939cff2ba4?s=200&r=pg&d=mm
KTC, 22-06-2012 23:29:58 - Répondre

J'ai fait le tuto mais version PDO, un vrai casse tête car il faut intégrer la connexion dans les fonctions, du coup des quelques erreurs font leur apparition lors d'insertions etc etc ... Pourquoi ne pas l'avoir fait en PDo ^^

08946f14f68fbea944232ff6fe741f8c?s=200&r=pg&d=mm
Zilong, 03-06-2012 22:51:35 - Répondre

Merci beaucoup ! super tuto !

Da4645e83de4cd4a6df48fd1f1453922?s=200&r=pg&d=mm
Methzolo, 12-04-2012 04:25:53 - Répondre

Bonjour,

Après maintes recherches d'un bon tuto php oop,je suis tombé sur votre vidéo qui me sera d'une grande utilité je pense.
Ainsi, j'ai quelques questions pour un petit projet que je dois réaliser avant fin mai. Ce projet doit etre fait en php mais j'ai vraiment envie d'utiliser le MVC. si je peux avoir votre email ou skype ce serait tres sympa de votre part.
Merci d'avance et un grand merci pour ce tuto.

Bien a vous,

Methzolo

5ae53218232dd7a2da293f7dc2599550?s=200&r=pg&d=mm
aromey, 12-04-2012 02:37:51 - Répondre

nn

610b5adfdfbe4376cd1387afacd591e9?s=200&r=pg&d=mm
ilyess2002, 15-03-2012 21:13:26 - Répondre

Vraiment merci

3b0bbaf33796ebd6f069ff5e34b51279?s=200&r=pg&d=mm
flog85, 13-02-2012 23:57:58 - Répondre

Bonjour,
je suis bloqué à 25min53 sec, on m'indique une erreur dans le fichier index.php à la ligne 15.
Il s'agit de cette ligne : <?php $id = $_GET["id"]; $Category->id=$id; $Category->read(); ?>
Je ne vois pas d’où vient le problème, quelqu'un peut m'aider?

D73f824d7921f4b0b518ebad981d1dbc?s=200&r=pg&d=mm
jessyjames05, 08-02-2012 03:37:56 - Répondre

Super ce tuto,franchement merci a toi !!!
Maintenant je commence a mieux comprendre la POO !

F574f9a654a53d1e29ef5eef01ddee38?s=200&r=pg&d=mm
pierrot, 26-01-2012 23:21:31 - Répondre

Super tuto! Merci beaucoup!
Je comprend mieux l'intérêt de la POO et je sens que je vais pas tardé à passer sérieusement au model MVC :D
Merci encore pour tout tes super tutos!

9d5c2e32bf8c7760f4e4b016d50ca0eb?s=200&r=pg&d=mm
Julien_xD, 07-01-2012 07:14:49 - Répondre

Niquel !

Dd562e37f3f61b0bf4d75efc50122bd8?s=200&r=pg&d=mm
Davidou2a, 21-11-2011 12:19:20 - Répondre

Salut,
A propos de la fonction find, je pense qu'au lieu d'utiliser :

$conditions = "1=1";
if(isset($data['conditions'])){$conditions = $data['conditions']; }

Il aurait peut être dans un souçi de lecture du code (ou cosmétique) plus simple d'écrire avec un opérateur ternaire?

$conditions = (isset($data['conditions'])) ? $data['conditions'] : "1=1";

ça tient en une seule ligne, et ça évite d'assigner une variable au début et d'éventuellement la changer si l'index prévu dans le tableau est valable.

Remarque également valable pour les autres valeurs du tableu :D

Amicalement.

207effc6109158432446bfaf1cad21aa?s=200&r=pg&d=mm
matista19, 10-10-2011 21:45:45 - Répondre

super ce tuto sur le models!! j'ai fait a peut pret le meme sauf que j'ai poussé plus loin avec plus de details et des requetes plus pointu avec des jointure sur select ...
mais bon merci grafikart de m'avoir mis sur la bonne voix comme d'habitude !! big up

Ac422f222c9a59ce5a00e75af7473f19?s=200&r=pg&d=mm
beegees, 10-08-2012 21:55:02 - Répondre

Salut,

Je serais très intéressé de voir ton model, tu penses que c'est possible ? Merci d'avance.

3d353f2b29201e3e820c64532fae1ee6?s=200&r=pg&d=mm
ArmikOfficiel, 02-09-2011 12:06:07 - Répondre

J'ai regardé pas mal de vos tuto, et je vous en remercie d'ailleur.

Et j'ai une petite demande? très petite même ! bah si petite que vous ne l'avez même pas remarquez ! non je ne parle pas du nano non plus XD!la demande est la suivante :

<!--//* Auriez vous l'amabilité de nous faire DES Tutoriaux sur :
ASP.NET
et les autres languages WEB
*//-->

5a80879361b4bf0c913f71c1f23b4fb5?s=200&r=pg&d=mm
ddlink, 24-08-2011 02:00:25 - Répondre

et aussi svp : a quoi sert la fonction read une fois qu'on a écrit find() ??? :s
merci pour votre aide

5a80879361b4bf0c913f71c1f23b4fb5?s=200&r=pg&d=mm
ddlink, 24-08-2011 01:39:38 - Répondre

je te remercie pour ce fabuleux site ^^
j'aimerai poser une question qui m'intrigue bcp : pourquoi crée a chaque fois une nouvelle class ( extension du model ) alors qu'on pourrais simplement a chaque fois renseigné un nouveau nom de table...
du genre $model->table = "nouvelletable" ; puis on continue le travail...

c'est possible ou c'est moi qui n'ai pas bien compris le principe ? merci

E9b8988d460e6eb8d6b6933de2e56b39?s=200&r=pg&d=mm
bilou, 03-08-2011 12:42:03 - Répondre

Bonjour,
Le tuto est bien fait et bien expliqué également. Cela dit, quelle est l'utilité de "this" dans cette instruction "$this->$k=$v;". J'ai enlevé le "this" et j'ai eu le même résultat "$k=$v;".

6010b5201edd22bafdd19c1abf5131b9?s=200&r=pg&d=mm
Joshua, 24-07-2011 23:44:53 - Répondre

Bonjour,

Très bon tutoriel en effet, comme ça a pu être dit plus bas.
La petite question que je me pose est la suivante : à quoi fait référence le $sql .= "$k = '$v'"; ?<
De plus, pourquoi préfixer par .$this ?

Encore bravo pour cet excellent tutoriel ! ;-)

49c706c5b4327f12e7d1096d59c83700?s=200&r=pg&d=mm
drakonbill, 18-05-2011 20:37:44 - Répondre

Super cours ! Merci de mettre tous ces cours à notre disposition pour un prix très raisonnable , je suis en licence informatique et ça va bien m'aider ! Je fais tourner !

7f85136af87c61787834c829037535d0?s=200&r=pg&d=mm
ralal, 30-04-2011 20:22:26 - Répondre

Très bon tutoriel,merci beaucoups.
Pourriez-vous faire un tuto complet sur la creation de l'espace membre avec le MVC!
Sinon bonne continuation et merci encore,ca m'a beaucoup aidé tes tutos!!!!

F855352f41f606554f7630d2c8b1c8af?s=200&r=pg&d=mm
gl0um, 14-04-2011 17:48:42 - Répondre

Tutoriel très intéressant et pratique :)
ty

66a08893d2eab3751fc6d8969c5a2ea2?s=200&r=pg&d=mm
sakhr, 06-04-2011 08:48:46 - Répondre

a vrais dire , ceci est impecable, vous ne laissez rien a rectifier .
merci bien et bonne continuation

Fa7f9848e02f649f6bf5d146e2467a50?s=200&r=pg&d=mm
domix24, 12-03-2011 21:48:58 - Répondre

Bonjour,
j'ai une erreur lorsque je ne met pas ?id=
par ici pour m'aider -> [url=http://www.grafikart.fr/questions/1154]http://www.grafikart.fr/questions/1154[/url]

A44ef22d0436126ea4652c0db0e77f8d?s=200&r=pg&d=mm
Tilo, 08-03-2011 01:29:13 - Répondre

Bonjour,

Déjà un grand bravo pour ce tuto qui traite d'un sujet très peu abordé.
J'ai une petite question pour toi :
Comment fais tu si tu as plusieurs classes avec des relations ?

Par exemple une classe User qui contient un attribut Cars, qui est un tableau d'objets Car.

Ça m’intéresserai pas mal de savoir comment tu gère ça au niveau de l'objet Model, notamment pour la récupération d'une liste d'user ou pour la sauvegarde?

Merci d'avance

A543249bac5be6e4d6c72c24df823554?s=200&r=pg&d=mm
Aurox, 25-02-2011 02:43:24 - Répondre

Haaa un tuto que je cherchais depuis un petit moment, je pense que je vais le regarder entièrement demain :)
PS: J'ai remarqué que mon wamp aimait pas trop la POO, il me met des "Parse Erreur" là où il n'y en a pas dès qu'il doit lire des classes, créer des objets ou autres éléments utilisés en POO. Quelqu'un sait d'où ça peut venir?
( Et ne me dites pas que j'ai fait des fautes dans mon code, parce que j'ai testé la chose sur un CMS fonctionnant très bien et sur le code utilisé par grafi dans un tuto sur PDO que j'ai vérifié pendant 30 min pour vérifier que j'avais bien recopié à l'identique ).
Sinon, merci pour le tuto grafi :)

95ac966c44592a61b9ceedcebb9ca989?s=200&r=pg&d=mm
bocaliste, 19-02-2011 22:43:33 - Répondre

Merci beaucoup pour ce tutoriel très utile !

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
@ntonin, 19-02-2011 17:56:56 - Répondre

Edit : désolé du double post c'est moi qui buguait.

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
@ntonin, 19-02-2011 17:55:58 - Répondre

La vidéo ne charge pas chez moi.

0114a06274ee442d98037eefe7eb4d99?s=200&r=pg&d=mm
siriu, 27-01-2011 14:15:19 - Répondre

Super tuto ...
Est ce que quelqu'un l'a reproduit avec PDO ?
Car, je vais le faire mais je me sens juste et j'aimerai bien comparer :(

69195b2112795a60342cabb22c537cf9?s=200&r=pg&d=mm
Orsam, 27-01-2011 09:05:01 - Répondre

Bonjour,

Peut-on passer une variable à une fonction static et si oui, comment faire ?
class page{
static function lien($NumeroPage){
echo "voici le lien ".$NumeroPage;
}
}
Merci
Orsam

69195b2112795a60342cabb22c537cf9?s=200&r=pg&d=mm
Orsam, 28-01-2011 08:17:12 - Répondre

C'est bon j'ai trouvé !! j'ai juste oublié "public" avant "Static" pour pouvoir l'utiliser comme ça :

page::lien(9);

Orsam

7603136640ffe596574f3cb7b250f0ea?s=200&r=pg&d=mm
Styffeur, 02-12-2010 13:51:34 - Répondre

Bonjour, déjà très bon tutoriel parmi d'autre que j'apprécie sur se site.

moi je suis débutant dans la POO, et je me trouve sur un petit probleme mineur qui m’empêche d'avancer plus loin sur le tutoriel.

je n'arrive pas avoir le résultat du 17 minutes et 14 sec.

SQL me retourne cette erreur:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM categories WHERE id = 2' at line 1

j'ai essayer sur plusieurs serveur 1&1, net@vous, en local.
faut-il faire une config pour MySql ?

Merci d'avance.

81fbcbc091dfcf2c2dcd2ad1644a63d4?s=200&r=pg&d=mm
zet, 12-11-2010 22:42:55 - Répondre

Bonjour,

J'ai découvert ton site vraiment par hasard car je cherchais des info sur la POO.
Me lançant dans un BTS (eh oui il faut savoir se remettre en cause même à 50 ans ... ), j'avais besoin de connaitre cet aspect de l'informatique. Issu du monde AS 400 cela est totalement nouveau pour moi. Je voulais tout simplement te remercier pour tes tutoriels qui sont très bien fait. Jusqu'à maintenant je n'ai trouvé que des constructions de classe pour des voitures et autres mais très franchement de là à le rendre concret il y a du travail... Encore merci car grâce a ton travail j'ai enfin pu me rendre compte de l'intérêt que ça représente.

Chapeau bas !!!

B7b38e5f10e4fada757dbbd6b57486d8?s=200&r=pg&d=mm
AzO, 01-11-2010 00:10:05 - Répondre

Bonjour à tous, Très bon tutoriel. J'ai une question avec la fonction save tu t'en sert avec $_POST comment peux on faire pour s'en servir autrement.

Car j'aimerai faire ceci :
mysql_query('UPDATE video SET vus=vus+1 where id="'.$id.'" ');

Mais par l'intermédiare de la fonction save est ce possible ? Merci d'avance de vos réponse

9c480ac8f589dd2909e2bd0383be0807?s=200&r=pg&d=mm
monkeydluffy, 14-10-2010 18:30:57 - Répondre

Bonjour à tous,

J'ai bien suivi le tutoriel et il marche vraiment parfaitement....
Donc j'ai voulu continuer pour une autre table dans la même base de données, et la ca ne marche plus...

J'ai crée un nouveau fichier index.php, et j'ai crée le model lié à ma table, j'ai toujours le même message :
"Fatal error: Class 'famille' not found in E:\wamp\www\PDO\models\model.php on line 101"
Je ne comprends pas pourquoi il ne trouve pas la classe alors qu'elle est bien crée...Si une personne pouvait m'indiquer d'où peut provenir cette erreur.

44d42b9ccccb0cfd027a3877e971ac7f?s=200&r=pg&d=mm
hamlet, 17-09-2010 19:50:35 - Répondre

Bonjour,
Tout d'abord, félicitations pour vos tutos vidéos, ils sont très intéressants.
J'aurais une question (sans passer par les modèles) :
j'ai 3 tables => PRODUITS, FAMILLES et MARQUES
La table PRODUIT contient (outre les champs de bases, à savoir, id et nom) un champ famille_id (clé étrangère de la table FAMILLES) et un champ marque_id (clé étrangère de la table MARQUES).
Je voudrais afficher dans un tableau HTML la liste des produits avec les champs mais avec les champs nom des tables FAMILLES et MARQUES correspondant...
Est-ce que je dois passer par des jointures dans la classe Produit ?
Ou bien utiliser des classes Marques et Familles et dans ce cas, comment faire la correspondance ?
Je sais le faire en PHP "normal" mais je suis perdu avec les objets....

Merci d'avance pour toute l'aide que vous pourriez me donner ;)
@ bientôt !

44d42b9ccccb0cfd027a3877e971ac7f?s=200&r=pg&d=mm
hamlet, 17-09-2010 22:49:15 - Répondre

Bon, je me réponds à moi-même, ayant trouvé la solution...
En fait, au départ, je faisais bien ma jointure dans ma classe Produit mais je ne récupérais que l'id et le nom de la marque. Après analyse, il se trouve que les noms des champs de ces 3 tables ont le même nom... et donc les valeurs étaient écrasées par les dernières (marque.id -> famille.id -> produit.id etc...) dans le balayage du résultat :
while ($data = mysql_fetch_assoc($requete)){
$d[] = $data;
}
return $d;

En fait, il fallait que j'utilise des alias dans ma requête : produit.id AS prod_id, famille.id AS fam_id, etc...
Et là, dans mon affichage (fichier index.php), je fais un foreach ($d as $v) et je récupère les valeurs : $d['prod_id'] etc...

J'espère avoir été assez clair lol
@ la prochaine

72
leknoppix, 09-07-2010 11:13:27 - Répondre

TUTORIEL TOUJOURS AUSSI BIEN EXPLIQUÉ
petit soucis, ce tutoriel n'apparait pas ni dans le carrousel dans la partie tutoriel ni dans la sous rubrique php.

Autre question, pourquoi n'a tu pas fait la présentation du models php/sql avec la pdo sql?

B0616f6a6c0db130098f14a8286a02f5?s=200&r=pg&d=mm
barry, 05-07-2010 21:14:15 - Répondre

Bon tuto comme toujours. Je trouve d'ailleurs l'exemple des helpers bien choisit.
Toutefois je pense qu'il est préférable de définir des valeurs par défaut aux méthodes différentes de null (enfin, tant que c'est possible). Ainsi, public function read($field='*'){...} éviterait un if ($field==null){$field='*';}

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Mamatt, 03-07-2010 04:42:51 - Répondre

Bon tuto dans l'ensemble.

Cependant, j'ai remarqué que vous utilisiez souvent or die(); à la suite de vos requêtes SQL. C'est une erreur d'optimisation qu'il faut apprendre à éviter (ne serait-ce que pour alléger la génération), en effet die(); est un alias de exit().
On peut dire qu'on s'en fout, on ne parle qu'en ms mais personnellement je préfère avoir un code propre et performant au maximum. :)

Autre point, de temps en temps, vous vous embrouillez (notamment avec les objets et les classes, je sais pu si c'est dans cette vidéo ou dans les précédentes). Vous parlez d'instancier un objet alors qu'on créer un objet en instanciant une classe, l'objet est donc une instanciation de la classe et pas lui-même instancié. :)
Je pense important de bien saisir cette hiérarchie.

Je trouve le code un peu fouilli aussi, un peu indenté à l'arrache, mais bon ce n'est que mon humble avis et aussi causé par l'IDE utilisé qui a l'air bien chiant à mettre les deux "" après chaque égal. Et puis les explications suivent très bien alors au final on s'en sort à peu près vivants.

Amicalement.

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Emporio, 08-06-2010 05:00:55 - Répondre

On ne met jamais ses attributs en public, le but de la POO c'est de pouvoir réutiliser son code, et on évite que la personne qui l'utilise puisse modifier les variables directement.

Elles servent a ça les setter et getter, modifier et afficher (retourner) des attributs.

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Makaveli, 19-05-2010 16:56:33 - Répondre

Ooooooooh ! mais c'est très bien expliqué ce tuto ! Il ne reste qu'à implanter constructeur(s) et destructeur(s). Déjà un excellent coup de main sur la création de "Models" pour ceux qui débutent en poo.

Efficace ce grafikart :)

1
Grafikart, 19-05-2010 18:22:18 - Répondre

Merci, ravi de voir que vous appréciez :)

24f9ef705ccf31ca4f2b3ffbfdcaf5ea?s=200&r=pg&d=mm
Ealon, 10-05-2010 12:08:41 - Répondre

Bonjour,
très bon tuto, j'apprends pas à pas la POO avec cette vidéo.
Je voulais savoir si il serait possible de mettre à notre disposition les fichiers utilisés dans le tuto, car recopier tout les codes des exemples devient vite fastidieux.

Merci encore pour votre réponse, et continuez ainsi.

Ealon

82eadb6d2f84a2f70cfbeeb2ac55e3bc?s=200&r=pg&d=mm
fantoche, 03-07-2010 04:54:28 - Répondre

Bonjour,

Pour ma part, je trouve très formateur et j'apprends plus en copiant le code.

Essai !!

;-)

4208
Wapaca, 14-04-2010 00:51:47 - Répondre

Salut, je n'ai pas trop compris comment on s'organise lors de l'utilisation de la poo sur un site complet, le model sert pour tout le site ou bien on fait 1 model/catégorie (membre, tuto, chien ...) ???

A6c7652eedb29b83c86a360971b4f441?s=200&r=pg&d=mm
Corentin, 09-04-2010 23:59:22 - Répondre

Super tuto merci encore ...

A6c7652eedb29b83c86a360971b4f441?s=200&r=pg&d=mm
Corentin, 10-04-2010 12:59:05 - Répondre

J'arrive pas à l'adapter avec obstart ...

-sa m'affiche une page blanche ^^

Merci par avance

E500b5be69a806773d34baaeb5941f0d?s=200&r=pg&d=mm
golgotha, 05-04-2010 17:43:39 - Répondre

Bonjour,

Merci pour ce superbe screencast.

Je suis tombé dans la poo dès le début ou j'ai commencer à programmer, et j'ai été très surpris par un passage de la vidéo, ou vous ajouter des champs à votre objet, dynamiquement, ce qui est impossible dans les langage courant comme java, c, c++.
l'objet reste ouvert dynamiquement.. c'est assez surprenant pour moi.

ça à l'air de vous paraître naturel pourtant.

Merci encore pour tout vos screencast, vous êtes très pédagogue.

9c0971f2c1959a28254ea456dca2ed98?s=200&r=pg&d=mm
darknico, 14-03-2010 12:48:23 - Répondre

5.3.2

0d9d976f6bef56e2633554b8d6cb5e46?s=200&r=pg&d=mm
rhavl, 14-03-2010 09:51:11 - Répondre

Quelle est la dernière version de php?
Et est-ce que c'est deja exploitable?

300
Weby, 13-03-2010 15:43:02 - Répondre

@Dearth : Merci pour tes explications !

9489b12af1ba99ed48599b5294131564?s=200&r=pg&d=mm
aemaethe, 03-03-2010 21:09:19 - Répondre

J'ai eu la réponse à ma question, var était utilisé avec la version de php.

9489b12af1ba99ed48599b5294131564?s=200&r=pg&d=mm
aemaethe, 28-02-2010 23:14:58 - Répondre

Salut,

Je suis en train de regarder un peu ton tuto sur la POO et j'aurais une question à propos de la déclaration de tes variables. Lorsque tu les déclares tu met var $marque;

J'ai parcouru pas mal de tutos et je n'avais jamais vu de "var" mais uniquement des attributs tels que "private"

Don ma question, qu'est-ce que ce var ? :p

E235dc5740e55e5378ce6f2af2d9d21b?s=200&r=pg&d=mm
Dearth, 28-02-2010 16:01:52 - Répondre

@Weby(1)
tu peux faire

public function query( $sQuery )
{
$sQuery = mysql_query( $sQuery );

return $sQuery
}
ensuite dans ta classe tu peux faire $this->query("SELECT * FROM news");
ceci est un exemple.

300
Weby, 18-02-2010 18:25:46 - Répondre

Salut, (1) je ne comprends pas à quoi correspond la fonction query() dans tes sources, ni comment l'utiliser ?!...

(2) D'autre part, tu as ajouté des commentaires avec un formatage bien particulier. Est ce parce qu'ils peuvent être exploités par quelque chose où est simplement une convention ? Quel est le rôle de @param ?

Merci ;-)

264ad3ac8f60d0fe6d4ca6d299780d6b?s=200&r=pg&d=mm
mib, 28-12-2009 18:34:31 - Répondre

C'est vraiment bien sympa ce tutorial ça ressemble beaucoup à Cakephp un grand merci pour ce gros travail :)
Par contre ça se passe comment si au sein d'un même formulaire on veut faire un enregistrement sur deux tables différentes ? Il faudrait genre préfixer les champs et faire un traitement particulier dans le Model ?

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Hum, 24-12-2009 03:32:54 - Répondre

merci continue ton site est genial

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
hum, 22-12-2009 09:54:57 - Répondre

quel logiciel 2diteur utilises tu?
Merci

1
Grafikart, 22-12-2009 13:04:45 - Répondre

J'utilise Komodo Edit, tu pourras trouver une liste d'éditeur ici : http://grafikart.fr/blog/dossier-editeurs-codes-470

35baf03af842376e68e0c7c060f2ce41?s=200&r=pg&d=mm
Bartimeus, 19-12-2009 13:27:28 - Répondre

Pourquoi coder en PHP4 ?

10b95507941be5dbde9e8d62392a80ba?s=200&r=pg&d=mm
Pamou, 18-12-2009 17:25:05 - Répondre

Bon,faut dire que ce n'est peut-être pas très pro x)

6c72039f81b9eafabf2e755c0281800a?s=200&r=pg&d=mm
toogy, 17-12-2009 20:21:57 - Répondre

"Alors là j'ai créé deux voitures... Virtuellement, en fait j'ai pas vraiment créé des voitures hein... Heureusement !"

Heu... Oui, on a pas 2 de Q.I. hein ? ^^

1
Grafikart, 18-12-2009 02:36:38 - Répondre

Mais moi j'ai un humour de merde :)
J'ai rien trouvé de plus intelligent à dire à ce moment là

C677857c09c12bb75415ebf32b520457?s=200&r=pg&d=mm
Skater54, 14-08-2010 17:21:56 - Répondre

Moi j'ai trouvé ça trop drôle ^^

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Deimz, 15-08-2011 21:03:11 - Répondre

Moi aussi j'ai bien rit =D

Ebbdd74cf4739cb50202769a006fe6c2?s=200&r=pg&d=mm
alinovitch, 16-12-2009 23:16:11 - Répondre

Absolument génial, un tel tutorial m'a fait progressé et me redonne du courage.
Un grand merci

B8715fdfb23fa0b53f98e848a57859bd?s=200&r=pg&d=mm
quent1du58, 16-12-2009 21:37:13 - Répondre

Oups... Une newsletter pourrait être bien en plus d'un flux RSS.

B8715fdfb23fa0b53f98e848a57859bd?s=200&r=pg&d=mm
quent1du58, 16-12-2009 21:36:23 - Répondre

Merci, j'ai enfin trouver le temps de le voir :p
P-s:

5fbb37275b19c0cd0c8c2583850ce68f?s=200&r=pg&d=mm
basketteur-33, 16-12-2009 18:10:30 - Répondre

bravo very good tuto

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Mikih57, 10-12-2009 21:16:39 - Répondre

Bonsoir a vous:
A un moment (dans le l'équivalent du SELECT ) tu fais ceci :
foreach ($data as $k=>$v)
$this->$k = $v;

Tu ajoutes donc des variables à ta classe mais comment les détruire ?

Exemple prenons la table aricle(id_article,titre,text). et la requete SELECT * FROM article WHERE id_article= 6
Nous allons donc crée :
$this->id_article puis $this->titre et enfin $this->text. Puis plus loin dans notre code nous aurons à refaire un select par exemple : SELECT 'titre' FROM article WHERE id_article = 7 (changement d'id)
La nous écraserons $this->titre précédemment crée mais nous ne supprimerons pas les anciennes variables ($this->id_article et $this->text) qui aurons en plus des valeurs hors contextes.

Je suis actuellement sur un projet et j'ai justement ce problèmes.Aurais tu une solution ?

Je vous remercie, Amicalement Mikih

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
DevilYann, 08-12-2009 17:40:55 - Répondre

Salut Grafikart
Bravo pour tes excellents tutos.
Serait il possible de savoir avec quel logiciel tu enregistres la séquence vidéo des travaux que tu présentes ?
Un grand merci d'avance.

C4818120c2de49adcf26e1729d344285?s=200&r=pg&d=mm
elscorto, 08-12-2009 11:39:43 - Répondre

Salut Grafikart, bravo pour tes tutos toujours bien expliqué et très intéressant.

Je t'ai envoyé un mail à partir de ton espace contact mais je n'ai pas eu de réponse, j'aurai bien aimé avoir ta réponse même si elle est négative.

Merci par avance et continue comme ça,c'est sympa de ta part de nous faire part de tes connaissances.

7c28e0d0a01b920be1cb667a835847cc?s=200&r=pg&d=mm
mespeche, 07-12-2009 13:09:26 - Répondre

Encore un tutoriel de très grande qualité surtout sur un sujet qui n'est pas forcément simple à aborder et à expliquer aux novices. Un grand bravo et continu comme ça, pour le moment tu es le seul qui fais des choses aussi bien et poussées alors ne t'arrêtes pas ;)

747fc195ba31cd3b5f6ab056efad7bee?s=200&r=pg&d=mm
MyKiwi, 07-12-2009 10:07:34 - Répondre

Salut, très bon tutoriel! Continue comme ça.
PS: pourrais tu faire un tutoriel sur la PDO? avec les requêtes préparer et tout?

804a269a20079289e48a2e43d7d02a94?s=200&r=pg&d=mm
bast_65, 07-12-2009 02:20:57 - Répondre

cucualex merci, tu explique beaucoup mieux que moi ^^

3fcfdfbb82a95c15b6b69bffa28dca88?s=200&r=pg&d=mm
cucualex, 06-12-2009 23:19:06 - Répondre

Salut graphikart,

Bravo pour ce tuto :)
Pour l'interet des getters et des setters, il se trouve dans le fait que quand tu declares en private des elements ils sont plus accessibles (comme tu l'as dit) en dehors de la classe. L'interet majeur est quand tu veux que d'autres programmeurs plug des fonctionnalités mais sans pouvoir toucher à ton code ni à tes instances d'objets.

Pour l'autoload c'est assez utile car cela permet d'instancier une classe lors de son utilisation. Ca evite de devoir faire des includes et des requires de partout.
En effet avec un autoload l'instanciation se fait au moment de l'utilisation d'une des methodes et cela de maniere transparente tu as pas besoin de faire des new constament.

Voila j'espere que j'ai été assez clair dans mon explication.
A bientot et merci encore pour ton super boulot :)

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
OverSpeed, 06-12-2009 21:24:57 - Répondre

Si on augmente le son, on entends de l'écho ... xD
Merci, depuis le temps que j'attendais un tuto vidéo sur la POO :) .

804a269a20079289e48a2e43d7d02a94?s=200&r=pg&d=mm
bast_65, 06-12-2009 20:22:46 - Répondre

Belle présentation de la poo, différent de la plus part des tutos que l'on trouve sur le net, qui eux présente plutôt des chose comme le constructeur getter setter etc... Pk préfères-tu ne pas utiliser ce genre de fonctions et utiliser par exemple une fonction static load pour le require au lieu de __autoload() ? euh jme sens pas très clair la :s

1
Grafikart, 06-12-2009 21:15:40 - Répondre

Effectivement ce n'est pas très clair. Je me suis orienté vers un exemple plus "pratique" avec un objet qui peut servir.

Pour les set et get je n'ai jamais trop compris l'intérêt vu que l'on peux accéder aux variable "public"

Par contre l'autoload() je vois pas du tout ce que c'est, si tu peux détailler.

804a269a20079289e48a2e43d7d02a94?s=200&r=pg&d=mm
bast_65, 07-12-2009 00:14:19 - Répondre

Je ne sais pas expliquer aussi bien que toi mais les getter/setter servent d'après se que j'ai compris a la propreté du code et a la facilité d'utilisation des classe par une tierce personne, elles rajoute une sécurité suplémentaire pour ceux qui utilisent tes classes, "elles permettent d’encapsuler notre code en gérant
l’affectation et la récupération de propriétés d’un objet mais à l’aide
d’une syntaxe différente.
Les méthodes de lecture et d’écriture permettent au développeur
d’appeler de manière transparente ces méthodes comme si ce dernier
ciblait une propriété."==> de "thibault imbert (meme si c'est pour AS3).

autoload ou plutot __autoload() est une fonction qu'ils appelent "fonction magique". Cette fonction la est appeler automatiquement quand on fait new class (elle prend comme parametre le nom de la classe, utilise donc pour faire un require automatiquement). Ces fonction sont apparu avec php 5 certaines plus utile que d'autre (exemple en php4 on devait appeler le constructeur du meme nom que la classe, depuis php5 on peut l'appeler __construct() ...) une liste des fonction magique et de leur utilité(ou pas) ici : http://www.manuelphp.com/php/language.oop5.magic.php

922780bdd4465e43b77a8fc4a9a0dd32?s=200&r=pg&d=mm
Shadowzone, 07-12-2009 00:17:39 - Répondre

Bonjour Grafikart et tout le monde ici (pour mon premier commentaire :)

Je viens mettre juste une petite info sur la fonction autoload() en espérant être assez clair dans mon descriptif car j'ai appris la POO PHP5 depuis peu.. :
(PHP5 avancé - édition Eyrolles : très bons exemples concernant la POO)

Il s'agit d'une des fonctions dites "magiques" de PHP5 au même titre que __construct, __destruct, et de biens d'autres ... Elle permet de charger une ou plusieurs classes de façon assez simple en début de script (cf. Exemple ci-dessous). Mais cette fonction est plutôt dépréciée car risques de bugs plus importants (Article : http://www.nexen.net/actualites/php/__autoload,_loeuvre_du_diable.php).

L'exemple :
(on suppose que l'on à un dossier contenant plusieurs fichiers de classes (tous nommés de cette façon : class.NOM_CLASS.php) et que l'on travail ici sur un fichier nommée test.php)

<?php
//Fonction "magique" autoload()
function __autoload($nomClass) {
require("classes/class.".strtolower($nomClass).".php");
}

//Chargement des classes 'Core' et 'Users'
$core = new Core();
$users = new Users();

//Accès aux éléments
$core->test(); //Fonction test() déclarée dans la classe 'Core'
?>

J'éspère que j'ai pu répondre aux interrogations ambiantes concernant cette fonction assez spéciale il faut dire mais sommes-toutes plutôt pratique pour démarrer en POO PHP. Et désolé pour la longueur de ce post

Bonne continuation à vous tous et surtout à toi Grafikart car tes tutoriels sont toujours un régal :P (surtout ceux concernant des petites astuces sur JQuery)

PS :
La fonction 'find' peut être raccourci de moitié :
...
$fields = "*";
if(isset($data["fields"])) { $fields = $data["fields"]; }
...
peut devenir :
$fields = (isset($data["fields"])) ? $data["fields"] : "*" ;
//opérateur ternaire : $val = (condition) ? "valeur si vrai" : "valeur si faux" ;

35abdf709316d7eae499fb9c540fd3a0?s=200&r=pg&d=mm
JM-05, 27-06-2014 23:08:34 - Répondre

Juste une petite information utile. Les méthodes get() et set() (que l'on appel d’ailleurs respectivement accesseurs et mutateurs) permettent d'accéder à un attribut en particulier de ta classe, généralement private.
Je tiens juste à souligné que le but est de pouvoir récupérer/modifier leur valeurs sans pour autant connaitre leur noms, c'est d'ailleurs le principe d'utiliser des couches/surcouches.

Par exemple, si tu fais une classe conçu pour exécuter tes requête MySQL, tu ne veux pas connaitre la requête, mais juste appeler une méthode qui te retournera ce que tu veux.

$requeteCandidat = new Requete();
$requeteCandidat->AfficherCandidats();
/* Pas de sql */

A coté de cela, cela fait longtemps que je regarde tes tutos et je tenais vraiment à te remercier car ceux-ci m'ont pas mal aider à comprendre certaines choses en php depuis 2 ans déjà.

057962cd3ad905b3bfeff35df8e86c81?s=200&r=pg&d=mm
agentcobra, 06-12-2009 00:42:35 - Répondre

merci beaucoup,
il est génial ton site, depuis que je l'ai vu je suis devenu accro

vive Grafikart

agentcobra

7ca97c7d91062bd3d952b54070364c4a?s=200&r=pg&d=mm
XnEoZ, 05-12-2009 23:48:32 - Répondre

Superbe tutoriel, très bien expliqué encore alors que la POO n'est pas forcément facile...

PS : @Grafikart a quand un tutoriel sur l'extension cURL :p ?

1
Grafikart, 06-12-2009 06:01:29 - Répondre

Il y a déja un tutoriel sur cURL :)
http://www.grafikart.fr/tutoriels/video/parser-xml-php-65

7ca97c7d91062bd3d952b54070364c4a?s=200&r=pg&d=mm
XnEoZ, 06-12-2009 21:06:49 - Répondre

Exact dsl, Grafikart :p

7e2029deac96fda9a7b74d64b86a8f97?s=200&r=pg&d=mm
Baptiste, 05-12-2009 18:40:42 - Répondre

salut!
très sympa ça! pourrait tu faire un tuto pour relier ce tuto à celui sur l'édition de fichiers php? on pourrait supprimer les pages, en recréer, les renommer etc...
merci!
++

1
Grafikart, 05-12-2009 20:12:47 - Répondre

A toi de le faire :)

7e2029deac96fda9a7b74d64b86a8f97?s=200&r=pg&d=mm
Baptiste, 06-12-2009 15:12:11 - Répondre

salut,
mais les articles ne sont pas sur une BDD avec le systeme de découpage... pourrait tu faire un tuto sur les bases de Mysql pour gérer des articles, des images etc... car je suis vraiment une brele là dedans! :lol: !! rien que l'accueil de MySql avec varchar, int etc... ça me fait des boutons! ^^
alors un petit simple pour les débutant ça ferait pas de mal ;)

en tout cas encore bravo :d
++

F4e2dfa1d188ff8b11f61a1b19e67c19?s=200&r=pg&d=mm
Amaury, 05-12-2009 17:29:18 - Répondre

Super sympa !
J'adore, mais je me demandais s'il existait des classes modele assez générique (Qui ne font pas partie d'un CMS en particulier) et qui serai assez proche de ce que tu à fait (en ayant un peu plus de fonctions ?).
Si la réponse est non, ce n'est pas grave. je la ferai moi même, mais j'ai peur d'oublier des fonction essentiel ou de me gourer dans la réalisation et que ma classe devienne plus un frein qu'une aide.

Bref, super tuto !

1
Grafikart, 05-12-2009 20:15:22 - Répondre

En fait on parle ici plus de library. Il y a par exemple PEAR qui est une extension PHP qui ajoute des objets à PHP.

F224d96e28a4e69eb44aa649847378c2?s=200&r=pg&d=mm
RezA, 05-12-2009 15:17:52 - Répondre

Salut, j'ai pu remarquer que dans votre fonction de sauvegarde, vous preniez les données POST "a la volée", donc admettons que ce code soit adapté à une application pour modifier son propre profil utilisateur, si l'on rajoute un champ par exemple nommé grade (en local), et qu'on lui met comme valeur 'admin', la validation nous mettra donc au statut admin, je pense qu'il faudrait le préciser pour que certaines personnes ne fassent pas cette erreur ^^

Sinon, très bon tuto, un grand bravo, c'est très bien expliqué, un vrai plaisir à regarder :P

318
RezA, 09-01-2010 19:28:33 - Répondre

Pas de réponses?

1
Grafikart, 10-01-2010 14:06:56 - Répondre

Oui ta remarque est exacte. L'idéal c'est de créer un autre tableau avec les champs que l'on veut sauvegarder avant de lancer une sauvegarde. Il est déconseillé d'utiliser POST directement sur des formulaire publics.

0f4901be2146e254a673d7d33cf2dc05?s=200&r=pg&d=mm
TeddyDu44, 05-12-2009 13:21:00 - Répondre

oui inutile de reup pour cela sa ne dérange pas du tout ^^

D41d8cd98f00b204e9800998ecf8427e?s=200&r=pg&d=mm
Ritter, 05-12-2009 13:05:58 - Répondre

Très bon tuto qui va m'aider pour mes études, merci !

0f4901be2146e254a673d7d33cf2dc05?s=200&r=pg&d=mm
TeddyDu44, 05-12-2009 11:59:58 - Répondre

à 44min25 sec tu as du lancé la musqiue par erreur sa recouvre ta voix ! ^^

1
Grafikart, 05-12-2009 13:07:07 - Répondre

Effectivement super erreur de montage, je remonte/recalcul et reupload ça dès que je peux, au pire ça ne dure pas jusqu'à la fin.

0f4901be2146e254a673d7d33cf2dc05?s=200&r=pg&d=mm
TeddyDu44, 05-12-2009 11:48:16 - Répondre

merci!