Problèmes avec le tableau de bord personnalisé Concrete5 single_page / panneau d'administration

StackOverflow https://stackoverflow.com/questions/7831691

Question

Je suis un peu de difficulté à obtenir mon tableau de bord sur mesure single_page à la base de données avec Interagir correctement.

Capture d'écran: http://i54.tinypic.com/2lvh45d.jpg

code appréciation (single_pages / tableau de bord / testimonials.php): http://pastebin.com/PK4ziRih

newTestimonials.php Code:

<?php
defined('C5_EXECUTE') or die("Access Denied.");
$testimonial_name = $_POST['testimonial_name'];
$testimonial_content = $_POST['testimonial_content'];
$url = "http://www.eurofloors.co.nz/dashboard/testimonials/";

$con = mysql_connect('localhost', 'username', 'password');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("eurofloo_website", $con);

$sql = "INSERT INTO testimonials (id, name, content) VALUES " . $testimonial_name . $testimonial_content;

mysql_query($sql);

/* Redirect browser */
header("Location:" .$url);
/* Make sure that code below does not get executed when we redirect. */
exit;
?>

save_testimonials.php Code:

<?php
defined('C5_EXECUTE') or die("Access Denied.");

$existing_testimonials_update = $_POST['data'];

$con = mysql_connect('localhost', 'username', 'password');
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("eurofloo_website", $con);

$sql = "INSERT INTO testimonials VALUES " . $existing_testimonials_update;

$result = mysql_query($sql);


mysql_close($con);

?>

Mon problème avec cette page est, lorsque je présente le nouveau formulaire témoignage ou cliquez sur Enregistrer dans la grille de données au fond. Je reçois la page Introuvable erreur, car concrete5 peut ne pas sembler voir les fichiers php définis dans l'attribut d'action des formes. Y at-il une raison évidente pour laquelle cela se passe ou est-ce parce que je havn't utilisé l'approche MVC?

Pouvez-vous s'il vous plaît me montrer la bonne direction? La principale chose que je cherche, est une sorte de documentation des exemples pour le contrôleur et la syntaxe de modèle pour db interaction et la forme de traitement de données.

Des conseils ou des ressources donnés sont très appréciées.

ps:. Je suis encore assez nouveau pour PHP afin que je puisse approcher le code pour cela dans le mauvais sens

Était-ce utile?

La solution

Ahh ... ouais, tu vas rien expérience, mais la douleur si vous essayez de contourner le système de routage Concrete5 a déjà en place (par opposition à un peu de douleur à travailler en son sein, malheureusement). Je recommande fortement la lecture de ce « comment faire » dans leur documentation:

http://www.concrete5.org/documentation/how-tos/developers/build-a-single-page-powered-editing-interface-for-concrete5/

Quand vous dites que vous êtes nouveau à PHP, êtes-vous débutez en programmation Web en général, ou êtes-vous déjà familier avec d'autres langues et frameworks MVC? Dans ce dernier cas, alors je garde qu'il ya une chose vraiment moche passe dans l'article ci-dessus, où des vues différentes des actions du contrôleur sont tous dans un seul fichier de vue séparée avec un grand « si ». Si cette offense vos sensibilités comme le mien fait, je l'ai trouvé un moyen de faire ce travail mieux, laissez-moi savoir si vous voulez voir. [EDIT: Voir pour une meilleure technique https://github.com/jordanlev/c5_boilerplate_crud . Il fonctionne hors de la boîte sur Concrete5.5.0 et plus. Si vous êtes coincé sur 5.4.x, vous pouvez appliquer ce patch à votre système pour faire ce travail correctement: https://github.com/concrete5/concrete5/pull/147/files ]. Si vous êtes nouveau à la programmation en général, vous pouvez ignorer complètement ce paragraphe car il ne sera pas beaucoup de sens:)

En ce qui concerne le code de base de données que vous utilisez, si vous interagissez avec la base de données Concrete5, ne pas utiliser ce genre de choses mysql_connect - C5 établit déjà une connexion de base de données et utilise la bibliothèque ADODB à l'interface avec elle, comme donc:

$db = Loader::db();
$sql = "INSERT INTO testimonials (name, content) VALUES ?, ?";
$vars = array($testimonial_name, $testimonial_content);
$db->query($sql, $vars);

Notez que j'ai quitté le « id » de la liste des champs de votre déclaration d'insertion - Je devine que l'ID est un champ de clé primaire auto-incrément dans la table de MySQL, ce qui signifie que vous ne insérer quoi que ce soit pour elle (la base de données il suffit de créer comme par magie son propre numéro). Ceci est une chose MySQL générale, BTW - n'a rien à voir avec C5 spécifiquement

.

Si vous voulez vous connecter à un différent base de données, le code « chargeur » serait légèrement différente - voir la section « Connexion à d'autres bases de données » sur cette page: http://www.concrete5.org/documentation/developers/system/database-connectivity ( et surtout noter la dernière ligne dans le code exemple là-bas qui remet à zéro la connexion lorsque vous avez terminé -. vous doit le faire autrement Concrete5 échouera lamentablement après l'exécution de votre code personnalisé)

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top