Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa strlen() funkcijom

[es] :: PHP :: Problem sa strlen() funkcijom

[ Pregleda: 1581 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

go_ste
Web developer
Alpha Media
Beograd

Član broj: 279616
Poruke: 9
*.beogrid.net.

Sajt: www.alphamedia.rs


Profil

icon Problem sa strlen() funkcijom13.02.2011. u 14:23 - pre 160 meseci
Najpre pozdrav svima !

Pre nekoliko dana sam postavio sajt na jedan free hosting kako bih isprobao sve funkcionalnosti (pre prelaska na novi hosting) ali se sada javlja greska koju nisam dobijao na predhodnom hostingu. Poruka je sledeca:
"Warning: strlen() expects parameter 1 to be string, array given in /home1/.../index.php on line 138"


Code:
<?
                    $sqlCategories = "SELECT * FROM products, categories where products.CategoryID=categories.CategoryID and products.SellerID=".$_REQUEST['SellerID']." and productstatus=1 order by Category asc";
                    $resultCategories = mysql_query($sqlCategories, $conn);
                    if (@mysql_num_rows($resultCategories)!=0){
                    $strcategory="";
                        while($row_categories = @mysql_fetch_array($resultCategories))
                        {            
                        $categoryduplicate=0;
                            $arrcat = explode(",",$strcategory);
                            for($i=0;$i<strlen($arrcat);$i++)
                            {
                                if($arrcat[$i]==$row_categories['CategoryID'])
                                {
                                    $categoryduplicate=1;
                                }                                    
                            }
                            if($categoryduplicate==0)
                            {
                                if($strcategory=="")
                                    {
                                        $strcategory=$row_categories['CategoryID'];
                                    }
                                    else
                                    {
                                        $strcategory=$strcategory.",".$row_categories['CategoryID'];
                                    }                
                            $sqlCategories2 = "SELECT * FROM products where CategoryID=".$row_categories['CategoryID']." and productstatus=1 and SellerID=".$_REQUEST['SellerID'];
                            $resultCategories2 = mysql_query($sqlCategories2, $conn);                            
                            echo "
                            <Tr>
                                <td width='3'><img src='../images/arrow.gif'></td>
                                <td class='content'><a href='products.php?CategoryID=".$row_categories['CategoryID']."&SellerID=".$_REQUEST['SellerID']."&Category=".$row_categories['Category']."' class='industry'>".$row_categories['Category']."</a> [".@mysql_num_rows($resultCategories2)."]</td>
                            </Tr>
                            ";
                            }
                        }
                    }                
                ?>


Koliko sam uspeo da saznam, problem je u for($i=0;$i<strlen($arrcat);$i++) koja vraca pogresan podatak ili kako vec, ali ne uspevam to da resim. Probao sam sa mb_strlen (mada nisam siguran da sam to dobro zamenio) ali nista. Da li ovo sve ima veze sa prelaskom na free hosting (nesto sa verzijom PHP-a, PHP 5.2 i PHP 5.3) ili je problem u kodu.

Hvala unapred !!!

 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
95.180.24.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: Problem sa strlen() funkcijom13.02.2011. u 14:32 - pre 160 meseci
Greska ti lepo kaze da strlen trazi string kao parametar a ti si sa explode dobio array...

uradi ovako:

Code:
for($i=0;$i<count($arrcat)-1;$i++)

 
Odgovor na temu

go_ste
Web developer
Alpha Media
Beograd

Član broj: 279616
Poruke: 9
*.beogrid.net.

Sajt: www.alphamedia.rs


Profil

icon Re: Problem sa strlen() funkcijom13.02.2011. u 16:10 - pre 160 meseci
Hvala na brzom i efikasnom odgovoru... to je to...

Hvala !!!
 
Odgovor na temu

go_ste
Web developer
Alpha Media
Beograd

Član broj: 279616
Poruke: 9
*.static.isp.telekom.rs.

Sajt: www.alphamedia.rs


Profil

icon Re: Problem sa strlen() funkcijom03.03.2011. u 15:10 - pre 160 meseci
Ovaj problem je resen ali sada imam drugi problem na istoj stranici i koliko vidim sa istim upitom.
On prikazuje sve proizvode jednog korisnika po kategorijama. Problem je sto sada ukoliko u jednoj kategoriji postoji vise proizvoda (recimo 3) on to prikaze dva puta npr:

Kategorija jedan [3]
Kategorija jedan [3]


Hvala unapred !!!
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Problem sa strlen() funkcijom03.03.2011. u 16:05 - pre 160 meseci
Citat:
Bojan Kopanja: Greska ti lepo kaze da strlen trazi string kao parametar a ti si sa explode dobio array...

uradi ovako:

Code:
for($i=0;$i<count($arrcat)-1;$i++)


Bolje je ovako:

Code:

for($i=0,$count=count($arrcat)-1;$i<$count;$i++) {


A jos bolje koristiti foreach

Code:

foreach($arrcat as $value) {




Tko leti vrijedi
 
Odgovor na temu

go_ste
Web developer
Alpha Media
Beograd

Član broj: 279616
Poruke: 9
46.240.153.*

Sajt: www.alphamedia.rs


Profil

icon Re: Problem sa strlen() funkcijom03.03.2011. u 18:34 - pre 160 meseci
Citat:
kiklop74: Bolje je ovako:

Code:

for($i=0,$count=count($arrcat)-1;$i<$count;$i++) {


A jos bolje koristiti foreach

Code:

foreach($arrcat as $value) {



To je OK i ta greska sa strlen funkcijom se vise ne javlja. Problem je sto se jedna kategorija ispisuje dva puta ukoliko u njoj ima vise proiazvoda.Na stranici se prikazuju proizvodi po kategorijama. Problem je sto sada ukoliko u jednoj kategoriji postoji vise proizvoda (recimo 3) on to prikaze dva puta npr:

Kategorija jedan [3]
Kategorija jedan [3]


a tu je i kod jos jednom:

Code:
<?
                    $sqlCategories = "SELECT * FROM products, categories where products.CategoryID=categories.CategoryID and products.SellerID=".$_REQUEST['SellerID']." and productstatus=1 order by Category asc";
                    $resultCategories = mysql_query($sqlCategories, $conn);
                    if (@mysql_num_rows($resultCategories)!=0){
                    $strcategory="";
                        while($row_categories = @mysql_fetch_array($resultCategories))
                        {            
                        $categoryduplicate=0;
                            $arrcat = explode(",",$strcategory);
                            for($i=0;$i<strlen($arrcat);$i++)
                            {
                                if($arrcat[$i]==$row_categories['CategoryID'])
                                {
                                    $categoryduplicate=1;
                                }                                    
                            }
                            if($categoryduplicate==0)
                            {
                                if($strcategory=="")
                                    {
                                        $strcategory=$row_categories['CategoryID'];
                                    }
                                    else
                                    {
                                        $strcategory=$strcategory.",".$row_categories['CategoryID'];
                                    }                
                            $sqlCategories2 = "SELECT * FROM products where CategoryID=".$row_categories['CategoryID']." and productstatus=1 and SellerID=".$_REQUEST['SellerID'];
                            $resultCategories2 = mysql_query($sqlCategories2, $conn);                            
                            echo "
                            <Tr>
                                <td width='3'><img src='../images/arrow.gif'></td>
                                <td class='content'><a href='products.php?CategoryID=".$row_categories['CategoryID']."&SellerID=".$_REQUEST['SellerID']."&Category=".$row_categories['Category']."' class='industry'>".$row_categories['Category']."</a> [".@mysql_num_rows($resultCategories2)."]</td>
                            </Tr>
                            ";
                            }
                        }
                    }                
                ?>




 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Problem sa strlen() funkcijom03.03.2011. u 21:41 - pre 160 meseci
Na stranu sto ovaj kod predstavlja ono najgore u losem PHP programiranju (a i programiranju uopste) moram da pitam sta ti u stvari zelis tacno da postignes sa ovim kodom?

Meni se cini da nepotrebno komplikujes odredjivanje da li se ponavlja kategorija ili ne.

Ako je to ono sto ti treba to se lakse odredjuje ovako:

Code:

$sqlCategories = "SELECT * FROM products p, categories c
                  WHERE    p.CategoryID=c.CategoryID 
                       AND p.SellerID={$sellerid} 
                       AND productstatus=1 
                       GROUP BY Category ASC";


I onda ne treba da odredjujes da li se kategorija ponavlja jer ce baza da vrati svaku kategoriju samo jednom. Ostale probleme u kodu ne bih da pominjem ovom prilikom.




Tko leti vrijedi
 
Odgovor na temu

[es] :: PHP :: Problem sa strlen() funkcijom

[ Pregleda: 1581 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.