Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Koodis on viga aga ei oska parandada. märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 07.08.2009 00:48:45 Koodis on viga aga ei oska parandada. vasta tsitaadiga

Pookisin SELLE lehekülgedele jaotaja oma otsingumootorile külge. Kõik toimib ilusti, sinna maani kui otsingus leitakse ka vastus. Kui aga vastus puudub siis tuleb selline error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-50,50' at line 1
Lehel näidatakse siis korraga 50 vastust aga kui vastust ei leitud tekkis mingi viga.

php:
  1. <?php
  2. $_GET['ipp'] = 50;
  3. class Paginator{
  4.         var $items_per_page;
  5.         var $items_total;
  6.         var $current_page;
  7.         var $num_pages;
  8.         var $mid_range;
  9.         var $low;
  10.         var $high;
  11.         var $limit;
  12.         var $return;
  13.         var $default_ipp = 50;
  14.         var $querystring;
  15.  
  16.         function Paginator()
  17.         {
  18.                 $this->current_page = 1;
  19.                 $this->mid_range = 7;
  20.                 $this->items_per_page = (!empty($_GET['ipp'])) ? $_GET['ipp']:$this->default_ipp;
  21.         }
  22.  
  23.         function paginate()
  24.         {
  25.                 if($_GET['ipp'] == 'All')
  26.                 {
  27.                         $this->num_pages = ceil($this->items_total/$this->default_ipp);
  28.                         $this->items_per_page = $this->default_ipp;
  29.                 }
  30.                 else
  31.                 {
  32.                         if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp;
  33.                         $this->num_pages = ceil($this->items_total/$this->items_per_page);
  34.                 }
  35.                 $this->current_page = (int) $_GET['page']; // must be numeric > 0
  36.                 if($this->current_page < 1 Or !is_numeric($this->current_page)) $this->current_page = 1;
  37.                 if($this->current_page > $this->num_pages) $this->current_page = $this->num_pages;
  38.                 $prev_page = $this->current_page-1;
  39.                 $next_page = $this->current_page+1;
  40.  
  41.                 if($_GET)
  42.                 {
  43.                         $args = explode("&",$_SERVER['QUERY_STRING']);
  44.                         foreach($args as $arg)
  45.                         {
  46.                                 $keyval = explode("=",$arg);
  47.                                 if($keyval[0] != "page" And $keyval[0] != "ipp") $this->querystring .= "&" . $arg;
  48.                         }
  49.                 }
  50.  
  51.                 if($_POST)
  52.                 {
  53.                         foreach($_POST as $key=>$val)
  54.                         {
  55.                                 if($key != "page" And $key != "ipp") $this->querystring .= "&$key=$val";
  56.                         }
  57.                 }
  58.  
  59.                 if($this->num_pages > 10)
  60.                 {
  61.                         $this->return = ($this->current_page != 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$prev_page$this->querystring\">Eelmine</a> ":"<span class=\"inactive\" href=\"#\">Eelmine</span> ";
  62.  
  63.                         $this->start_range = $this->current_page - floor($this->mid_range/2);
  64.                         $this->end_range = $this->current_page + floor($this->mid_range/2);
  65.  
  66.                         if($this->start_range <= 0)
  67.                         {
  68.                                 $this->end_range += abs($this->start_range)+1;
  69.                                 $this->start_range = 1;
  70.                         }
  71.                         if($this->end_range > $this->num_pages)
  72.                         {
  73.                                 $this->start_range -= $this->end_range-$this->num_pages;
  74.                                 $this->end_range = $this->num_pages;
  75.                         }
  76.                         $this->range = range($this->start_range,$this->end_range);
  77.  
  78.                         for($i=1;$i<=$this->num_pages;$i++)
  79.                         {
  80.                                 if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... ";
  81.                                 // loop through all pages. if first, last, or in range, display
  82.                                 if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range))
  83.                                 {
  84.                                         $this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<span class=\"valik\">$i</span> ":"<a class=\"paginate\" title=\"Mine lehele $i/$this->num_pages-st\" href=\"$_SERVER[PHP_SELF]?page=$i$this->querystring\">$i</a> ";
  85.                                 }
  86.                                 if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... ";
  87.                         }
  88.                         $this->return .= (($this->current_page != $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All')) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$next_page$this->querystring\">Järgmine</a>\n":"<span class=\"inactive\" href=\"#\">Järgmine</span>\n";
  89.                         //$this->return .= ($_GET['page'] == 'All') ? "<a class=\"valik\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
  90.                 }
  91.                 else
  92.                 {
  93.                         for($i=1;$i<=$this->num_pages;$i++)
  94.                         {
  95.                                 $this->return .= ($i == $this->current_page) ? "<span class=\"valik\">$i</span> ":"<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$i$this->querystring\">$i</a> ";
  96.                         }
  97.                         //$this->return .= "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n"; keerasin selle kinni
  98.                 }
  99.                 $this->low = ($this->current_page-1) * $this->items_per_page;//VIGA PEAKS KUSKIL SIIN OLEMA
  100.                 $this->high = ($_GET['ipp'] == 'All') ? $this->items_total:($this->current_page * $this->items_per_page)-1;
  101.                 $this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page";
  102.         }
  103.  
  104.         function display_items_per_page()
  105.         {
  106.                 $items = '';
  107.                 $ipp_array = array(10,25,50,100,'All');
  108.                 foreach($ipp_array as $ipp_opt) $items .= ($ipp_opt == $this->items_per_page) ? "<option selected value=\"$ipp_opt\">$ipp_opt</option>\n":"<option value=\"$ipp_opt\">$ipp_opt</option>\n";
  109.                 return "<span class=\"paginate\">Items per page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>\n";
  110.         }
  111.  
  112.         function display_jump_menu()
  113.         {
  114.                 for($i=1;$i<=$this->num_pages;$i++)
  115.                 {
  116.                         $option .= ($i==$this->current_page) ? "<option value=\"$i\" selected>$i</option>\n":"<option value=\"$i\">$i</option>\n";
  117.                 }
  118.                 return "<span class=\"paginate\">Page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page='+this[this.selectedIndex].value+'$this->querystring';return false\">$option</select>\n";
  119.         }
  120.  
  121.         function display_pages()
  122.         {   if ($this->items_total > $this->items_per_page)//kui vastuseid on vähem kui 50 siis lehekülje jagajat ei näidata
  123.                 return $this->return;
  124.         }
  125. }


Minu arvates peaks viga olema 99ndal real. Aga kuidas seda parandada? Ja mis seal üldse valesti on.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
neros
HV Guru
neros

liitunud: 26.11.2003




sõnum 07.08.2009 08:25:57 vasta tsitaadiga

tsitaat:

at line 1

icon_rolleyes.gif

Proovi see $_GET rida ära kommenteerida ning viska enda lehekülje aadressi lõppu ?ipp=50 hoopis... siis vaatame kas üldse midagi muud tarvis teha on. Kuidas sa üldse selle peale tulid et 99ndalt realt vea leida? Esialgsel silmadega üle käimisel küll midagi ei leidnud...

_________________
GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt.
Kommentaarid: 48 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum
i8080
Kreisi kasutaja
i8080

liitunud: 15.03.2002



Autoriseeritud ID-kaardiga

sõnum 07.08.2009 10:15:14 vasta tsitaadiga

veateade ütleb ju, et viga tekib sql päringus, rida 1. mitte php rida 1.
konkreetselt ei meeldi päringus olev koht -50,50
(edit: ehk on sealt sel momendil jupp puudu, kuna kurdeti, et viga tekib tühja otsingu korral
ja see tühi koht satub sinna päringusse where klauslisse valesti. näiteks nagu "where something=123 and '-50,50'")
sql päring pannakse vist valesti kokku ja see asub kuskil mujal, mitte siin toodud koodis.
Kommentaarid: 169 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 151
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 07.08.2009 12:33:42 vasta tsitaadiga

See -50,50 on siis LIMIT mis tekib tühja päringu korral.
Aga igatahes sain asja korda. Panin 101 rea ette if ($this->items_total!=0)
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
stinger
HV kasutaja

liitunud: 04.10.2003




sõnum 07.08.2009 14:25:00 vasta tsitaadiga

pane ikka "asi > 0"
Kommentaarid: 41 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 41
tagasi üles
vaata kasutaja infot saada privaatsõnum
Absona
Lõuapoolik
Lõuapoolik

liitunud: 17.09.2008




sõnum 07.08.2009 16:27:36 vasta tsitaadiga

stinger kirjutas:
pane ikka "asi > 0"


Mis siis saab kui on salvestatud andmebaasi näiteks -1, või -20 (näiteks valideerimine on niimoodi tehtud, et on andmebaasi on lubatud salvestada kõik numbrid, nii miinustega kui ka ilma). Ise soovitaksin sellist asja: if (blabla == null)

_________________
Veebilehed, veebiprogrammeerimine, veebilahendused
Erinevad rakendused ja skriptid.
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 08.08.2009 14:07:31 vasta tsitaadiga

Tänud, parandasin ära.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Koodis on viga aga ei oska parandada.
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.