freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.

Σελιδοποίηση αποτελεσμάτων από βάση δεδομένων


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » PHP Προγραμματισμός και εφαρμογές » PHP τα δικά μας scripts
Moderators:  PHP Moderators, Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 2 από 2 [28 Μηνύματα]      Bookmarks Tags: δεδομένωνβάση Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
Σελίδα:  Προηγούμενο  1, 2
ΑποστολέαςΜήνυμα
kalpatron


Μέλος από: 03 Απρ 2006
Μηνύματα: 44

View users profile
ΜήνυμαΣτις: 02 Μαρ 2008 22:58    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Αν υπάρχει κάποιος που μπορεί να το κάνει, θα ήταν πολύ χρήσιμο!!! Χρησιμοποιώ παρόμοιο κώδικα, τον οποίο έχω παραμετροποιήσει αρκετά και αυτό που με βοηθάει - τουλάστον έτσι όπως το έχω κάνει εγώ - είναι ότι εμφανίζω τις σελίδες σε ένα drop-down, που μόλις διαλέξεις την σελίδα που θέλεις, σε στέλνει κατευθείαν!
everfrost


Μέλος από: 04 Μαη 2007
Μηνύματα: 3

View users profile
ΜήνυμαΣτις: 16 Αυγ 2010 16:44    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Παιδιά ξέρει κανένας πως θα κάνουμε αυτό που είπε ο Βασίλης? Να δείχνει δηλαδή τα page links ανά πεντάδες?
nikdim


Μέλος από: 14 Ιουλ 2010
Μηνύματα: 41

View users profile
ΜήνυμαΣτις: 16 Σεπ 2010 12:54    Θέμα: paging Απάντηση με παράθεση  Mark this post and the followings unread

φίλε πραγματικά πολύ καλό, σε ευχαριστώ πολύ
Βέβαια εαν η αναζήτηση βασίζεται σε action από προγηγοηγούμενη σελίδα τότε σου πετάει error μετα την εμφάνιση της πρώτης σελίδας. Εγω το έλυσα με τον παρακάτω κώδικα

if (isset($_GET['id'])){$id=1;}else $id=2;

$page = $_GET['page'];

//mono ti proti fora tha ektelestei to parakato
if($page==1 && $id==1){$id=2;

$name=$_POST['name'];
$surname=$_POST['surname'];
............
}
nikdim


Μέλος από: 14 Ιουλ 2010
Μηνύματα: 41

View users profile
ΜήνυμαΣτις: 08 Οκτ 2010 00:08    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

everfrost ανέφερε:
Παιδιά ξέρει κανένας πως θα κάνουμε αυτό που είπε ο Βασίλης? Να δείχνει δηλαδή τα page links ανά πεντάδες?


Για να μην δείχνει όλα τα αποτελέσματα αλλα +-2 απο τη τρέχον σελίδα τότε αντικαταστούμε το κομμάτι του κώδικα με το παρακάτω


//for ($pageList = 1; $pageList <= $pages+1; $pageList++)
for ($pageList = $page-2; $pageList <= $page+2; $pageList++)
{
if ($pageList != $page && $pageList<$pages+1&&$pageList>0)
{
// Link to page
//if($count_page<$count_page_3)
{echo "<a href="{$_SERVER['PHP_SELF']}?page={$pageList}" title="Go to page {$pageList}">{$pageList}</a> | ";}
//else {}
}
else
{
// Show curent page with strong markup
if($pageList<$pages+1&&$pageList>0)echo "<strong>{$pageList}</strong> | "; //apo prin ta link kai edw to noumero
}
}
gvre


Μέλος από: 14 Οκτ 2010
Μηνύματα: 256+
Περιοχή: Ηράκλειο Κρήτης
View users profile Visit posters website
ΜήνυμαΣτις: 14 Οκτ 2010 14:23    Θέμα: Re: Σελιδοποίηση αποτελεσμάτων από βάση δεδομένων Απάντηση με παράθεση  Mark this post and the followings unread

panosru ανέφερε:
Επειδή παρατήρησα ότι πολλοί χρηστες έχουν προβλήματα με το pagination είπα να γράψω στον λιγοστό χρόνο που έχω το τελευταίο καιρό ένα παράδειγμα, ίσος φανεί χρήσιμο σε μερικούς.

[snip]

// Calculate how many pages will be shown
$pages = $getDataLen / $lpr;

[snip]


Διόρθωσέ το σε $pages = ceil($getDataLen / $lpr);

_________________
Web Design Ηράκλειο - Κατασκευή Ιστοσελίδων Ηράκλειο - Web Development - Επαγγελματικές Κάρτες
ΠΑΡΗΣ


Μέλος από: 16 Σεπ 2005
Μηνύματα: 5
Περιοχή: ΧΑΛΚΙΔΑ
View users profile Visit posters website
ΜήνυμαΣτις: 10 Δεκ 2010 12:58    Θέμα: Αποτελέσματα απο Βαση
Περιγραφή θέματος: πως θα φερω τα δεδομενα απο βαση σε σελίδα ?
Απάντηση με παράθεση  Mark this post and the followings unread

Σε site με καταχωρίσεις οχημάτων υπάρχει η δυνατότητα σελιδοποιήσεις μόνο των αγγελιών ενός χρήστη μέσω ΑΝΑΖΗΤΗΣΗΣ πχ (select dealer) . Πως θα εμφανίζω αυτά τα αποτελέσματα σε άλλη σελίδα χωρίς αναζήτηση ? Θα ήταν πολύτιμη η απάντηση σας, ευχαριστώ..!

_________________
Το μεγαλύτερο επίτευγμα του ανθρώπου μετά το web είναι το freestuff.gr
fraggiskos


Μέλος από: 08 Οκτ 2007
Μηνύματα: 47

View users profile
ΜήνυμαΣτις: 23 Φεβ 2011 16:37    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

χρησημότατο script!!! Σ'ευχαριστώ πολύ
Respect!
tsalaki


Μέλος από: 09 Μαρ 2009
Μηνύματα: 31

View users profile
ΜήνυμαΣτις: 19 Αυγ 2011 12:44    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Καλησπέρα σε όλους,

Προσπαθώ να κάνω σελιδοποίηση των αποτελεσμάτων από τη βάση. Ψάχνοντας στο ίντερνετ βρήκα διάφορα script για αυτό και έχω υλοποιήσει ένα μέρος της σελιδοποίησης. Ωστόσο έχω 2 προβλήματα:
Το πρώτο είναι ότι όταν πατάω να εμφανίσει τα αποτελέσματα της 2ης σελίδας για παράδειγμα δεν τα εμφανίζει. Τα αποτελέσματα δηλαδή παραμένουν ίδια σε όλες τις σελίδες και ειναι τα 5 πρώτα. Το δεύτερο πρόβλημα μου είναι ότι δεν ξέρω πως θα διορθώσω τα links των επόμενων σελίδων. Τι εννοώ..Εγώ έχω την index όπου κάνω include τη σελίδα στην οποία γίνεται το pagination. Πως θα διατηρήσω αυτή τη σύνδεση ώστε να βλέπω την index που θα περιέχει την σελίδα του pagination??Ο κώδικας μου είναι ο παρακάτω:
κώδικας:

// Specify the maximum amount of results per page, you could add a drop down box where the end-user
   // can change it themselves
   $max=5;
   
   $sql="SELECT count(*) AS count FROM diagnwsi";
   $result=mysql_query($sql);
   $count=mysql_fetch_assoc($result);
   
   // This is part of the magic. First thing we do is take the amount of results returned ($pic_count['count'])
   // and then we divide it by the maximum amount of pics allowed per page.
   
   // Then we run the ceil function on the result which will round the answer up to the next whole number.
   // This will give us the total number of pages that all the results will take.
   $total_page=ceil($count['count']/$max);
   
   // Check to make sure a page was passed and it is a number, if not set the page to the first one
   if (isset($_GET['page']) && is_numeric($_GET['page']))
      $cur_page=$_GET['page'];
   else
      $cur_page=1;
   
   // Now we need to verify that the page is within the range of pages that we have, if not set to the first one
   if ($cur_page < 1 || $cur_page > $total_page)
      $cur_page=1;
   // First we need to get the starting result id, this is simply done by getting the current page minus one
   // and then multiplying that by the maximum results you chose.
   $start_result = ($cur_page - 1) * $max_pics;
   
   // Next comes the actual query
   $sql="SELECT * FROM diagnwsi LIMIT $start_result, $max";
   $result=mysql_query($sql);
   echo "<h4 align='justify'>Πίνακας διαγνώσεων</h4><br/>";
   echo "<p align='center'>Ακολουθεί ο πίνακας των καταχωρηθέντων διαγνώσεων στη βάση δεδομένων:</p>";
   echo "<table border='1' align='center'>
   <tr>
   <th>Κωδικός Διάγνωσης</th>
   <th>Περιγραφή Διάγνωσης</th>
   </tr>";
   
   while($row = mysql_fetch_array($result))
     {
        echo "<tr>";
        echo "<td>" . $row['kwdikos_dia'] . "</td>";
        echo "<td>" . $row['perigrafi_dia'] . "</td>";
        echo "</tr>";
     }
   echo "</table>";
   
   // First display the mandatory html, along with the current page, and how many total pages there are
   echo '
      <p align="center">
         Σελίδα: <b>' . $cur_page . '</b> από <b>' . $total_page . '</b>
      </p>';
   
   // Now if there is more than one page create the links for the other pages
   if ($total_page > 1)
   {
      echo '<p align="center">';
   
   // Give the first page to start counting to display all the pages upto the total pages
      $page_count = 1;
      while ( $page_count <= $total_page )
      {
   
   // Check and see if the page link being created is the current page, because we don't need a link to the
   // current page
         if ( $page_count == $curr_page )
         {
            echo '
            <span style="font-weight: bold;">' . $page_count . '</span>';
         }
   

Εδώ πρέπει να αλλάχθει το link:
κώδικας:

// Otherwise create the links for the additional pages and point them back to the current php page
   // Make sure you pass all the needed variables that were passed initially
         else
         {
            echo '
            <a href="' . $_SERVER['PHP_SELF'] . '&amp;page=' . $page_count . '">
            ' . $page_count . '
         </a>';
         }
   
   // Up the $page_count for the while statement and then close the while statement
      $page_count++;
      }
   echo '</p>';
   }
?>
Christianago


Μέλος από: 12 Νοε 2009
Μηνύματα: 256+

View users profile
ΜήνυμαΣτις: 20 Αυγ 2011 00:07    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Νομιζω οτι εχεις ξεχασει να μας δωσες το javascript ή html αρχειο καθως ειδα μερικα υποπτα GET στον κωδικα οπως το παρακατω:
κώδικας:
$_GET['page']

Επισης χρησιμοποιεις καποιες μεταβλητες χωρις να τις εχεις ορισει πρωτα οπως την παραδωθε:
κώδικας:
$max_pics

Ο 2ος κωδικας τι αντιπροσωπευει; τον καλεις απο καπου; Περιμενουμε νεα σου.
tsalaki


Μέλος από: 09 Μαρ 2009
Μηνύματα: 31

View users profile
ΜήνυμαΣτις: 20 Αυγ 2011 10:26    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Η μεταβλητή max_pics ήταν λάθος που είχε ξεφύγει και μόλις το διόρθωσα. Όσο για το δεύτερο κώδικα:
κώδικας:


// Otherwise create the links for the additional pages and point them back to the current php page
   // Make sure you pass all the needed variables that were passed initially
         else
         {
            echo '
            <a href="' . $_SERVER['PHP_SELF'] . '&amp;page=' . $page_count . '">
            ' . $page_count . '
         </a>';
         }
   
   // Up the $page_count for the while statement and then close the while statement
      $page_count++;
      }
   echo '</p>';
   }
?>

Ουσιαστικά εδώ πρέπει να δώσω το κατάλληλο link για να μου εμφανίζει εκεί που θέλω και όπως θέλω όλες τις σελίδες με τα αποτελέσματα. Το πρόβλημα που έχω εδώ είναι το εξής:
Έχω την index.php στην οποία κάνω include τις εκάστοτε σελίδες που θέλω.Μια από τις σελίδες αυτές είναι και η desease_add.php στην οποία εμφανίζω όλο τον πίνακα με τις ασθένειες (εκεί χρειάζεται το pagination) και δίνω τη δυνατότητα στο χρήστη να προσθέσει μια νέα μετά από τη συμπλήρωση της φόρμας. Εγώ σε αυτό το κομμάτι του κώδικα παραπάνω πρέπει να καθορίσω το link στο οποίο θα εμφανίζονται τα αποτελέσματα. Εγώ αυτό που θέλω να ορίσω με κάποιο τρόπο είναι να βρίσκομαι σε όλες τις σελίδες των αποτελεσμάτων εδώ:

κώδικας:
"index.php?page=desease_add"
και όταν αλλάζει η σελίδα των αποτελεσμάτων να συμβαίνει κάτι τέτοιο:
κώδικας:
desease_add.php?page= '. $page_count . '

Δεν ξέρω αν είναι κατανοητό αυτό που θέλω να κάνω και το πρόβλημα που έχω. Η index είναι ουσιαστικά όλο το template της σελίδας μου. Αν βάλω στο link για τα αποτελέσματα απλά αυτό:
κώδικας:
desease_add.php?page= '. $page_count . '

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

Σε κάθε περίπτωση ευχαριστώ πάρα πάρα πολύ για την βοήθεια!
Christianago


Μέλος από: 12 Νοε 2009
Μηνύματα: 256+

View users profile
ΜήνυμαΣτις: 20 Αυγ 2011 21:07    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Να πω την αληθεια μπερδευτηκα λιγο με αυτο που θες να υλοποιησεις σε σχεση με το script σου που ειναι straight forward.
Παρακατω ειναι λιγο παραλλαγμενο το script που κανει τη σελιδοποιηση για 1 μονο πινακα με τροπο πιο απλο πιστευω.
Διαφορες: mysqli αντι για mysql και οπου γραφει στο σχολιο αντικατασταση εισαγεις τα δικα σου δεδομενα.
Δεν καταλαβα ο χρηστης πως αλληλεπιδρα με τη φορμα και τη σελιδοποιηση επειτα.
Οταν λες ο χρηστης θα προσθετει μια νεα, εννοεις ασθενεια;

κώδικας:
<?php

$db = mysqli_connect('localhost', '', '', ''); //αντικατασταση στοιχεια συνδεσης + ΒΔ
mysqli_query($db, "SET names 'greek'");
header('Content-Type: text/html; charset=greek');

$result = mysqli_query($db, "SELECT * FROM table"); //αντικατασταση

$countPages = mysqli_num_rows($result);

$pageURL = "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; //URL σελιδας
   
if (strpos ($pageURL, "?") === false || strpos ($pageURL, "1")) //ελεγχος URL
$currPage = 1; //1η σελιδα
else $currPage = substr($pageURL, -1); //υπολοιπες συμφωνα με την καταληξη του URL

$maxPages = 5;

//τα αποτελεσματα ξεκινουν απο τη γραμμη...
if ($currPage == 1)
$offset = 0;
else $offset = $maxPages * $currPage - $maxPages;

$sql = "SELECT * FROM table LIMIT $offset, $maxPages"; //αντικατασταση

$result = mysqli_query($db, $sql);

echo "<h4 align='justify'>Πίνακας διαγνώσεων</h4><br/><p align='center'>Ακολουθεί ο πίνακας των καταχωρηθέντων διαγνώσεων στη βάση δεδομένων:</p><table border='1' align='center'><tr><th>Κωδικός Διάγνωσης</th><th>Περιγραφή Διάγνωσης</th></tr>";
   
while($row = mysqli_fetch_array($result)){
echo "<tr><td>" . $row[''] . "</td>"; //αντικατασταση
echo "<td>" . $row[''] . "</td></tr>"; //αντικατασταση
}

$allPages = $countPages / $maxPages;

echo "</table><p align=center> Σελίδα: <b> $currPage </b> από <b> $allPages </b><br><br>";

$i = 1;

while ($i <= $allPages){
echo '<a href="' . $_SERVER['PHP_SELF'] . '?page=' . $i . '">' . $i . '</a> &nbsp;';
$i++;
}
 
echo '</p>';
   
?>
gvre


Μέλος από: 14 Οκτ 2010
Μηνύματα: 256+
Περιοχή: Ηράκλειο Κρήτης
View users profile Visit posters website
ΜήνυμαΣτις: 21 Αυγ 2011 11:38    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Christianago ανέφερε:

κώδικας:
<?php
$result = mysqli_query($db, "SELECT * FROM table"); //αντικατασταση
$countPages = mysqli_num_rows($result);
?>

Για να μετρήσεις τις εγγραφές που επιστρέφει ένα query χωρίς το LIMIT, χρησιμοποιείς COUNT(*) ή found_rows σε συνδιασμό με το SQL_CALC_FOUND_ROWS (αυτό παίζει μόνο σε MySQL).
Το SELECT * είναι πολύ αργό, ειδικά σε πίνακες με πολλές εγγραφές.

_________________
Web Design Ηράκλειο - Κατασκευή Ιστοσελίδων Ηράκλειο - Web Development - Επαγγελματικές Κάρτες
Aretousa2009


Μέλος από: 05 Ιουλ 2009
Μηνύματα: 31

View users profile
ΜήνυμαΣτις: 28 Μαρ 2012 00:11    Θέμα: Απάντηση με παράθεση  Mark this post and the followings unread

Προσπαθησα και εγώ να κάνω την σελιδοποίηση σύμφωνα με το πρώτο post. Η function sprintf() αλλά και η printf() μου χτυπόυσε error λέγοντας ότι είναι πολύ λίγες οι εγγραφές.
Την έβγαλα!
H function mysql_fetch_assoc μία έπαιζε μία όχι (για τιν ώρα λειτουργεί! )
παραθέτω τμήμα του κώδικα μου να μου πείτε αν γίνεται τι είναι αυτό που κάνω λάθος και η σελιδοποίση δεν γίνεται. (Επίσης η μπάρα της σελιδοποίσης είναι κάθετη και όχι οριζόντια,σωστα?)


κώδικας:

      <?php
$page=$_GET['page'];
if ($page <= 0) $page=1;
$lines=6;
$start=($page * $lines ) - $lines;            
      
      $query = "SELECT * FROM products";
      $ok=mysql_query($query,$link);
$how_rows=mysql_num_rows(mysql_query($query));
$pages=$how_rows/$lines;

echo $how_rows;
echo "<br>";
echo $pages;

      
         echo "<table border=1>";
         echo "<td> Όνομα αντικειμενου </td>";
         echo "<td> Περιγραφή          </td>";
         echo "<td> Κωδικός             </td>";
         echo "<td> Τιμή                </td>";
         echo "<td> </td>";
         echo "<tr>";

      
            while ($row = mysql_fetch_assoc($ok) )
               {
                  
             echo "<td>";echo $row['pro_name'];echo "</td>";
             echo "<td>";echo $row['pro_desc'];echo "</td>";
             echo "<td>";echo $row['code'];echo "</td>";
             echo "<td>";echo $row['price'];echo "</td>";
             echo "<td>    <form method='post' action='deletes.php'>   
                             <input type='submit' value='Delete' class='button' />
                            </form>
                  </td>";
             echo "<tr>";   
               }
                echo "</table>";
               
         }
         
            echo '<hr />';

         ?> 
ToolTimes at work ToolTimes at work ToolTimes at work
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 2 από 2 [28 Μηνύματα] Σελίδα:  Προηγούμενο  1, 2
Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » PHP Προγραμματισμός και εφαρμογές » PHP τα δικά μας scripts
Τώρα είναι 09 Δεκ 2016 05:48 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos