Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 25 Μαρ 2007 22:57

Γεια σας πάλι παιδιά, έχω φάει όλο το ιντερνετ και δε βρήκα κώδικα που να δουλεύει.
Αυτό που θέλω να κάνω είναι το εξείς: Ένα ερώτημα στη βάση έχει πολλά αποτελέσματα και θελω να μπούν σε σελίδες. Εστω ότι κάθε σελίδα θα έχει 25 αποτελέσματα.

Περιμέω τα Φώτα τα σας! :)

Ευχαριστώ!!!

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 26 Μαρ 2007 00:34

Βρήκα λύση που δούλεψε τελικά
http://www.phpfreaks.com/tutorials/73/0.php

Αν παρόλα αυτά έχετε να προτείνετε κάτι άλλο, ευπρόσδεκτο

Ευχαριστώ!!!

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 30 Μαρ 2007 15:52

Παιδιά ρίξτε μια ματιά στον κώδικα!

Κώδικας: Επιλογή όλων

<html> 
<head>
<title>Result of Database Query</title>
</head>
<body> 
<h1>Result of Database Query</h1>
<?
 
	include 'db.php';
     // If current page number, use it
     // if not, set one!

if&#40;!isset&#40;$_GET&#91;'page'&#93;&#41;&#41;&#123;
    $page = 1;
&#125; else &#123;
    $page = $_GET&#91;'page'&#93;;
&#125;

    // Define the number of results per page

$max_results = 2;

    // Figure out the limit for the query based
    // on the current page number.

$from = &#40;&#40;$page * $max_results&#41; - $max_results&#41;; 

   // Perform MySQL query on only the current page number's results

$teuxos = $_POST&#91;'name'&#93;;

   
	$sql=" SELECT * FROM magazines where ΑΡΙΘΜΟΣ_ΤΕΥΧΟΥΣ='$teuxos' LIMIT $from, $max_results";
	$result = mysql_query&#40;$sql&#41;;
	$nrows = mysql_num_rows&#40;$result&#41;;
	if&#40;$nrows != 0&#41;
	&#123;
		print "<table border=2>";
		for&#40;$j=0;$j<$nrows;$j++&#41;
		&#123;
			$row = mysql_fetch_array&#40;$result&#41;;
			print "<tr><td>" . $row&#91;"ΤΙΤΛΟΣ_ΑΡΘΡΟΥ"&#93;;
			print "<tr><td>" . $row&#91;"ΑΡΙΘΜΟΣ_ΤΕΥΧΟΥΣ"&#93;;
			print "<tr><td>" . $row&#91;"ΑΡΙΘΜΟΣ_ΣΕΛΙΔΩΝ"&#93;;
			print "<tr><td>" . $row&#91;"ΧΡΟΝΟΣ_ΕΚΔΟΣΗΣ"&#93;;
			print "<tr><td>" . $row&#91;"ΠΕΡΙΛΗΨΗ"&#93;;
			print "\n";
		&#125;
		print "</table>\n";
	&#125;
	else	print "<p>No Entry for " . $teuxos;
	//mysql_close&#40;$dbcon&#41;;
	
// Figure out the total number of results in DB&#58;
$total_results = mysql_result&#40;mysql_query&#40;"SELECT COUNT&#40;*&#41; as Num FROM magazines_writers"&#41;,0&#41;;

// Figure out the total number of pages. Always round up using ceil&#40;&#41;
$total_pages = ceil&#40;$total_results / $max_results&#41;;

// Build Page Number Hyperlinks
echo "<center>Select a Page<br />";

// Build Previous Link
if&#40;$page > 1&#41;&#123;
    $prev = &#40;$page - 1&#41;;
    echo "<a href=\"".$_SERVER&#91;'PHP_SELF'&#93;."?page=$prev\"><<Previous</a>";
&#125;

for&#40;$i = 1; $i <= $total_pages; $i++&#41;&#123;
    if&#40;&#40;$page&#41; == $i&#41;&#123;
        echo "$i ";
        &#125; else &#123;
            echo "<a href=\"".$_SERVER&#91;'PHP_SELF'&#93;."?page=$i\">$i</a> ";
    &#125;
&#125;

// Build Next Link
if&#40;$page < $total_pages&#41;&#123;
    $next = &#40;$page + 1&#41;;
    echo "<a href=\"".$_SERVER&#91;'PHP_SELF'&#93;."?page=$next\">Next>></a>";
&#125;
echo "</center>";


?>
</p>
</body>
</html>

Το πρόβλημα είναι ότι απο μια φόρμα html στέλνω δεδομένα στο script και αυτό μου επιστρέφει σωστά τα αποτελέσματα, αλλά όταν πάω να κάνω κλικ στη δεύτερη σελίδα μου βγάζει σφάλμα ότι δεν αναγνωρίζει το POST.

Δοκίμασα να βάλω στη μεταβλητή $teuxos μια λέξη και το script παιζει κανονικά, εμφανίζει ολες τις σελίδες.

Κατέληξα στο συμπέρασμα ότι η τιμή του POST χάνεται, μάλλον.

Ευχαριστώ!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από fafos » 30 Μαρ 2007 20:36

where ΑΡΙΘΜΟΣ_ΤΕΥΧΟΥΣ='$teuxos' ????? :o R U SURE?? :D No Greek :naughty:
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 30 Μαρ 2007 22:02

Το φανταζόμουν ότι θα το πει κάποιος. Όπως είπα το script παίζει, αλλά με το πρόβλημα που περιέγραψα πιο πάνω. Να τονίσω ότι χωρίς paging παίζει κανονικότατα αλλά βγάζει τα αποτελέσματα όλα μαζί.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από Banavas » 31 Μαρ 2007 09:40

Κώδικας: Επιλογή όλων

 echo "<a href=\"".$_SERVER&#91;'PHP_SELF'&#93;."?page=$prev\"><<Previous</a>"; 
Αντικατέστησε (και στα 3 σημεια) το ".$_SERVER['PHP_SELF']." με το όνομα του script πχ results.php
Happy coding....
Μάρκος
http://lasernet.gr

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 01 Απρ 2007 12:23

Ευχαριστώ για την απάντησή σου, αλλά συμβαίνει ακριβώς το ίδιο.

Notice: Undefined index: name in Notice: Undefined index: name in c:\program files\easyphp1-8\www\show_teuxos.php on line 30

No Entry for
Τελευταία επεξεργασία από το μέλος pavlosmanowar την 01 Απρ 2007 13:01, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από Banavas » 01 Απρ 2007 12:36

Είναι φανερό οτι όταν πατάς το prev ή το next δεν βρίσκει το script και ο λόγος είναι οτι έχεις κάποιο λάθος στο όνομα του script.

Τo μήνυμα λάθους που σου επιστρέφει δείχνει οτι προσπαθεί να βρεί το script με όνομα (www\show_teuxos.php).

Αν το script έχει όνομα (show_teuxos.php) και βρίσκεται στο ίδιο directory με το αρχείο της φόρμας που καλεί το script τότε γράψε το όνομα σκέτο δηλ.

Κώδικας: Επιλογή όλων

echo "<a href=\"show_teuxos.php?page=$prev\"><<Previous</a>"; 
Happy coding....
Μάρκος
http://lasernet.gr

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 01 Απρ 2007 12:53

Ετσι ακριβώς το έχω, είναι στον ίδιο φάκελο. Το μήνυμα είναι στη γραμμή του $teuxos = $_POST['name'];
Έκανα το εξείς πείραμα αν στη τιμή teuxos βάλω μια λέξι κλειδί π.χ $teuxos='56 - 57';
τότε το script δουλεύει κανονικά με όλες τις σελίδες να παίζουν.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από Banavas » 01 Απρ 2007 13:01

Πότε και από που πέρνει τιμή η μεταβλητή teuxos ;
Happy coding....
Μάρκος
http://lasernet.gr

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 01 Απρ 2007 13:04

Ο παρακάτω κώδικας στην φόρμα html σε διαφορετικό αρχείο, στον ίδιο φάκελο με το script.

Κώδικας: Επιλογή όλων

<form action="Show_teuxos.php" method="POST">
Δώσε αριθμό τεύχους
<input type="text" name="name">
<br>
<input type=submit value="Search database">
</form>

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από Banavas » 01 Απρ 2007 13:12

Κάθε φορά που γίνεται ανανέωση της σελίδας οι μεταβλητές χάνονται γιαυτό θα πρέπει να περάσεις την μεταβλητή teuxos στην επόμενη σελίδα

Κώδικας: Επιλογή όλων

echo "<a href=\"show_teuxos.php?teuxos=".$teuxos."&page=$prev\"><<Previous</a>";
Happy coding....
Μάρκος
http://lasernet.gr

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 01 Απρ 2007 13:24

Εϊναι σωστό αυτό που λες, αλλά πάλι δε δουλεύει γμτ.
Το ίδιο πράγμα, έκανα αυτό που λες και το next και στο previous.

Στη φόρμα γράφω ένα άρθρο τύπου "56 - 57" με κενό ανάμεσα, δε ξέρω αν παίζει ρόλο αυτό.
Αλλά όχι δε παίζει ρόλο. Πάλι το ίδιο μήνυμα βγάζει. Όντος δε κρατά την μεταβλητή. Όταν τρέχει το script στην πρώτη εμφανίζει το αποτέλεσμα, και όταν πάω στην επόμενη δεν κρατά τη μεταβλητή και έτσι μάλλον δεν αναγνωρίζει το POST
Τελευταία επεξεργασία από το μέλος pavlosmanowar την 01 Απρ 2007 13:38, έχει επεξεργασθεί 3 φορές συνολικά.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από Banavas » 01 Απρ 2007 13:33

Επειδή ο κώδικας σε κάθε ανανέωση αλλάζει την τιμή εδώ

Κώδικας: Επιλογή όλων

$teuxos = $_POST&#91;'name'&#93;; 
άλλαξέ το σε

Κώδικας: Επιλογή όλων

echo "<a href=\"show_teuxos.php?name=".$teuxos."&page=$prev\"><<Previous</a>";
Happy coding....
Μάρκος
http://lasernet.gr

pavlosmanowar
Δημοσιεύσεις: 30
Εγγραφή: 10 Αύγ 2003 04:31
Τοποθεσία: Αθήνα

Σελιδοποίηση αποτελεσμάτων ερωτήματος στην mysql

Δημοσίευση από pavlosmanowar » 01 Απρ 2007 13:44

Φίλε σε ταλαιπωρώ, πάλι το ίδιο πρόβλημα.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες