doddsey_65 Posted December 1, 2009 Share Posted December 1, 2009 Hi, I have a rating system in place on my site. The problem is i have a section called tutorials, which pulls all the results from the database. I would then click on a result to bring that tutorial up. I have gone with this because the rating system depends on things being on different pages. But at the minute i have 50 tutorials and loads more to input. I dont want to have to create a seperate page for every tutorial but the way my rating system is, i would have to. is there anyway to display the tutorial once clicked, without having to create a page for each one and for the rating system to work within this setup. Heres an example of my current setup HOME>>TUTORIALS>>TUTORIAL1 list of tuts the tut vid Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/ Share on other sites More sharing options...
JonnoTheDev Posted December 1, 2009 Share Posted December 1, 2009 I dont want to have to create a seperate page for every tutorial but the way my rating system is, i would have to This makes absolutely no sense unless you post code demonstrating why there is an issue. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969088 Share on other sites More sharing options...
doddsey_65 Posted December 1, 2009 Author Share Posted December 1, 2009 Okay say i have a tutorial named test and the tutorial is by carl. In my site you would click on tutorials to bring up a list of people who have made tutorials. You would then click carl to bring up all tutorials by him. Then you would click on the tutorial named test to bring up the actual tutorial video. But this means creating a file called test.php within wich resides the code to show the video. But this also means creating a new .php file for every tutorial which i dont want to do. So is there anyway to avoid this? Something like pagination? An example of the file structure above home page tutorial list listt by carl actual tutorial vid Index.php >> tutorials.php >> tutorials.carl.php >> test.php forget the mention of the rating system for now, i will get to that later in order to minimise confusion lol. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969090 Share on other sites More sharing options...
JonnoTheDev Posted December 1, 2009 Share Posted December 1, 2009 But this means creating a file called test.php within wich resides the code to show the video. But this also means creating a new .php file for every tutorial which i dont want to do. No it doesn't. You have 1 single file that displays any tutorial. You could have another file that displays any video. The data is requested via a database query from what are known as url parameters i.e links to 2 tutorials tutorial.php?id=123 tutorial.php?id=127856 Do you think that there is a new php page created on this forum whenever a new topic is posted. Just look at the url. We remain on index.php throughout and the post is obtained through the url parameters. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969095 Share on other sites More sharing options...
doddsey_65 Posted December 1, 2009 Author Share Posted December 1, 2009 so when the user clicks on a tutorial they are taken to tutorials.php?id=whatever how would i achieve this in the code then? i should mention that all of my tutorials are embedded from youtube. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969102 Share on other sites More sharing options...
JonnoTheDev Posted December 1, 2009 Share Posted December 1, 2009 how would i achieve this in the code then? i should mention that all of my tutorials are embedded from youtube I can't lay down the whole code for your website but you must have a database structure containing your tutorials relating to the users who submitted them? The embed code should be in the database also against the tutorial so you can display the video. If a user clicks on Carls tutorials, lets say he is user id 123 I would run a query to get his tutorials /tutorials.php?userId=123 <?php $result = mysql_query("SELECT id, title FROM tutorials WHERE userId='".mysql_real_escape_string($_GET['userId'])."'"); // display the tutorials while($row = mysql_fetch_object($result)) { print "<a href='/tutorial.php?id=".$row->id."'>".$row->title."</a><br />"; } ?> This would display links to all of carls tutorials. The file is tutorial.php and I pass over the id of the tutorial. I can then get the required tutorial from this paramater. Much the same as I have done above Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969107 Share on other sites More sharing options...
doddsey_65 Posted December 1, 2009 Author Share Posted December 1, 2009 Okay here is the current layout of tutorials.derricksesson.php I tried your code but couldnt get it to work. <?php ob_start(); include('header.php'); include('db.php'); $db=mysql_connect($db_host,$db_user,$db_pass) or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db($db_name,$db); $pagenum = $_GET['pagenum']; if (!(isset($pagenum))) { $pagenum = 1; } //Here we count the number of results //Edit $data to be your query $data = mysql_query("SELECT * FROM tutorials WHERE username='cganim8or'") or die(mysql_error()); $rows = mysql_num_rows($data); //This is the number of results displayed per page $page_rows = 3; //This tells us the page number of our last page $last = ceil($rows/$page_rows); //this makes sure the page number isn't below one, or more than our maximum pages if ($pagenum < 1) { $pagenum = 1; } elseif ($pagenum > $last) { $pagenum = $last; } //This sets the range to display in our query $max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows; echo '<div id="page">'; echo '<div id="content"><br />'; echo '<h2 class="title">Tutorials By Derrick Sesson</h2><br />'; $result = mysql_query("SELECT fullname, name FROM tutorials WHERE username='cganim8or'") or die(mysql_error()); while($row = mysql_fetch_object($result)) { print "<a href='/tutorials.php?id=".$row->fullname."'>".$row->name."</a><br />"; } echo '<br><br><br></div>'; echo '</div>'; } echo " Page $pagenum of $last <p>"; if ($pagenum == 1) { } else { echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> "; echo " "; $previous = $pagenum-1; echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> "; } //just a spacer echo " ---- "; //This does the same as above, only checking if we are on the last page, and then generating the Next and Last links if ($pagenum == $last) { } else { $next = $pagenum+1; echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> "; echo " "; echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> "; } echo '</div>'; include('footer.php'); ob_flush(); ?> The rows in the tutorials table are: ID - tutorial id not userid name - name of tutorial description - of tutorial username - of tutorial provider fullname - of tutorial provider link - link to tutorial path - path the the image thumbnail hopefullyyou will be able to show me how i would get it to display the tutorial once the user clicks the tutorial they want. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969118 Share on other sites More sharing options...
doddsey_65 Posted December 1, 2009 Author Share Posted December 1, 2009 Ok i have gotten it to display the tutorials(even though the pagination isnt working), but how do i go about creating the next file that will display the tutorial they clicked on? instead of id i have gone for username since id in my table is the tutorial id and not the userid. when i click on a tutorial by 'carl' it takes me to tutorials.php?username=test so how would i make that page? When i click the link i just get sent back to the previous page(the list of tutorial publishers) Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969150 Share on other sites More sharing options...
doddsey_65 Posted December 1, 2009 Author Share Posted December 1, 2009 anyone? Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969324 Share on other sites More sharing options...
mikesta707 Posted December 1, 2009 Share Posted December 1, 2009 you would get the username from the $_GET variable, $username = $_GET['username']; and then do whatever you need to with that username. probably have to make a query that gets all the tutorials based on that username if I understand you correctly Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969332 Share on other sites More sharing options...
doddsey_65 Posted December 1, 2009 Author Share Posted December 1, 2009 but would i be putting that in a new page or in tutorias.php with the code above? Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969336 Share on other sites More sharing options...
mikesta707 Posted December 1, 2009 Share Posted December 1, 2009 it depends on how you want to design your system. Whereever you send the post variable is where you want that code Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969339 Share on other sites More sharing options...
doddsey_65 Posted December 1, 2009 Author Share Posted December 1, 2009 post? im not using the post variable al i want is when you click on a link in tutorials.php it wil take you to tutorials.php?username=whatever, within which resides the video. so how would i get the video of the clicked tutorial to display under tht url? Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969343 Share on other sites More sharing options...
doddsey_65 Posted December 2, 2009 Author Share Posted December 2, 2009 anyone got any advice or know what i should type into google to look for? Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969858 Share on other sites More sharing options...
JonnoTheDev Posted December 2, 2009 Share Posted December 2, 2009 http://www.roscripts.com/PHP_MySQL_by_examples-193.html Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969864 Share on other sites More sharing options...
doddsey_65 Posted December 2, 2009 Author Share Posted December 2, 2009 i can see where in that page it explains what i need to do Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969869 Share on other sites More sharing options...
doddsey_65 Posted December 2, 2009 Author Share Posted December 2, 2009 Okay i will try to describe things better: a user is given a list of tutorials on the page tutorials.php. when a user clicks a tutorial name they are taken to the tutorial video which will appear on tutorials.php?id=1 so how do i set up the page tutorials.php?id=1? I can get the tutorials in tutorials.php to go to their id pages(tutorials.php?id=) but i dont know how to set up the pages to show the video which is relative to whatever tutorial they click. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-969905 Share on other sites More sharing options...
doddsey_65 Posted December 3, 2009 Author Share Posted December 3, 2009 okay im gonna try and explain this one last time in the hope that someone knows what i mean and can help. I list all tutorials by cganim8or $result = mysql_query("SELECT * FROM tutorials WHERE username='cganim8or' $max") or die(mysql_error()); while($row = mysql_fetch_object($result)) { echo '<div class="post">'; echo '<p class="meta">' .$row->fullname. ' | ' .$row->name; echo '<div class="entry">'; echo '<a href=tutorials.php?id='.$row->name.'>'.$row->name.'</a><br />'; echo '</p>'; echo '<br><br><br></div>'; echo '</div>'; } and as you see when you click on a tutorial by him you aere taken to tutorials.php?id=nameoftutorial. How do i make that page? How do i display the tutorial video on that page? I am assuming i put the code in this same file but what code? i dont even know where to start. In my code fullname refers to the full name of the tutorial artist name refers to the name of the tutorial( i cant use id cos the id is for the id of the tutorial not the user So, when a user clicks a tutorial they are taken to the video and the url will read tutorials.php?id=nameoftutorial this is so i dont have to make a single page for every tutorial that i have. All i would need on this page is the youtube embed code. So can anyone help? Im really struggling. And even if this is easy then pplease say so and try to help. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-970179 Share on other sites More sharing options...
JonnoTheDev Posted December 3, 2009 Share Posted December 3, 2009 ("SELECT * FROM tutorials WHERE username='cganim8or' $max") The username will be in the superglobals array sent through the url. i.e ("SELECT * FROM tutorials WHERE username='".mysql_real_escape_string($_GET['username'])."' $max") The reason you are duplicating so many pages is that you have hard coded the database queries. This is incorrect for dynamic websites. If you had read the tutorial from the link I posted it explains how to query data based on paramaters sent through the url. This is what applies to you. Get a better understanding of how dynamic sites work. Quote Link to comment https://forums.phpfreaks.com/topic/183596-a-better-way-to-do-this/#findComment-970345 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.