liamloveslearning Posted February 16, 2010 Share Posted February 16, 2010 Hi Everybody, My friends dentistry want a dynamic element adding to their website, Hes asked me to take a look at adding this feature as he doenst want to have to draft in a web design agency and its only a small task. He currently has a 5 page static website. 1 of the pages is a meet the team, he wants this page to be php driven where he can edit his own content, I said Ill learn how its done and create this for him, As far as im aware I will only need to create an admin section where he can edit the data in a table and have the content stored call this data, Is this as small a job as I presume? and if he was to go to an agency would failing me being able to do this will he be charged extensively? Quote Link to comment Share on other sites More sharing options...
Psycho Posted February 16, 2010 Share Posted February 16, 2010 It all depends on how "extensive" the editing features need to be for this page. Does he need to be able to edit font and graphics? If the layout is such that there is only a block of text for each person it can be implemented very easily and would not even need a database. Can you provide a link to the current page? Quote Link to comment Share on other sites More sharing options...
JAY6390 Posted February 16, 2010 Share Posted February 16, 2010 You could do this with a content management system such as Wordpress or Drupal. The only real charge would be to convert the current page into a workable template for Wordpress/Drupal and shouldn't cost more than say $150 - 200 if done properly by a professional (including the installation and configuration) Quote Link to comment Share on other sites More sharing options...
liamloveslearning Posted February 16, 2010 Author Share Posted February 16, 2010 the page in question is similiar to http://www.moonfleet.co.uk/the-dental-team-holisitc-poole/meet-the-team-poole-dentist.html He needs to add/edit the photo and just upload a block of text and a name, no font styling is neccessary, I have done this technique before but only using adobe dreamweaver developer toolbox, I want to learn how its done properly, and how long do you think this would take? Thanks for your response mjdamato Quote Link to comment Share on other sites More sharing options...
liamloveslearning Posted February 16, 2010 Author Share Posted February 16, 2010 Thanks jay, I dont want to use wordpress for this sorry, Thanks for your suggestion however Quote Link to comment Share on other sites More sharing options...
JAY6390 Posted February 16, 2010 Share Posted February 16, 2010 Fair enough. If you want it done properly then it would be a drupal install IMO, taking 2 days max Quote Link to comment Share on other sites More sharing options...
Psycho Posted February 16, 2010 Share Posted February 16, 2010 What? It doesn't need a custom framework. The OP only wants to allow one page to be edited. @liamloveslearning: Making a page, such as the one you linked to, editable is fairly simple as long as the format will always be consistent. In this case I would assume only the profiles for each person would be editable. Each profile consists of four pieces of information: Name, Title, Description, and image. As long as the output of each of those four peces of information will be consistent (i.e. name is always bold, no ability to italicize/bold individual words in the decription) it is fairly straitforward. Personally, for a project such as this, I would use a flat file to store the data and build PHP scripts to edit the file. For the edting, I would create a form page with input fields for all the current profiles and an empty set of fields at the bottom to add a new profile. When the page is saved, the form is displayed again with all the profiles (including the new one) and again, another empty set of fields to add a new profile. I suppose you could also create a function to move profiles up/down on the page. But I doubt that that function would be used much - if at all. Without knowing your level of expertise in HTML/PHP I'm not sure how much of an undertaking this would be for you. For someone proficient, I think this could be done in a couple of hours. Quote Link to comment Share on other sites More sharing options...
liamloveslearning Posted February 16, 2010 Author Share Posted February 16, 2010 Thanks for your post mjdamato, So by file would you edit the data via an xml file? I was planning on building a login where the user will be presented with a page, He could then click one of the team and update their records or add a new record. Im fluent in xhtml/css and have a basic knowledge of php (Nothing serious however) Ive not dabbled with xml for a long time but im sure I could pick it up again easily. What do you suggest I look at first? Thanks again and I appreciate your input Quote Link to comment Share on other sites More sharing options...
Psycho Posted February 16, 2010 Share Posted February 16, 2010 Yeah, you could use XML, but I'd just use a CSV file. I was bored on a conference call, so I wrote some rough code. manageProfiles.php <?php $dataFile = "profiles.txt"; function getProfiles() { global $dataFile; $profiles = array(); if(file_exists($dataFile)) { $dataArray = file($dataFile); foreach($dataArray as $key=>$profileRecord) { $profiles[$key] = explode("\t", $profileRecord); } } return $profiles; } function saveProfiles($profilesArray) { global $dataFile; $fh = fopen($dataFile, 'w') or die("can't open file"); foreach($profilesArray as $profile) { $textRecord = implode("\t", $profile) . "\n"; fwrite($fh, $textRecord); } fclose($fh); return; } ?> pageEdit.php <?php include("manageProfiles.php"); function createFieldSet($profileData=false) { if(!$profileData) { $name = ""; $title = ""; $desc = ""; $image = ""; } else { list($name, $title, $desc, $image) = $profileData; } $fieldSet = "Name: <input type=\"text\" name=\"name[]\" value=\"{$name}\" /><br />\n"; $fieldSet .= "Title: <input type=\"text\" name=\"title[]\" value=\"{$title}\" /><br />\n"; $fieldSet .= "Description: <textarea name=\"desc[]\">{$desc}</textarea><br />\n"; $fieldSet .= "Image: <input type=\"text\" name=\"image[]\" value=\"{$image}\" /><br /><br />\n"; return $fieldSet; } //Data was posted, save changes if (isset($_POST['name']) && is_array($_POST['name'])) { $profileCount = count($_POST['name']); //Parse the data $profileData = array(); for($idx=0; $idx<$profileCount; $idx++) { $name = trim($_POST['name'][$idx]); $title = trim($_POST['title'][$idx]); $desc = trim($_POST['desc'][$idx]); $image = trim($_POST['image'][$idx]); if(!empty($name) || !empty($title) || !empty($desc) || !empty($image)) { $profileData[$idx] = array($name, $title, $desc, $image); } } //Save the changes saveProfiles($profileData); } else { //Get the current data from file $profileData = getProfiles(); } //Create the form fields $formFields = ''; foreach($profileData as $profile) { $formFields .= createFieldSet($profile); } //Create empty fieldSet to add new profile $formFields .= createFieldSet(); ?> <html> <head></head> <body> <form action="" method="POST"> <?php echo $formFields; ?> <button type="submit">Submit Changes</button> </form> </body> </html> pageDisplay.php <?php include("manageProfiles.php"); $profileData = getProfiles(); function displayProfile($profileAry) { list($name, $title, $desc, $image) = $profileAry; $htmlOutput = "<div><img src=\"{$name}\">\n"; $htmlOutput .= "<span><b>{$name}</b> {$title}<br /><br />\n"; $htmlOutput .= "{$desc}<br />\n"; $htmlOutput .= "</div><br /><br />\n"; return $htmlOutput; } ?> <html> <head> <style> </style> </head> <body> <?php $profileData = getProfiles(); foreach($profileData as $profile) { echo displayProfile($profile); } ?> </body> </html> Quote Link to comment Share on other sites More sharing options...
liamloveslearning Posted February 17, 2010 Author Share Posted February 17, 2010 Thanks thats amazing mjdamato, Im going to try and implement it now Quote Link to comment Share on other sites More sharing options...
liamloveslearning Posted February 17, 2010 Author Share Posted February 17, 2010 That works perfectly mjdamato, I wish I could write code that easily in my spare time haha, My only question is that the manageProfiles.php shows no data, Also would it be easily done for me to change the image text field to a browse button? Quote Link to comment Share on other sites More sharing options...
liamloveslearning Posted February 17, 2010 Author Share Posted February 17, 2010 Nvm, Ive realised manageprofiles is just to call the data haha, Thanks again Quote Link to comment Share on other sites More sharing options...
Psycho Posted February 17, 2010 Share Posted February 17, 2010 Also would it be easily done for me to change the image text field to a browse button? Yeah, that could be done, but it wouldn't be as simple as adding a browse button. You have different options on handling the images. The solutions require differing capabilities of the user. The simplest solution would be for the user to manually upload pre-sized images to the server and to manually enter the path in the edit page. Next easiest would be to incorporate upload functionality on the edit page. BUt, the user would need to be responsible for uploading pre-sized images or at least images with a consistent scale so you can appropriately display them programatically. The third option would be to include scripting that will automatically scale/crop the uploaded images. I have no idea what the ROI is for this project - which would determine how much time and effort should be invested. Again, none of this is exceptionally difficult. Just do one thing at a time and add individualt features as you complete others. Quote Link to comment Share on other sites More sharing options...
KevinM1 Posted February 17, 2010 Share Posted February 17, 2010 Why on earth are you using global? Use the argument list! That's what its there for! Quote Link to comment Share on other sites More sharing options...
Psycho Posted February 17, 2010 Share Posted February 17, 2010 Why on earth are you using global? Use the argument list! That's what its there for! I originally wrote it that way, but then decided against it. The way I coded it the page which contains the "management" functions is completely self contained. This way, on any pages that need to read/write the profile data, the developer does not have to reference back to the variable created on the page with the management functions. Ideally, this would be a class. I try to avoid gloabl variables whenever possible, but I feel they do have their place. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.