Multi Pagination help

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

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

Απάντηση
Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Multi Pagination help

Δημοσίευση από Intefix » 20 Μάιος 2010 20:18

Γιά σας... Χρησιμοποίησα κώδικα του fafos μέλους μας...
Μπορώ να χρησιμομοιήσω την ίδια κλάση σε πολλές σελίδες;
Μια σελίδα πχ.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>
Αναζήτηση Δ.Ο.Υ.
</title>

<!-- Meta Tags -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Kontos Harry" content="techelp.gr" />


<!-- CSS-->
<link rel="stylesheet" href="css/structure.css" type="text/css" media="screen" />

<!-- SCRIPTS -->
<script language='JavaScript' src='functions.js'></script>
<script type="text/javascript" src="script.js"></script>

<body>
<center>

<?php
include "header.php";
include_once("page.inc.php");
?>


<table width="100%" cellpadding="1" cellspacing="1" >
        <tbody>
			<tr>
				<td><h2 id="logo" style="color:#4A5148">Δ.Ο.Υ. - Επεξεργασία</h2></td>
			</tr>
        	
        </tbody>
</table>

		<br/>
		
		
<form action="" method="get" id="Form1">
	<table width="60%" cellpadding="3" cellspacing="3" style="border-width : 1px 1px 1px 1px;border-style : solid solid solid solid;border-color : #ddebda #ddebda #ddebda #ddebda;" bgcolor="#f1f9ee">
		<tbody>
			<tr>
				<td align="center" class="text">ΔΟΥ:</td>
				<td align="center" class="text"><input size="20" type="text" name="doy"></td>
				<td align="center" class="text">Πόλη:</td>
				<td align="center" class="text"><input size="20" type="text" name="city"></td>
				<td align="center" class="text"><input type="submit" value="Αναζήτηση" class="subm"></td>
			</tr>
  
		<?php 
			if(($_GET[doy]) or ($_GET[city]))
			{
				$sql = "SELECT bs_doy.*, bs_prefecture.prefecture
						FROM bs_doy LEFT JOIN bs_prefecture 
						ON bs_doy.prefecture_id = bs_prefecture.prefecture_id 
						WHERE ( doy LIKE '%$_GET[doy]%' and city LIKE '%$_GET[city]%' )
						ORDER BY  BINARY doy ASC";
				$result = mysql_query($sql,$conn);
				$total_records=@mysql_num_rows($result);
				
				$search_string = "&doy=".$_GET[doy]."&city=".$_GET[city];
				//echo $search_string;
			} 
			else 
			{
				$sql = "SELECT *
						FROM bs_doy
						ORDER BY  BINARY doy ASC";
						
				
				$result = mysql_query($sql,$conn);
				$total_records=@mysql_num_rows($result);
			}   
	
			//how many pages in paging menu
				$scroll=25;

				$page=new Page(); ///creating new instance of Class Page
				$page->set_page_data($videosurl,$total_records,$record_per_page,$scroll,true,true,true);
				$result=@mysql_query($page->get_limit_query($sql));
				
				
			echo '<p margin : 0px;padding : 0px;padding-bottom : 5px;">';
				$page->get_first_page_nav("[Αρχική]&nbsp;");
				$page->get_prev_page_nav("&laquo;Προηγούμενη&nbsp;");
				$page->get_number_page_nav();
				$page->get_next_page_nav("&nbsp;Επόμενη&raquo;");
				$page->get_last_page_nav("&nbsp;[Τελευταία]");
			echo '</p>';
			
			if(mysql_num_rows($result) > '0')
			
			{  

			
			echo '<table width="100%" cellpadding="3" cellspacing="3">
					<tbody>
						<tr style="background-color : #f2f9ff;">
							<td width="10%" align="left" valign="middle" class="text"><b>Τίτλος</b></td>
							<td width="10%" align="left" valign="middle" class="text"><b>Νομός</b></td>
							<td width="20%" align="left" valign="middle" class="text"><b>Διεύθυνση</b></td>
							<td width="10%" align="left" valign="middle" class="text"><b>Πόλη</b></td>
							<td width="10%" align="left" valign="middle" class="text"><b>Τηλέφωνο</b></td>
							<td width="20%" align="left" valign="middle" class="text"><b>Υπεύθυνος</b></td>							
							
							
						</tr>';
						
						//<td width="25%" align="left" valign="middle" class="text"><b>Διαγραφή</b></td>
						
						
				$n = 1;
				while($row = mysql_fetch_array($result))
			{  
				if(!($n % 2)) { $bg = "class='dif'"; } else { $bg = ''; }

				$ccode= $row&#91;code&#93;;
			echo 		'<tr '.$bg.'>
							<td width="10%" align="left" valign="top" class="text"> 
							<a href="doy_edit.php?doy_id='.$row[doy_id].'"title="Διόρθωση" >'.$row[doy].'</a> </td>
							<td width="10%" align="left" valign="top" class="text">'.$row[prefecture].'</td>							
							<td width="20%" align="left" valign="top" class="text">'.$row[address].'</td>	
							<td width="10%" align="left" valign="top" class="text">'.$row[city].'</td>	 
							<td width="10%" align="left" valign="top" class="text">'.$row[phone].'</td>	 
							<td width="20%" align="left" valign="top" class="text">'.$row[response].'</td>	 
														
						</tr>';
						
						/*<td width="25%" align="left" valign="top" class="text"><span>
							<a href="doy_delete.php?doy_id='.$row[doy_id].'" style="cursor : pointer;color : white;
							background-color : #ff0000;border-width : 1px 1px 1px 1px;border-style : solid solid solid solid;
							border-color : #cc0000 #cc0000 #cc0000 #cc0000;font-weight : bold;width : 120px;height : 20px;" 
							onClick="return confirm(\'Είστε σίγουρος για την διαγραφή? \')">[Χ]Διαγραφή</a></td>  */
						
						
						
				$n++;
			} 
			echo '</tbody>
				</table>';

			}
			else { echo 'Δεν βρέθηκαν καταχωρήσεις.';}

		?>

		<?php echo '<p margin : 0px;padding : 0px;padding-bottom : 5px;">';
			$page->get_first_page_nav("[Αρχική]&nbsp;");
			$page->get_prev_page_nav("&laquo;Προηγούμενη&nbsp;");
			$page->get_number_page_nav();
			$page->get_next_page_nav("&nbsp;Επόμενη&raquo;");
			$page->get_last_page_nav("&nbsp;[Τελευταία]");
			echo '</p>'; ?>
 </form>
			</td>
		</tr>
    </tbody>
</table>
<?php
include "footer.php";
?></center>
</body>
</html>&#91;/code&#93;

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

Multi Pagination help

Δημοσίευση από fafos » 20 Μάιος 2010 20:31

1. kanoume include thn class afou thn exoume sosei kapou (p.x. paging.php)

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

include 'paging.php';
apo kato ksekinas to query gia na travhksei ta dedomena..

2. Kaloume ta parakato:

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

$record_per_page=8;//apotelesmata ana selida


$scroll=6;//selides sto paging

$page=new Page&#40;&#41;; 
    $page->set_page_data&#40;$katiurl,$total_records,$record_per_page,$scroll,true,true,true&#41;;

$page->set_qry_string&#40;"cat=$cat&word=$word&all=$all&order=$order"&#41;;// edo vazeis tyxon synthikes anazhthshs ton dedomenon

$result=@mysql_query&#40;$page->get_limit_query&#40;$sql&#41;&#41;;

klp klp
to kommati pou endiaferei einai auto:

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

$page->set_qry_string&#40;"cat=$cat&word=$word&all=$all&order=$order"&#41;;// edo vazeis tyxon synthikes anazhthshs ton dedomenon
auto tha to valeis an exeis kapoia anazhthsh h taxinomish sta dedomena sou... gia paradeigma an kaneis anazhthsh sto titlo me $_GET[title] apo mia forma, auto tha ginei etsi:

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

$page->set_qry_string&#40;"title=$title"&#41;;
($title = $_GET[title])

an exeis kai alles anazhthseis prostheteis opos sto paradeigma..

An DEN exeis kapoia anazhthsh h taxinomish dedomenon kai kaneis mia aplh selidopoihsh, auton ton kodika ton svhneis

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Multi Pagination help

Δημοσίευση από Intefix » 21 Μάιος 2010 09:06

Όλα που αναφέρεις γίνονται στη σελίδα αναζήτησης και όχι στο pagination.php έτσι?
Για να επαναλάβω...έχω κάμποσες σελίδες που κάνω αναζήτηση Υπαλλήλους, προϊόντα κλπ.
Η κάθε σελίδα έχει 1-3 input text η και select..
Το πρόβλημα είναι πως αν το αποτέλεσμα αναζήτησης είναι περισσότερο από μια σελίδα πηγαίνοντας σε άλλη χάνει τις τιμές του φίλτρου και εμφανίζει όολα τα αποτελέσματα.

Αλλού διαβάζω...Include paginator.class.php at the top of your script require_once 'paginator.class.php';Note: You could use include(), include_once(), or require() however using require_once ensures that the class will only be included once and if it can’t be found, will cause a fatal error....

Σας ευχαριστώ πάντα για τη βοήθεια...

Μορείτε να με βοηθήσετε στο εξής;
1)Στη δική μας περίπτωση όταν ανοίγει η σελίδα σελιδοποιεί όλα τα δεδομένα του πίνακα. Έτσι αν έχω πολλά δεδομένα αργεί και τρώει badwidth. Θα ήθελα να μην βγάζει κανένα αποτέλεσμα αν δεν κάνεις submit.

2)...στο WHERE του query που επιστρέφει δεδομένα από τη σελίδα/φόρμα employees είναι πχ
WHERE ( lname LIKE '$_GET[lname]%' AND fname LIKE '$_GET[fname]%'
AND f_fname LIKE '$_GET[f_fname]%' AND m_fname LIKE '$_GET[m_fname]%'
AND id_num LIKE '$_GET[id_num]%' AND afm LIKE '$_GET[afm]%'
AND land_phone LIKE '%$_GET[phone]%')
παρατήρησα το εξής...αν ένα πεδίο από αυτά δεν έχει δεδομένα (NULL) πχ το m_fname ΔΕΝ εμφανίζει την εγγραφή στο αποτέλεσμα ενώ τα άλλα πεδία έχουν data. Πως πρέπει να γράψω το where?

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

Multi Pagination help

Δημοσίευση από fafos » 21 Μάιος 2010 17:07

Thn class thn kaleis sthn selida anazhthshs... xrhsimopoihse gia include opoia methodo thes..
sthn allagh selidas pairneis lathos apotelesmata giati den akolouthises-katalaves auto pou anafero poio pano:
to kommati pou endiaferei einai auto:
κώδικας:
$page->set_qry_string("cat=$cat&word=$word&all=$all&order=$order");// edo vazeis tyxon synthikes anazhthshs ton dedomenon


auto tha to valeis an exeis kapoia anazhthsh h taxinomish sta dedomena sou... gia paradeigma an kaneis anazhthsh sto titlo me $_GET[title] apo mia forma, auto tha ginei etsi:
κώδικας:
$page->set_qry_string("title=$title");

($title = $_GET[title])

an exeis kai alles anazhthseis prostheteis opos sto paradeigma..
to lathos sou einai oti trexeis ta get apeutheias sto query anazhthshs.. me auton ton tropo kanoun party sto site sou... psakse sto fs gia sql injections...


1. lathos... den anoigei ola ta dedomena.. anoigei mono ton arithmo eggrafon pou exeis orisei sto: $record_per_page=8;
an douleue allios to systhma, to google stis kales anazhthseis tha eprepe na anoige meta apo 1 evdomada.. gia na mhn sou dinei apotelesmata xoris anazhthsh prepei na oriseis mia synthikh otan oi eggrafes=0 (mysql_num_rows($result) )


2. pali synthikh edo... ean $fafos="" {mhn kaneis tipota} allios {AND fafos LIKE '$fafos%' }


katevase to vohthima pou exo edo gia gallery me jquery... anoikse to main.php kai des ton kodika gia na katalaveis pos douleoun ta queries kai to paging..

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Multi Pagination help

Δημοσίευση από Intefix » 21 Μάιος 2010 20:50

Σε ευχαριστώ...ακόμα δεν το εφτιαξα...τώρα το δουλεύω

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Multi Pagination help

Δημοσίευση από Intefix » 21 Μάιος 2010 20:54

fafos έγραψε:...
1. lathos... den anoigei ola ta dedomena..
τότε γιατί κάνει 3 sec σε localhost Βάση με 80000 εγραφές; Υποτίθεται για να σελιδοποιήσει πρέπει να τρέξει όλες τις εγγραφές...

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Multi Pagination help

Δημοσίευση από Intefix » 21 Μάιος 2010 21:06

τέλεια....έπεξε μια χαρά...είσαι όπως πάντα αρχηγός..
fafos έγραψε:...to lathos sou einai oti trexeis ta get apeutheias sto query anazhthshs.. me auton ton tropo kanoun party sto site sou... psakse sto fs gia sql injections...


Πως να το αποφύγω;....

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

Multi Pagination help

Δημοσίευση από fafos » 21 Μάιος 2010 22:23

Intefix έγραψε: Πως να το αποφύγω;....
http://www.freestuff.gr/forums/viewtopic.php?t=8735

thn kathysterhsh prepei na thn perneis se anazhthsh.. an trexeis xoris anazhthsh to query logika den tha exeis para dekata tou deuteroleptou.. alla 3 deutera einai polla kai gia anazhthsh se local.. isos ftaine ta dedomena sou... gia paradeigma an exeis ena field pou xreiazetai 9 xarakthres (vlepe afm) kai esy tou exeis dosei varchar 200 xarakthron, tote h mysql kanei askopes anazhthseis... (den leo oti to exeis kanei esy.. genika milao)..

Intefix
Δημοσιεύσεις: 186
Εγγραφή: 22 Σεπ 2007 16:21
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Multi Pagination help

Δημοσίευση από Intefix » 22 Μάιος 2010 09:48

fafos έγραψε:...
thn kathysterhsh prepei na thn perneis se anazhthsh..
αυτό λέω θέλω μόλις ανοίγει η σελίδα να μην κανει αναζήτηση με κενά τα fields αλλά μόνο αν παήσω το submit.
fafos έγραψε:... gia paradeigma an exeis ena field pou xreiazetai 9 xarakthres (vlepe afm) kai esy tou exeis dosei...
όχι δεν συμβαίνει κάτι τέτοιο...
Intefix έγραψε:...
else
{
$sql = "SELECT *
FROM bs_doy
ORDER BY BINARY doy ASC";


$result = mysql_query($sql,$conn);
$total_records=@mysql_num_rows($result);
}

//how many pages in paging menu
$scroll=25;...........
Αν κάνω exit εδώ χάνω το υποσέλιδο αν το σβήσω χτυπάει γιατί ψάχνει να μετρήσει εγγραφές...που να βάλω να εκτελείτε όταν κάνω submit;
ευχαριστώ για τον χρόνο σου....

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

Multi Pagination help

Δημοσίευση από Apostolis_38 » 22 Μάιος 2010 14:46

Μετά τη φόμα σου βάλε ένα

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

if &#40;isset &#40;$_GET&#91;"μεταβλητή"&#93;&#41; &#41; &#123; &#125;
και μέσα στα άγκιστρα βάλε όλο το πρόγραμμα που κάνει την αναζήτηση/σελιδοποίηση ώστε να εκτελείτε εαν και εφόσον οριστεί η μεταβλητή.
Αν δεν θέλεις να μπλέξεις με τις μεταβλητές που ήδη χρησημοποιείς μπορείς να βάλεις κάποιο hidden field στη φόρμα.

Πάντως, σε αυτή την περίπτωση αυτή τη μεταβλητή θα πρέπει να φροντίσεις να την ξαναστέλνεις κατά την σελιδοποίηση, αλλιώς δεν θα σου τρέχει. π.χ.

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

$search_string = "&doy=".$_GET&#91;doy&#93;."&city=".$_GET&#91;city&#93;&$μεταβλητή=".$_GET&#91;μεταβλητή&#93;;

Απάντηση

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

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

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