Selidopoihsh

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

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

Απάντηση
NDH
Δημοσιεύσεις: 403
Εγγραφή: 03 Φεβ 2009 13:56
Επικοινωνία:

Selidopoihsh

Δημοσίευση από NDH » 28 Αύγ 2009 20:04

kalispera pedia thelw na valw selidopoihsh se mia selida mou alla paleuw kai tpt mipos mporeite an thelete na valete ena xeraki??
Τελευταία επεξεργασία από το μέλος NDH την 31 Αύγ 2009 11:56, έχει επεξεργασθεί 2 φορές συνολικά.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Selidopoihsh

Δημοσίευση από Apostolis_38 » 28 Αύγ 2009 22:45

Νομίζω πως καλό θα ήταν να μη δίνεις τα στοιχεία του mysql_connect ακόμα κι αν η σελίδα τρέχει στο pc σου. Ποτέ δεν ξέρεις...
Οσο για τη σελιδοποίηση, ορισμένοι εδω μέσα έχουν γράψει κάποια πολύ καλά scripts. Ψάξε για topics με θέμα pagination.

NDH
Δημοσιεύσεις: 403
Εγγραφή: 03 Φεβ 2009 13:56
Επικοινωνία:

Selidopoihsh

Δημοσίευση από NDH » 29 Αύγ 2009 10:17

ta evgala alla den itan tou server p ta anevazw itan ston prosopiko m ypologisti opote....

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

Selidopoihsh

Δημοσίευση από Banavas » 29 Αύγ 2009 11:04

Είναι σχετικά εύκολο να κάνεις την σελιδοποίηση. Θα σου δώσω τις βασικές οδηγίες γαι να το κάνεις μόνος σου και να πάρεις όλη τη χαρά της δημιουργίας!

Πρέπει να μετρήσεις τις εγγραφές που περιλαμβάνει το ερώτημα. Ενας τρόπος είναι να τρέξεις ξανά το ερώτημα κάπως έτσι:

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

$query = "SELECT count(*) as count FROM ................WHERE .................";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$numrows = $row['count'] ;
Στη συνέχεια πρέπει να χρησιμοποιήσεις 2 μεταβλητές πχ $start και $items_per_page οι οποίες θα καθορίζουν από ποια εγγραφή θα ξεκινάει η τρέχουσα σελίδα και η δεύτερη πόσες εγγραφές θα προβάλλει.
Δίνεις μια αρχική τιμή στις μεταβλητές:

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

$start=0;
$items_per_page=10; 
Προσθέτεις στο ερώτημα την παράμετρο LIMIT ($start,$items_per_page)

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

$query = mysql_query("SELECT * FROM ..........WHERE ............ ORDER BY ..........  LIMIT " . $start . ",". $items_per_page ." "); 
Αν τρέξεις το πρόγραμμα σε αυτή τη φάση θα σου εμφανίσει την πρώτη σελίδα (από την σελιδοποίηση) χωρίς την δυνατότητα να αλλάξεις σελίδα.

Απομένει να φτιάξεις ένα χειριστήριο που θα το προσθέσει στο τέλος της εμφάνισης των αποτελεσμάτων για να μπορεί ο χρήστης να αλλάζει σελίδες.
Θα περιγράψω την πιο απλή μορφή (ΠΡΟΗΓΟΥΜΕΝΑ - ΕΠΌΜΕΝΑ) αλλά εσύ μπορείς να το βελτιώσεις ανάλογα με τις ανάγκες σου.

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

if&#40;$start > 0&#41; echo "<a href=\"" . $PHP_SELF . "?start=" . &#40;$start - $items_per_page &#41; ."\"> Προηγούμενα </a> "; 
$currentpage=$start+$items_per_page;
if&#40;$currentpage > $numrows&#41; &#123; echo " &nbsp;&nbsp;&nbsp; " . $numrows . "  /  " . $numrows ." &nbsp;&nbsp;&nbsp;" ; 
&#125; else &#123; 			
echo " &nbsp;&nbsp;&nbsp; Σελίδα " . $currentpage . "  /  " . $numrows ." &nbsp;&nbsp;&nbsp;"  ; &#125; 	
if&#40;$numrows > &#40;$start + $items_per_page &#41;&#41; echo "<a href=\"" . $PHP_SELF . "?start=" . &#40;$start + $items_per_page &#41; ."\"> Επόμενα </a>"; 
&#125;
Το αποτέλεσμα θα είναι να εμφανιστεί κάτω από τις εγγραφές κάτι σαν:

ΠΡοϊόντα 20/47 επόμενα (πρώτη σελίδα)
προηγούμενα ΠΡοϊόντα 20/47 επόμενα (δεύτερη σελίδα)
προηγούμενα ΠΡοϊόντα 20/47 (τελευταία σελίδα)

Εδώ υποθέτουμε οτι οι εγγραφές που μετρήθηκαν αρχικά είναι 47 και ο χρήστης είναι στην δεύτερη σελίδα με βήμα 10 εγγραφές ανα σελίδα, τα προηγουμενα - επόμενα είναι link για τις αντίστοιχες σελίδες.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Selidopoihsh

Δημοσίευση από mrpc » 29 Αύγ 2009 16:35

Ο Banavas σου εξήγησε τα πάντα νομίζω. Το να καταλάβεις πως γίνεται είναι πιο καλό από το να βρεις κάτι έτοιμο. Αν θέλεις όμως ρίξε και μια ματιά στα παλιότερα θέματα:
http://www.freestuff.gr/forums/viewtopic.php?t=38954
http://www.freestuff.gr/forums/viewtopic.php?t=28203

NDH
Δημοσιεύσεις: 403
Εγγραφή: 03 Φεβ 2009 13:56
Επικοινωνία:

Selidopoihsh

Δημοσίευση από NDH » 30 Αύγ 2009 22:56

to dokimasa alla otan pataw na allaksei selida den vgazei tpt giati???
entometaksi eixes kai kapoia syntaktika lathoi.
AA kai mrpc to exw dei auto alla den m fenete gia voithima alla gia mpleksimo sorry kiolas alla edw o filos parapanw ekane kati poio mikro vato kai eukola anavathmisimo asketa me auta p thelei akoma

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

Selidopoihsh

Δημοσίευση από Banavas » 31 Αύγ 2009 00:00

Το πιθανότερο είναι να μην περνάει η μεταβλητή $start στην νέα σελίδα. Βάλε κάπου στη σελίδα πριν από την εκτέλεση των παραπάνω εντολών το παρακάτω:

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

$start=$_GET&#91;'start'&#93;;
Happy coding....
Μάρκος
http://lasernet.gr

NDH
Δημοσιεύσεις: 403
Εγγραφή: 03 Φεβ 2009 13:56
Επικοινωνία:

Selidopoihsh

Δημοσίευση από NDH » 31 Αύγ 2009 00:12

iparxei periptosi vevea to lathos nane diko m
Τελευταία επεξεργασία από το μέλος NDH την 31 Αύγ 2009 11:55, έχει επεξεργασθεί 1 φορά συνολικά.

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

Selidopoihsh

Δημοσίευση από Banavas » 31 Αύγ 2009 01:29

Μετά το $start=0; βάλε αυτό:

if(isset($_GET['start'])) $start=$_GET['start'];
Happy coding....
Μάρκος
http://lasernet.gr

NDH
Δημοσιεύσεις: 403
Εγγραφή: 03 Φεβ 2009 13:56
Επικοινωνία:

Selidopoihsh

Δημοσίευση από NDH » 31 Αύγ 2009 01:59

loipon to ekana akou imoun idi se katigoria(showbla.php?metavliti=xx) kai meta paei kai auto na kanei kai alli kai ithele anti gia (?start=metavliti) ithele (&start=metavliti)


euxaristw gia ola kai signomi
Τελευταία επεξεργασία από το μέλος NDH την 31 Αύγ 2009 11:54, έχει επεξεργασθεί 1 φορά συνολικά.

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

Selidopoihsh

Δημοσίευση από Banavas » 31 Αύγ 2009 09:32

Είχα σκοπό να σου το γράψω παραπάνω και ξέχασα. Πατώντας στο προηγούμνο ή επόμενο η σελίδα κάνει refresh και όλες οι τρέχουσες μεταβλητές χάνονται. Οπότε θα πρέπει να τις περνάς πάλι στην νέα σελίδα.

Επειδή είδα στο αρχικό post οτι χρησιμοποιείς session είναι προτιμότερο να κρατάς τις μεταβλητές σου με μεταβλητές session ώστε να μην χάνονται με τις αλλαγές σελίδας, το URL να είναι πιο καθαρό και να μην είναι σε κοινή θέα οι μεταβλητές που χρησιμοποιείς.
Happy coding....
Μάρκος
http://lasernet.gr

Απάντηση

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

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

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