Εμφάνιση αποτελεσμάτων

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

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

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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 15 Οκτ 2008 17:40

Θέλω να εμφανίζω τα αποτέλεσματα ενός select ανά κάποιο αριθμό εγγραφών.
πχ. από εγγραφή 1 εώς 5 για παράδειγμα ή απο σελίδα 1 εώς 5.
Και πατώντας επάνω σε ένα next να εμφανίζει τις επόμενες εγγραφές.σελίδες

Φαντάζομαι θα πρέπει να κάνω κάποιο select count, αλλά μετά;
Ενα for i=0, i++5 κ.λ.π. θα παίξει;
Η μήπως χρειάζεται άλλη διαδικασία;


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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 15 Οκτ 2008 18:17

Αν σου πω οτι έψαχνα 2 ώρες, αλλά με keyword "Εμφάνιση αποτελεμάτων"; :lol: :lol: :lol: :lol:

Ευχαριστώ, θα το κοιτάξω.

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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 30 Οκτ 2008 16:27

Χμμ!
Το βοήθημα του panos είναι πολύ καλό αλλά μόλις ασχολήθηκα λίγο και το "'εφερα στα μέτρα μου", προέκυψε ένα άλλο πρόβλημα:

Μέσω μίας σελίδας κάνω ένα search (με form action = κ.λ.π κ.λ.π) με κάποια κριτήρια.
$searchterm και $searchtype.
Οταν οδηγούμε για πρώτη φορά στην σελίδα των αποτελεσμάτων όλα δουλεύουν μιά χαρά.
Οταν όμως πηγαίνω στίς επόμενες σελίδες, μου εμφανίζει undifined index $searchterm/type και πολύ σωστά γιατί στην ουσιά ξανατρέχει το script απ' την αρχή, μόνο που αυτή τη φορά δεν έχουν δηλωθεί τα κριτήρια.
Δοκίμασα να παρακάμψω το κριτήριο με <a name> tag αλλά δεν δούλεψε.
Μετά σκέφτηκα να δηλώνω το $searchterm και δοκίμασα το:

if ($page != ceil($pages))
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=".($page + 1)."&searchterm='".$_POST["searchterm"]."'\" title=\"Μετάβαση στη σελίδα ".($page + 1)."\">Επόμενη</a> | ";

Παρ' όλο που αυτό κρατάει την τιμή του $searchterm, δεν το μεταφέρει στην επόμενη σελίδα.

Υπάρχει κάποιος άλλος τρόπος να περνάει το searchterm σε κάθε επόμενη σελίδα;
Μπορεί να γίνει με κάποιο τρόπο ή πρέπει να δουλέψω με session_start();
Το έχει δοκιμάσει κάποιος άλλος;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Εμφάνιση αποτελεσμάτων

Δημοσίευση από korgr » 30 Οκτ 2008 17:00

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

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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 30 Οκτ 2008 17:21

Σ'ευχαριστώ korgr.
Θησαυρός που είναι δύσκολο να τον βρείς υπάρχει εδώ μέσα :D

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Εμφάνιση αποτελεσμάτων

Δημοσίευση από vassilism » 30 Οκτ 2008 17:35

Και ακόμα ένας απλός τρόπος είναι εκεί που κάνεις link για την μετάβαση στις σελίδες να περνάς μια μεταβλητή που θα έχεις περάσει από πριν τα ονόματα που χρησιμοποιείς στα πεδία σου.
Π.χ, κρατάς στην μεταβλητή keywords τα δεδομένα:

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

$keywords = "& searchterm =".urlencode&#40;$searchterm&#41;."& searchtype =".urlencode&#40;$searchtype&#41;;  
Και στην συνέχεια την περνάς απευθείας στο link:

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

echo "<a href=\"&#123;$_SERVER&#91;'PHP_SELF'&#93;&#125;?page=".&#40;$page + 1&#41;. $keywords. "'\" title=\"Μετάβαση στη σελίδα ".&#40;$page + 1&#41;."\">Επόμενη</a> | ";
Όποτε αν χρειαστεί στο μέλλον να προσθέσεις και άλλο ένα πεδίο στην αναζήτηση να μπορείς να το δηλώνεις μόνο μια φορά στη μεταβλητή keywords.
Αυτή τη μεταβλητή πρέπει να την περάσεις σε όλα τα link που κάνουν την μετάβαση στις σελίδες.

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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 30 Οκτ 2008 17:46

vassilism έγραψε:Και ακόμα ένας απλός τρόπος είναι εκεί που κάνεις link για την μετάβαση στις σελίδες να περνάς μια μεταβλητή που θα έχεις περάσει από πριν τα ονόματα που χρησιμοποιείς στα πεδία σου.
Π.χ, κρατάς στην μεταβλητή keywords τα δεδομένα:

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

$keywords = "& searchterm =".urlencode&#40;$searchterm&#41;."& searchtype =".urlencode&#40;$searchtype&#41;;  

Σε έχασα λίγο.
Εννοείς στο form action ="" να βάλω την μεταβλητή;
Ναι αλλά την πρώτη φορά που θα τρέχει η σελίδα η keywords θα είναι null.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Εμφάνιση αποτελεσμάτων

Δημοσίευση από vassilism » 30 Οκτ 2008 22:44

Όχι στο form action.
Μπορείς να το βάλεις στο script που κάνει την σελιδοποίηση ή σε ένα άλλο αρχείο και να το συνδέσεις.

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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 31 Οκτ 2008 13:02

Μπα.
Δεν.

Το πρόβλημα είναι οτι η φόρμα αναζήτησης και η φόρμα εμφάνισης είναι στην ίδια σελίδα. Αλλά ακόμα κι αν τις αποσυνδέσω, το $_SERVER κρατάει τις "αρχικές ρυθμίσεις" που έχουν μέσα και την φόρμα αναζήτησης.
Ετσι παρ' όλο που η φόρμα μεταφέρει το $keyword στην επόμενη σελίδα, αυτές δεν λαμβάνονται υπ' όψην. :evil:


Βάζω και το select, μπας και είναι εκεί το πρόβλημα

$qp1 = "select distinct(a.carea),a.*,b.lcustid,b.llogo,c.barea
from customers a, logos b,banners c
where $searchterm = '".trim ($_POST["searchterm "])."' and $searchtype = '".trim ($_POST["searchtype "])."'
and a.custid = b.lcustid and a.carea = c.barea";

$qp2 = sprintf("%s ORDER BY `custid` DESC LIMIT %d,%d",$qp1,$start,$lpr);

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Εμφάνιση αποτελεσμάτων

Δημοσίευση από vassilism » 31 Οκτ 2008 13:17

Για βάλε τον κώδικα να δούμε.

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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 31 Οκτ 2008 13:44

//----------------------------Η HTML ΦΟΡΜΑ. ΦΥΣΙΚΑ ΔΕΝ ΕΙΝΑΙ ΟΛΟΚΛΗΡΗ ΟΠΟΤΕ ΜΠΟΡΕΙΣ ΝΑ ΑΓΝΟΗΣΕΙΣ ΤΑ ΣΠΑΣΜΕΝΑ td ΚΑΙ tr.------------------//
<form action="search.php" method="post" name = "cust_data_entry">
<tr>
<td height="70" colspan="3" valign="top">&nbsp;</td>
</tr>
<tr>
<td width="23" height="45">&nbsp;</td>
<td width="156" valign="top"> <div align="center">
<select name = "searchterm">
<option value = "1">TEST 1</option>
<option value = "2">TEST 2</option>
<option value = "3">TEST 3</option>
</select>
</div></td>
<td width="41">&nbsp;</td>
</tr>
<tr>
<td width="23" height="24">&nbsp;</td>
<td> <div align="center">
<select name = "searchtype" style="width:147px">
<option value = "1">ΔΟΚΙΜΗ 1</option>
<option value = "2">ΔΟΚΙΜΗ 2</option>
<option value = "2">ΔΟΚΙΜΗ 3</option>
</select>
</div>
<div align="right"> </div></td>
<td rowspan="2">&nbsp;</td>
</tr>
<input name="image" type="image" value = "ΚΑΤΑΧΩΡΗΣΗ" src="images/find.png" width="66" height="30">
</div></td>
</tr>
<tr>
<td height="126" colspan="3" valign="top"> </tr>
</form>

//------------------------------ΕΛΕΓΧΟΣ ΣΥΝΔΕΣΗΣ ΚΑΙ ΧΡΗΣΗ ΤΗΣ ΒΑΣΗΣ------------------//
require (".php");


//------------------------------ΤΟ PAGINATION ΤΟΥ PANOS------------------//
$page = $_GET['page'];

if ($page <= 0) $page = 1;

$lpr = 1;

$start = ($page * $lpr) - $lpr;


//------------------------------ΤΟ ΔΙΚΟ ΜΟΥ QUERY------------------//
$qp1 = "select distinct(a.carea),a.*,b.lcustid,b.llogo,c.barea
from customers a, logos b,banners c
where $searchterm = '".trim ($_POST["searchterm"])."' and
$searchtype = '".trim ($_POST["searchtype"])."'
and a.carea = '1' and a.ctype = '1' and a.cfavid = '1'
and a.custid = b.lcustid and a.carea = c.barea";


//-------------------------ΣΥΝΕΧΕΙΑ ΣΤΟ PAGINATION ΤΟΥ PANOS------------------//
$qp2 = sprintf("%s ORDER BY `custid` DESC LIMIT %d,%d",$qp1,$start,$lpr);

$getDataLen = mysql_num_rows(mysql_query($qp1));

$pages = $getDataLen / $lpr;

$getData = mysql_query($qp2);

while ($row = mysql_fetch_assoc($getData))
{
//------------------------------ΕΔΩ ΕΚΤΥΠΩΝΩ ΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ------------------//
$keywords = "&carea=".$_POST["carea"]."&ctype=".$_POST["ctype"]." ";
}


//-------------------------ΣΥΝΕΧΕΙΑ ΣΤΟ PAGINATION ΤΟΥ PANOS------------------//
echo '<hr />';
if ($page > 1)
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=1".$keywords."\" title=\"Μετάβαση στην πρώτη σελίδα\">Αρχική Σελίδα</a> | ";

if ($page > 1)
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=".($page - 1).$keywords."\" title=\"Μετάβαση στη σελίδα ".($page - 1)."\">Προηγούμενη</a> | ";

for ($pageList = 1; $pageList <= $pages; $pageList++)
{
if ($pageList != $page)
{
echo "<a href=\"{$_SERVER['PHP_SELF']}?page={$pageList}".$keywords."\" title=\"Μετάβαση στη σελίδα {$pageList}\">{$pageList}</a> | ";
}
else
{
echo "<strong>{$pageList}</strong> | ";
}
}

if ($page != ceil($pages))
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=".($page + 1).$keywords."\" title=\"Μετάβαση στη σελίδα ".($page + 1)."\">Επόμενη</a> | ";

if ($page != ceil($pages))
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=".ceil($pages).$keywords."\" title=\"Μετάβαση στην τελευταία σελίδα\">Τελευταία Σελίδα</a> ";
"</div>";
mysql_free_result($getData);






Οταν λοιπόν πάω να κάνω την μετάβαση στη δεύτερη/τρίτη/κ.λ.π. σελίδα είτε το form action =
είτε το "<a href=\"{$_SERVER['PHP_SELF']} ακυρώνουν τα κριτήρια.
Για την ακρίβεια τα κάνουν undifined.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Εμφάνιση αποτελεσμάτων

Δημοσίευση από vassilism » 31 Οκτ 2008 20:41

Για δοκίμασε αυτό:

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

//------------------------------ΕΛΕΓΧΟΣ ΣΥΝΔΕΣΗΣ ΚΑΙ ΧΡΗΣΗ ΤΗΣ ΒΑΣΗΣ------------------// 
require &#40;".php"&#41;; 


//------------------------------ΤΟ PAGINATION ΤΟΥ PANOS------------------// 
$page = $_GET&#91;'page'&#93;; 

if &#40;$page <= 0&#41; $page = 1; 

$lpr = 1; 

$start = &#40;$page * $lpr&#41; - $lpr; 


//------------------------------ΤΟ ΔΙΚΟ ΜΟΥ QUERY------------------// 
$qp1 = "select distinct&#40;a.carea&#41;,a.*,b.lcustid,b.llogo,c.barea 
from customers a, logos b,banners c 
where $searchterm = '".trim &#40;$_POST&#91;"searchterm"&#93;&#41;."' and 
$searchtype = '".trim &#40;$_POST&#91;"searchtype"&#93;&#41;."' 
and a.carea = '1' and a.ctype = '1' and a.cfavid = '1' 
and a.custid = b.lcustid and a.carea = c.barea"; 



//-------------------------ΣΥΝΕΧΕΙΑ ΣΤΟ PAGINATION ΤΟΥ PANOS------------------// 
$qp2 = sprintf&#40;"%s ORDER BY `custid` DESC LIMIT %d,%d",$qp1,$start,$lpr&#41;; 

$getDataLen = mysql_num_rows&#40;mysql_query&#40;$qp1&#41;&#41;; 

$pages = $getDataLen / $lpr; 

$getData = mysql_query&#40;$qp2&#41;; 

$searchterm = htmlspecialchars&#40;mysql_real_escape_string&#40;$_GET&#91;"searchterm"&#93;&#41;&#41;;  
$searchtype = htmlspecialchars&#40;mysql_real_escape_string&#40;$_GET&#91;"searchtype"&#93;&#41;&#41;;  

$keyword = "& searchterm =".urlencode&#40;$searchterm&#41;."& searchtype =".urlencode&#40;$searchtype&#41;;


while &#40;$row = mysql_fetch_assoc&#40;$getData&#41;&#41; 
&#123; 
//------------------------------ΕΔΩ ΕΚΤΥΠΩΝΩ ΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ------------------// 
$keywords = "&carea=".$_POST&#91;"carea"&#93;."&ctype=".$_POST&#91;"ctype"&#93;." "; 
&#125; 


//-------------------------ΣΥΝΕΧΕΙΑ ΣΤΟ PAGINATION ΤΟΥ PANOS------------------// 
echo '<hr />'; 
if &#40;$page > 1&#41; 
echo "<a href=\"&#123;$_SERVER&#91;'PHP_SELF'&#93;&#125;?page=1".$keyword."\" title=\"Μετάβαση στην πρώτη σελίδα\">Αρχική Σελίδα</a> | "; 

if &#40;$page > 1&#41; 
echo "<a href=\"&#123;$_SERVER&#91;'PHP_SELF'&#93;&#125;?page=".&#40;$page - 1&#41;.$keyword."\" title=\"Μετάβαση στη σελίδα ".&#40;$page - 1&#41;."\">Προηγούμενη</a> | "; 

for &#40;$pageList = 1; $pageList <= $pages; $pageList++&#41; 
&#123; 
if &#40;$pageList != $page&#41; 
&#123; 
echo "<a href=\"&#123;$_SERVER&#91;'PHP_SELF'&#93;&#125;?page=&#123;$pageList&#125;".$keyword."\" title=\"Μετάβαση στη σελίδα &#123;$pageList&#125;\">&#123;$pageList&#125;</a> | "; 
&#125; 
else 
&#123; 
echo "<strong>&#123;$pageList&#125;</strong> | "; 
&#125; 
&#125; 

if &#40;$page != ceil&#40;$pages&#41;&#41; 
echo "<a href=\"&#123;$_SERVER&#91;'PHP_SELF'&#93;&#125;?page=".&#40;$page + 1&#41;.$keyword."\" title=\"Μετάβαση στη σελίδα ".&#40;$page + 1&#41;."\">Επόμενη</a> | "; 

if &#40;$page != ceil&#40;$pages&#41;&#41; 
echo "<a href=\"&#123;$_SERVER&#91;'PHP_SELF'&#93;&#125;?page=".ceil&#40;$pages&#41;.$keyword."\" title=\"Μετάβαση στην τελευταία σελίδα\">Τελευταία Σελίδα</a> "; 
"</div>"; 
mysql_free_result&#40;$getData&#41;;

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

Εμφάνιση αποτελεσμάτων

Δημοσίευση από Apostolis_38 » 03 Νοέμ 2008 12:55

Δυστυχώς όχι :evil:
Πιθανολογώ οτι αν βρώ τρόπο να παρακάμψω το "επαναφόρτωμα" του query θα είναι εντάξει, γιατί τα κριτήρια μεταφέρονται στην page.
Το κακό είναι οτι ο μόνος τρόπος παράκαμψης που ξέρω είναι το <a name> το οποίο δεν δουλεύει.
Σκέφτομαι να βάλω ένα if ($page > 1) πρίν το query, αλλά πως στο καλό θα οδηγήσω το script 5 γραμμές πιο κάτω;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Εμφάνιση αποτελεσμάτων

Δημοσίευση από korgr » 03 Νοέμ 2008 13:59

Όταν η φόρμα και τα αποτελέσματα είναι στην ίδια σελίδα, μπορείς να αφήσεις κενό το action της φόρμας:

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

<form action="" method="post" name = "cust_data_entry">
Έτσι θα σου τραβάει αυτόματα και όλο το GET του URL σου...

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

Παράδειγμα που χρησιμοποιεί και το GET στα links του pagination, αλλά και το POST από select list μπορείς να δεις στο portfolio μας:
http://www.webpage.gr/

Απάντηση

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

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

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