Bonjour,
Je suis débutant en php que j'essaie d'apprendre et surtout comprendre :)
Mon topic concerne le tutoriel (créer un portfolio de A à Z), j'ai un souci ou plutôt deux avec la partie réalisation :
-1 Quand je travaille en local avec WampServer ma nouvelle réalisation n'est pas enregistrer dans la bdd
-2 Si j'heberge mes fichiers en ligne, ma réalisation est bien enregistré dans ma bdd. mais j'ai remarqué que a l’Edition d'une réalisation existante, si je modifie (Nom de la réalisation) avec un nom qui contient des guillemets et bien tout ce qui est après guillemet est supprimé!
par-exemple si j’écris (ceci est une page d'exemple) le nom de ma réalisation a l'affichage me donne (ceci est une page d) le ( ‘exemple) est supprimé !
après des heures à essayer de résoudre ceci tout seul sans succès, j'aimerai avoir vore aide afin d'avncer :-)
Cordialement.
C'est du vieux tous ça !! si tu veut je te passe tous mon code en ALPHA j'y ai adjoint un forum et amélioré le code
1- Système de commentaire par article avec activation dans l'administration
2 - Système de d'article par catégorie avec envoie d'image avec mise en avant ou non
3 - Le forum avec catégorie
4 - Gestionnaire de membres et avatar avec gravatar
Etc...
Je suis seul a bosser desus mai je peut te filler les sources ou préfère tu le faire seul ce qui a mon avis et mieux pour apprendre.
Qu'est-ce que cette réponse ?
Tu viens demander de l'aide ou est-ce que tu nous prend pour des idiots ?
Salut,
Je suis désolé j'ai utilisé mon smartphone pour écrire mon message, sur l’écran de mon portable les boutons sont mal positionné j'ai du appuyé n’ importe où sans le vouloir, j’ai même appuyé sur le bouton résolu par erreur.
En tout cas merci à vous d'avoir répondu.
pour répondre a ton message neecride, j'ai déjà un forum avec 11000 membres (fluxbb)
j'aimerai juste ajouter un système de gestion d'articles avec catégories, donc en tant que débutant j'ai trouvé que le tutoriel sur la création de portfolio est plus simple à comprendre pour moi.
J’essaie de faire fonctionner les sources, pour moi il est complet ça me convient comme gestionnaire d'articles. Après je peut le bidouiller afin de récupèrer les données des membres enregistré dans mon forum. On peut intégrer le forum en faisant un include de common.php issu de fluxbb une sorte de api.
PS : neecride si t'es sources sont codé en php brute comme sur le tutoriel je suis quand même intéressé :)
Bonjour,
Je me suis dit que peut-être j'ai loupé quelque chose, donc J'ai recommencé le tutoriel depuis le début.
Dans la vidéo numéro 4 a 30:37 le moment ou Grafikart explique comment envoyer l'image j'ai cette erreur que je ne comprends pas :
Warning: PDO::query(): SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value in C:\wamp64\www\Portfolio\admin\work_edit.php on line 33
ca concerne cette partie du code dans work_edit.php
/**
* ENVOIS DES IMAGES
**/
$work_id = $db->quote($_GET['id']);
$image = $_FILES['image'];
$extension = pathinfo($image['name'], PATHINFO_EXTENSION);
if(in_array($extension, array('jpg','png'))){
$db->query("INSERT INTO images SET work_id=$work_id");
$image_id = $db->lastInsertId();
$image_name = $image_id . '.' . $extension;
move_uploaded_file($image['tmp_name'], IMAGES . '/works/' . $image_name);
$image_name = $db->quote($image_name);
$db->query("UPDATE images SET name=$image_name WHERE id = $image_id");
}
La ligne 33 de l'erreur correspond a
$db->query("INSERT INTO images SET work_id=$work_id");
CDT.
Salut,
attention, tu as mélangé un peu les "structures" des requêtes INSERT, et UPDATE.
SET s'utilise dans un UPDATE, pas dans un INSERT.
Rappel pour un INSERT :
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
Il me semble que ta table image en base de donnée a aussi un champ name.
Comme tu essaies d'insérer une ligne, en précisant l'ID, mais pas le name,
le message d'erreur te dis que, comme le champ name n'a pas de valeur par défaut, il faut lui en indiquer une lors d'un INSERT.
Tout de même, quelque chose cloche je trouve,
j'aurai cru qu'avec ce genre de code, le message d'erreur n'aurait pas été :
"il manque le champ 'name'",
mais plutôt :
"la requête SQL est mal formée".
Apparemment je me trompe.
Salut SLK, merci a toi pour ces infos mais sache que je n'ai pas touché au code pour l'instant j'ai télécharger les sources tel-quel donc logiquement ca devrais fonctionner, Grafikart ultilise bien SET dans les INSERT si on regarde le tutoriel.
Ah bon ?
OK je ne savais pas. Du coup j'apprends un truc ^^
C'est cool comme syntaxe.
(et je comprend mieux pourquoi il n'y avait pas de message d'erreur...)
Et pour le champ 'name' ?
Pour le champ name ta raison il existe bien dans la table images :)
en faite le message d'erreur plus haut s'affiche si je veux editer une réalisation, si je veux créer une réalisation cette fois ci j'ai deux erreurs :
Warning: PDO::query(): SQLSTATE[HY000]: General error: 1364 Field 'image_id' doesn't have a default value in C:\wamp64\www\Portfolio\admin\work_edit.php on line 23
Warning: PDO::query(): SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value in C:\wamp64\www\Portfolio\admin\work_edit.php on line 43
Je suppose que c'est comme pour le champ name le image_id non plus n’a pas de valeur!
Je ne sais pas pourquoi j'ai ses erreurs alors que pour l'instant je n'ai pas touché au code sources, j'ai meme visionner les vidéos en details pour voir si il n'y a pas d'erreurs entre ce qui est écrit dans les vidéos et les fichiers sources.
C'est un peu confu pour moi qui ne connais pas le code.
Tu parles de 'réalisation', mais la table s'appelle 'image'.
Est-ce qu'on parle bien de la même chose ? (Est-ce qu'une réalisation est une image ?)
je veux editer une réalisation, si je veux créer une réalisation cette fois ci j'ai deux erreurs :
Si j'ai bien compris,
quand tu fais un INSERT dans la table image, tu as :
Warning: PDO::query(): SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value in C:\wamp64\www\Portfolio\admin\work_edit.php on line 33
Et si tu fais un UPDATE dans la table image, tu as :
Warning: PDO::query(): SQLSTATE[HY000]: General error: 1364 Field 'image_id' doesn't have a default value in C:\wamp64\www\Portfolio\admin\work_edit.php on line 23
Warning: PDO::query(): SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value in C:\wamp64\www\Portfolio\admin\work_edit.php on line 43
C'est ça ?
Est-ce que tu peux montrer les lignes de code qui correspondent à ces erreurs ? (ligne 23 et 43)
Je suppose que c'est comme pour le champ name le image_id
Ah, tu parles du champ image_id
, mais dans le code pour UPDATE
ce champ s'appel id
,
$db->query("UPDATE images SET name=$image_name WHERE id = $image_id");
est-ce que c'est une erreur ?
La table images sert pour l'upload d'images elle contient 3 champs
elle sert à stocker les infos des images uploadé par rapport aux réalisations je reprends ce terme vue qu'il est utilisé dans le tutoriel en gros c'est (les articles).
Pour la création de ce portfolio en tout ya quatre tables
Concernant ta question sur les deux erreurs 23 et 43 voici les lignes correspondante
Pour l’erreur 23 :
$db->query("INSERT INTO works SET name=$name, slug=$slug, content=$content, category_id=$category_id");
Pour l’erreur 43 :
$db->query("INSERT INTO images SET work_id=$work_id");
Pour ta dernière question concernant l’erreur de la requête, je ne sais pas si il y a erreur mais comme j’ai dit c’est les codes sources tel-quel et sur les vidéos tout fonctionne bien.
Les codes sources sont téléchargeable ici = > https://www.grafikart.fr/tutoriels/php/portfolio-php-brut-debutant-fin-463
@Abdellah63
Si tu veut tester tu a un DUMP sql dans l'archive qui contien un dossier tu peut renommer le dossier mai laisse tous dedans sinon faut modifier les constante partout.
User : Admin
Pass : 0000
Pour tester l'inscription/réinitialisation mots de pass il te faut réglé wamp pour envoyez des mail Graphikart a fais un tuto la dessus.
Je ne l'ai pas tester a grande échel mai c'est déjà une basse pour commencer.
Salut neecride,
Super les améliorations que tu as apporté à ce tuto j’aime beaucoup, par contre la création d’article pose toujours problème, voici les erreurs :
Notice: Undefined index: id in C:\wamp64\www\portfolio\admin\functions\works-edit.func.php on line 15
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'posted' doesn't have a default value in C:\wamp64\www\portfolio\admin\functions\works-edit.func.php on line 122
PDOException: SQLSTATE[HY000]: General error: 1364 Field 'posted' doesn't have a default value in C:\wamp64\www\portfolio\admin\functions\works-edit.func.php on line 122
pour ma part l'envoie et l'édition d'article fonctionne et d'image aussi apparemment ton wamp doit foiré ou tu n'a pas la bonne version, je l'ai tester en ligne aussi et tout fonctionne corectement pour ma part. mise a part logout mai ça c'est du au remember cookie qui ne s'efface pas.
Salut,
Je vais réinstaller mon wamp, c'est peut-être la version 64bite qui pose problème.
Je te tiens au courant en tout cas bravo pour ce beau boulot :)
Salut,
Je ne comprend pas pourquoi ca ne veux pas fonctionner chez moi :(
J'ai réinstaller wampserver 64bite rien ensuite la version 32 rien non plus, après ça j'ai carrément formater mon pc et installer de nouveau wampserver 32bite toujours les mèmes erreurs, ensuite j'ai voulu tester en ligne chez mon hébergeur 1and1, cette fois-ci impossible d'importer le blogcms.sql dans phpmyadmin j'ai cette erreur :
blogcms
--categories
CREATE TABLE IF NOT EXISTS categories
(
id
int(11) NOT NULL AUTO_INCREMENT,
cat_name
varchar(30) NOT NULL,
slug
varchar(30) NOT NULL,
date
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
MySQL a répondu: Documentation
1067 - Invalid default value for 'date'Abdellah63 Pour crée une base il faut que ton hebergeur te le permet premier point, ensuite éssai d'effacer cette ligne
date datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
Un fois la table créer tu pourra la rajouter , comme je te dis c'est bizarre sur mes deux hebergeur ça fonctionne.
Bonsoir j'ai eu le même problème et j'ai trouvé quelqu'un qui disait ca.
"Les déclencheurs ne sont pas traitées pour les colonnes NOT NULL . Il aurait été corrigé dans la version 5.7.1 de MySQL"
j'ai mit les champs en NULL et tout c'est remit a marcher correctement.
voilà si ca peut aidé :)
C'est une vielle version j'ai refait le code depuis et modifié les base de donnée le forum est aussi plus aboutie, j'ai ajouter pleins de chose comme les ajout d'avatar etc...