Paging και εμφάνιση μηνύματος λάθους

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

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

Απάντηση
johnnys14
Δημοσιεύσεις: 70
Εγγραφή: 27 Ιουν 2008 00:41
Επικοινωνία:

Paging και εμφάνιση μηνύματος λάθους

Δημοσίευση από johnnys14 » 13 Απρ 2012 19:10

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

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

$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}

Αύτό συμβαίνει μόνο κατά το φόρτωμα της σελίδας γιατί δεν έχει τιμή η μεταβλητή $Page.

Ο κώδικας
<html>
<head>
<title>Tutorial</title>
</head>
<body>
<?
$objConnect = mysql_connect("localhost","root","") or die(mysql_error());
$objDB = mysql_select_db("paging");
$strSQL = "SELECT * FROM customer ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);

$Per_Page = 2; // Per Page

$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}

$Prev_Page = $Page-1;
$Next_Page = $Page+1;

$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;
}

$strSQL .=" order by CustomerID ASC LIMIT $Page_Start , $Per_Page";
$objQuery = mysql_query($strSQL);
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">CustomerID </div></th>
<th width="98"> <div align="center">Name </div></th>
<th width="198"> <div align="center">Email </div></th>
<th width="97"> <div align="center">CountryCode </div></th>
<th width="59"> <div align="center">Budget </div></th>
<th width="71"> <div align="center">Used </div></th>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["CustomerID"];?></div></td>
<td><?=$objResult["Name"];?></td>
<td><?=$objResult["Email"];?></td>
<td><div align="center"><?=$objResult["CountryCode"];?></div></td>
<td align="right"><?=$objResult["Budget"];?></td>
<td align="right"><?=$objResult["Used"];?></td>
</tr>
<?
}
?>
</table>

<br>
Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page :
<?
if($Prev_Page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
}

for($i=1; $i<=$Num_Pages; $i++){
if($i != $Page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
}
mysql_close($objConnect);
?>
</body>
</html>


Τι πρόβλημα να υπάρχει ;

Thanks και καλές γιορτές σε όλους!

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Paging και εμφάνιση μηνύματος λάθους

Δημοσίευση από gvre » 13 Απρ 2012 21:37

johnnys14 έγραψε: $Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}
Αντικατάστησε το παραπάνω με το

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

$Page = &#40;isset&#40;$_GET&#91;'Page'&#93;&#41; && &#40;$p = &#40;int&#41;$_GET&#91;'Page'&#93;&#41; && $p > 0&#41; ? $p &#58; 1;
Πριν προσπαθήσεις να διαβάσεις τιμές από κάποιο array θα πρέπει πάντα να ελέγχεις αν υπάρχει το key (στην περίπτωσή σου το 'Page'). Κάποιες φορές το κάνεις με την isset και κάποιες άλλες με την array_key_exists.

Το tutorial που βρήκες δεν είναι πολύ καλό. Κάπου εδώ μέσα θα βρεις καλύτερα, αν ψάξεις λίγο.

Καλό Πάσχα :)

johnnys14
Δημοσιεύσεις: 70
Εγγραφή: 27 Ιουν 2008 00:41
Επικοινωνία:

Paging και εμφάνιση μηνύματος λάθους

Δημοσίευση από johnnys14 » 14 Απρ 2012 12:31

Σε ευχαριστώ πολύ για την απάντηση φίλε μου!

Καλό Πάσχα!

Απάντηση

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

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

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