PHP problem (mislim da nije velik)

poruka: 34
|
čitano: 5.157
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

Radim CMS na kojem imam stranicu opsirnije.php i na to stranici se prikazuje vijest, npr. /opsirnije.php?id=10 , na stranici sam napravio da se prikaže naslov, autor, datum i sadržaj iz baze podatak, a ispod sadrzaja da bude forma za unos komentara na tu vijest, ispod forme se prikazuju komentari, Problem je u tome  ako ukucam npr.  /opsirnije.php?id=21 a nema vijesti u bazi podataka pod tim id-om (naravno zbog toga na stranici mi se ne ispise ni naslov,ni autor, ni datum  ni sadrzaj jer ih nema pod tim id-pom), ali mi se prikaze forma za unos komentara i komentari na toj stranici na kojoj NEMA vijesti. Probao sam svašta ali nije uspjelo pa evo kod da vidite i pomognete ako znate:

 

 

<?php include("zaglavlje.php"); ?>
<body>
<?php



include("cms-admin/postavke.php");

        $id = $_GET['id'];
        
        $result = mysql_query("SELECT * FROM vijesti WHERE id='$id' ",$connect);
        while($vijesti = mysql_fetch_assoc($result))
             {
                     echo "<b>";
                     echo $vijesti['naslov'];
                     echo "</b><br>Na: <i>";
                     echo $vijesti['datum'];
                     echo "</b><br>Napisao: <i>";
                     echo $vijesti['autor'];
                     echo "</i><hr>";
                     echo $vijesti['uvod'];
                     echo " ";
                     echo $vijesti['sadrzaj'];
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";
                     
             }
             



    
include ("cms-admin/postavke.php");

if(isset($_POST['submit']))

  {

      

      $idvijesti = $_GET['id'];

      $ime = mysql_escape_string($_POST['ime']);

      $komentar = mysql_escape_string($_POST['komentar']);

     

 

             

              if(!$ime){  

                     echo "Greška: niste unijeli ime!";

                     exit();

              }

 


         $result = mysql_query("INSERT INTO komentari (ime, idvijesti, komentar, datum) VALUES ('$ime', '$idvijesti', '$komentar', NOW())",$connect);

       

          echo "<b>Hvala komentar dodan!<br>";


  }
    
 
 

else {


 



 

      ?>

      <br />

      <h3>Dodaj komentar</h3>

 

      <form method="post" action="<?php echo $PHP_SELF ?>">

 

      Ime:<br /> <input name="ime" size="40" maxlength="255" />

      <br />

      Komentar:<br /> <textarea name="komentar"  rows="7" cols="30"></textarea>

     
      <br />

      <input type="submit" name="submit" value="Dodaj" />

      </form>

      <?php
       
}

             
  include("cms-admin/postavke.php");

       
        $result = mysql_query("SELECT * FROM komentari WHERE idvijesti='$id' ORDER BY datum LIMIT 100",$connect);
        while($komentari = mysql_fetch_assoc($result))
             {
                     echo "<b>";
                     echo $komentari['ime'];
                     echo "</b><br>Na: <i>";
                     echo $komentari['datum'];
                    
                     
                     echo "</i><hr>";
                     echo $komentari['komentar'];
                    
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";      
                     }    
                

?>

</body>
<?php include("podnozje.php"); ?>

k1.c0
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
PHP problem (mislim da nije velik)

A gle, ti jedino provjeravaš da li je forma za unos komentara submitana. Kako u većini slučajeva nije, uvijek ti se prikaže forma. Moraš malo bolje razradit logiku same aplikacije.

 

Ono što trebi treba je provjera da li ima komentara, tj. da li je rezultat query-a dobar.

 

Pitanja:

  • Zašto 3 puta includeaš admin postavke (file)???
  • Zašto ti se footer iliti podnožje kako si ga nazvao includea iza zatvorenog body tag-a. To mi je nekako suvišno, jer iza njega ide samo zatvoreni html tag.

 

Samo zato što ste na forumu, ne znači da ne morate pisati gramatički točne rečenice !!!
Poruka je uređivana zadnji put čet 12.11.2009 9:48 (coder_).
Moj PC  
1 0 hvala 0
16 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)

mores li mi napisati kod za provjeru da li ima komentara(je li rezultat querya dobar) jer te ne kuzim

 

ova pitanja sam popravio :

1. ni sam neznam sto sam triput includea

 

2. greskom sam napisao u kodu

</body>

 


podnozje.php :

 

<div id="footer"><?php echo $footer; ?></div>

</body>

</html>

k1.c0
17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
k1c0 kaže...

mores li mi napisati kod za provjeru da li ima komentara(je li rezultat querya dobar) jer te ne kuzim

 

ova pitanja sam popravio :

1. ni sam neznam sto sam triput includea

 

2. greskom sam napisao u kodu

</body>

 


podnozje.php :

 

<div id="footer"><?php echo $footer; ?></div>

</body>

</html>

Prvo komentari, onda kod...

 

1. Gle, morao je postojat neki razlog zašto si 3 puta radio include jednog filea. Vjerojatno si mislio da treba. Nema potrebe 3 puta includeati jedan file, samo možeš dobit error ili warning. Ništa više.

 

2. Dakle, obriši taj zatvoreni body tag prije includeanja jer ti inače site neće proći validaciju.

 

A evo i koda...

 

Ako imaš provjeru i dohvat komentara, onda bi to trebalo izgledati nekako ovako:

 

<?php

 

$id = mysql_real_escape_string($_POST['idvijesti']);

$sql = "SELECT * FROM komentari WHERE idvijesti = '$id'"; // Upitnik zamjeni sa id-em posta

 

$result = mysql_query($sql);

 

$komentari = array(); // Prazno polje u koje ćeš spremati komentare

if($result) { // Uvjeriš se da ti je query izvršen, tj. da nije došlo do pogreške prilikom izvršavanja

 

$counter = 0;

while($row = mysql_fetch_assoc($result)) {

 

$komentari[$counter] = $row;

$counter++;

 

}

 

}

E sad, kako ti je polje $komentari u global scope-u, vrlo lako možeš provjeriti da li ima submitanih komentara za određeni post.

 

if(!empty($komentari)) {

// Ispiši komentare

}

Samo zato što ste na forumu, ne znači da ne morate pisati gramatički točne rečenice !!!
Poruka je uređivana zadnji put čet 12.11.2009 11:30 (coder_).
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

mislim da me nisi skužio na stranici, npr. /opsirinije.php?id=28 nikako nema vijesti pod id=$id ,a prikazuje mi se forma za unos komentara. Sada posjetitlej more ukucati adresu npr. /opsirnije.php?id=100 gdje nema uopce nikakve vijesti, a ima forma za komentare i on unese samo komentar koji ce se prikazivati ispod forme iako nema vijesti. to mi je problem . napravio sam ovo sto si mi rekao sada se komentari uopce nemogu ispisati na stranici

 

k1.c0
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
k1c0 kaže...

mislim da me nisi skužio na stranici, npr. /opsirinije.php?id=28 nikako nema vijesti pod id=$id ,a prikazuje mi se forma za unos komentara. Sada posjetitlej more ukucati adresu npr. /opsirnije.php?id=100 gdje nema uopce nikakve vijesti, a ima forma za komentare i on unese samo komentar koji ce se prikazivati ispod forme iako nema vijesti. to mi je problem . napravio sam ovo sto si mi rekao sada se komentari uopce nemogu ispisati na stranici

 

Isprika! Sorry...

 

Dakle, sve što treba napraviti je:

 

<?php

 

$id = mysql_real_escape_string($_POST['idvijesti']);

$sql = "SELECT * FROM vijesti WHERE idvijesti = '$id' LIMIT 1"; // Query za provjeru postojanja vijesti

 

$result = mysql_query($sql);

 

$vijest = array();

if($result)

{

 

$Vijest = mysql_fetch_assoc($result);

 

}

 

if(!empty($vijest))

{

 

if(isset($_POST['dodaj_komentar']))

{

// Dodavanje komentara

}

else

{

// Prikaz forme

}

 

}

 

Evo ovako, u ovom slučaju ti se neće niti prikazati forma, niti unositi komentar ukoliko nema posta.. Prilagodi svojim vrijednostima i poljima u bazi.

'Ko sa 15 ne zna for petlju...zdraavooo, zdraaavoooo!!!!
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

sada mi se nista ne prikazuje na stranici hmm, hvala na pomoći ako ti se ne da vise probat cu ja sam

k1.c0
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
k1c0 kaže...

sada mi se nista ne prikazuje na stranici hmm, hvala na pomoći ako ti se ne da vise probat cu ja sam

Gle, ovo ti je samo primjer kako trebaš radit. Zato sam ti i napisao da ga prilagodiš sebi. Ali načelno, to ti je logika kojom trebaš ići.

'Ko sa 15 ne zna for petlju...zdraavooo, zdraaavoooo!!!!
16 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)

!empty jel to znači ako ima vijesti (!-netočno, empty, netočno da je prazno) pa da da napisem kod ako ima rezultta da ih prikaze?

//dodavanje komentara - tu sam stavio kod za unos komentara

//prikaz forme - tu mi je formaa

 

EDIT: prije nego sam ottvorio temo probao sam mnogo načina sa petljama ali nisam uspio

k1.c0
Poruka je uređivana zadnji put čet 12.11.2009 22:18 (k1c0).
16 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)

Najobičniji if ti je tu potreban.. ovako:

 

<?php include("zaglavlje.php"); ?>
<body>
<?php



include("cms-admin/postavke.php");

        $id = $_GET['id'];
        
        $result = mysql_query("SELECT * FROM vijesti WHERE id='$id' ",$connect);

 

// ** OVJDE IDE IF ***

//    -> 

 

$count = mysql_num_rows($result);

if($count == 0)

{

echo "<h1>Error 404 - Page not found </h1>"; // ili vec kaj zelis da javi korisniku..


/* također možeš ubaciti neki kod za preusmjeravanje na gl stranu il slicno..tipa:

*

* header("Location ./index.php");

* die(); <-- ovaj die() je bitan jer se nakon headera skripta nastavi dalje izvodit, a ovo je prekine

*

*/

}

else

{ // <-- prva vitičasta, a druga je na kraju skripte
        while($vijesti = mysql_fetch_assoc($result))
             {
                     echo "<b>";
                     echo $vijesti['naslov'];
                     echo "</b><br>Na: <i>";
                     echo $vijesti['datum'];
                     echo "</b><br>Napisao: <i>";
                     echo $vijesti['autor'];
                     echo "</i><hr>";
                     echo $vijesti['uvod'];
                     echo " ";
                     echo $vijesti['sadrzaj'];
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";
                     
             }
             



    
include ("cms-admin/postavke.php");

if(isset($_POST['submit']))

  {

      

      $idvijesti = $_GET['id'];

      $ime = mysql_escape_string($_POST['ime']);

      $komentar = mysql_escape_string($_POST['komentar']);

     

 

             

              if(!$ime){  

                     echo "Greška: niste unijeli ime!";

                     exit(); 

              }

 


         $result = mysql_query("INSERT INTO komentari (ime, idvijesti, komentar, datum) VALUES ('$ime', '$idvijesti', '$komentar', NOW())",$connect);

       

          echo "<b>Hvala komentar dodan!<br>";


  }
    
 
 

else {


  



 

      ?>

      <br />

      <h3>Dodaj komentar</h3>

 

      <form method="post" action="<?php echo $PHP_SELF ?>">

 

      Ime:<br /> <input name="ime" size="40" maxlength="255" />

      <br />

      Komentar:<br /> <textarea name="komentar"  rows="7" cols="30"></textarea>

     
      <br />

      <input type="submit" name="submit" value="Dodaj" />

      </form>

      <?php
       
}

             
  include("cms-admin/postavke.php");

       
        $result = mysql_query("SELECT * FROM komentari WHERE idvijesti='$id' ORDER BY datum LIMIT 100",$connect);
        while($komentari = mysql_fetch_assoc($result))
             {
                     echo "<b>";
                     echo $komentari['ime'];
                     echo "</b><br>Na: <i>";
                     echo $komentari['datum'];
                    
                     
                     echo "</i><hr>";
                     echo $komentari['komentar'];
                    
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";
                     echo "<br />";      
                     }    
                
}  // <-- druga vitičasta zagrada
?>

 

nadam se da kužš :) ovo ti provjeri dal ima uopce zapis u bazi za taj id (to radi sa funkcijom mysql_num_rows koja broji koliko je redova vratio query) i onda ak je taj broj nula odnosno ak nema rezultata za taj id, ispisuje poruku ili redirekta, a ak ima neceg u bazi, izvodi sve ostalo kaj si napisao. 

 

p.s. sori zbog ruznog prikaza koda, mrzim ove stilove na bug forumu, nikad ne ispadnu kak treba :(

Poruka je uređivana zadnji put čet 12.11.2009 22:51 (br0wn).
17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
br0wn kaže...

Najobičniji if ti je tu potreban.. ovako:

 

echo "<h1>Error 404 - Page not found </h1>"; // ili vec kaj zelis da javi korisniku..


/* također možeš ubaciti neki kod za preusmjeravanje na gl stranu il slicno..tipa:

*

* header("Location ./index.php");

* die(); <-- ovaj die() je bitan jer se nakon headera skripta nastavi dalje izvodit, a ovo je prekine

*

*/

Samo da se nadovežem da ovo ovdje neće raditi ukoliko makneš komentare kod headera zato jer već imaš output. Prvo otvoreni body tag, a zatim i ovaj h1 error 404. Dakle, header MORA BITI PRIJE BILO KAKVOG OUTPUTA!! inače dobiješ errorčić.. :D

'Ko sa 15 ne zna for petlju...zdraavooo, zdraaavoooo!!!!
16 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
coder_ kaže...
br0wn kaže...

Najobičniji if ti je tu potreban.. ovako:

 

echo "<h1>Error 404 - Page not found </h1>"; // ili vec kaj zelis da javi korisniku..


/* također možeš ubaciti neki kod za preusmjeravanje na gl stranu il slicno..tipa:

*

* header("Location ./index.php");

* die(); <-- ovaj die() je bitan jer se nakon headera skripta nastavi dalje izvodit, a ovo je prekine

*

*/

Samo da se nadovežem da ovo ovdje neće raditi ukoliko makneš komentare kod headera zato jer već imaš output. Prvo otvoreni body tag, a zatim i ovaj h1 error 404. Dakle, header MORA BITI PRIJE BILO KAKVOG OUTPUTA!! inače dobiješ errorčić.. :D

 

joj, da, sorry, zaboravio sam na to *ups* :) ... imas zgodne funkcije u phpu za output buffering... pogledaj ovdje : http://php.net/manual/en/book.outcontrol.php, mislim da ti trebas ob_start() i ob_flush() , ali procitaj malo o tome jos na ovo linku koj sam ti dao..

 

dakle, ob_start() ubaciš na sam vrh skripte, odmah nakon <?php taga :)

 

još jednom ponavljam, pročitaj što koja funkcija radi prije nego ih budeš koristio      :)

 

 

ili onaj <body> i include("zaglavlje.php"); staviš nakon else-a ( iza onog di piše  // <---- prva vitičasta, druga je na kraju skripte ).. sam pazi da ispred prvog <?php taga nemaš nikakvu prazninu ili znak..

Poruka je uređivana zadnji put čet 12.11.2009 23:45 (br0wn).
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

najviše vam zahvaljujem na pomoći sada mi sve radi, onaj gdje ste stavili header(Location ./index.php);

die()

javlja grešku na liniji 30 , ali nema veze jer sam stavio

include("404.html");

ako stranica pod nekim ID-om ne postoji

aj hvala jos jednom Cool

k1.c0
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)

ah...da, sorry..mora biti ovako:



header("Location: ./index.php"); die();

Poruka je uređivana zadnji put pet 13.11.2009 11:34 (br0wn).
17 godina
offline
RE: PHP problem (mislim da nije velik)
bruce willis kaze


diehard :);

 

I'm going woo woo
17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
tnakir kaže...
bruce willis kaze


diehard :);

 

Zato je meni ipak nekako miliji exit();  hehehe

'Ko sa 15 ne zna for petlju...zdraavooo, zdraaavoooo!!!!
17 godina
offline
PHP problem (mislim da nije velik)

Bas ruzno ime za metodu :)

 

Ko "Crkni"

I'm going woo woo
 
1 0 hvala 0
17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
tnakir kaže...

Bas ruzno ime za metodu :)

 

Ko "Crkni"

hehe

Krepaj skripto, da Bog da se više nikada ne pokrenila!!! :D hehehe

 

DIE();

'Ko sa 15 ne zna for petlju...zdraavooo, zdraaavoooo!!!!
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

i ja sam bio primjetio da nisi dobro bio napisao kod, zaboravio dvotočje iza Location, i kada sam dodao dvotočje opet je javljalo grešku, nema veze nek sam ja riješio ovo što mi je trebalo, napravio sam danas i pagination i broj rezultata po stranici

šta mislis bi li ovako mogao napraviti kategorije :

kada unosim vijest, naslov, autora i datum da unesim i ime kategorije i onda na glavnoj stranici, index.php, dodam u kod

 

sql = " SELECT FROM vijesti WHERE kategorija = '$kategorija' ORDER BY id DESC";

 

zatim

 

if ($kategorija = sport) {

/* znaci ako sam za kategoriju kada sam dodavao vijesti napisao sport da mi ono ispise vijest iz kategorije sport čija će pozadina od naslova biti  npr. plave boje, a naslov bijele */

echo "<div class='kategorijasport'>" . $row['naslov'] . "</div>";

echo $row['autor'];

echo "<br />" . $row['uvod'];

}

k1.c0
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
k1c0 kaže...

i ja sam bio primjetio da nisi dobro bio napisao kod, zaboravio dvotočje iza Location, i kada sam dodao dvotočje opet je javljalo grešku, nema veze nek sam ja riješio ovo što mi je trebalo, napravio sam danas i pagination i broj rezultata po stranici

šta mislis bi li ovako mogao napraviti kategorije :

kada unosim vijest, naslov, autora i datum da unesim i ime kategorije i onda na glavnoj stranici, index.php, dodam u kod

 

sql = " SELECT FROM vijesti WHERE kategorija = '$kategorija' ORDER BY id DESC";

 

zatim

 

if ($kategorija = sport) {

/* znaci ako sam za kategoriju kada sam dodavao vijesti napisao sport da mi ono ispise vijest iz kategorije sport čija će pozadina od naslova biti  npr. plave boje, a naslov bijele */

echo "<div class='kategorijasport'>" . $row['naslov'] . "</div>";

echo $row['autor'];

echo "<br />" . $row['uvod'];

}

 

 

može, ali onda ces za svaku kategoriju imati po jedan if ( puno kategorija -> puno ifova ), pa ce ti postati nepregledno... bolje ti je ovako ( ti onda prilagodi svojim potrebama ):

 

// napraviš switch:

switch($kategorija)

{

case "sport":

 

/*

* e sad, tu mozes odabrat dva nacina:

*

* 1. Ako imas potpuno drugaciji ispis za pojedinu kategoriju (tipa, zelis drugaciji raspored divova za ovu kategoriju, ili druge bannere/slike ili sl..

*    onda ides ovako:

*/

 

include("sport.php");

break;

/*

 

* Dakle, u sport.php se nalazi sve što želiš da se ispiše pod kategorijom 'sport'.

*

* 2. Ako ti je ispis isti (isti raspored divova i ostalo), a samo zelis druge stilove za div (boje naslova slova i tome slicno)

* onda mozes to ovako izvest:

*/

 

$class="kategorijasport";  // umjesto klase može biti id

break;

 

case "bla":

// ... itd..

 

default:

// nesto sto se treba ispisat kad nisi odabro kategoriju..

}

 

/*

* e sad, za prvi način ti sve piše u sport.php, pa tu nemoras vise nis stavljat za ispis..ako neces..ponavljam, neznam kako si organiziro kod i sajt..

* a za drugi način, tu staviš onaj svoj div, a kao class mu staviš varijablu $class ovako:

*/

 

<div class="<?php echo $class; ?>">

<h1>Naslov</h1>

</div>

 

 

evo, to je ovak nagrubo jer sve ovisi o tome kak si organiziro kod sajta..nadam se da ce pomoci :) opet, sori na ružnom kodu..poludit cu zbog ovog njihovog WYSIWYG editora !!!!

Poruka je uređivana zadnji put pet 13.11.2009 23:23 (br0wn).
17 godina
neaktivan
offline
PHP problem (mislim da nije velik)

Bit kod programiranja je da logički u što manje koraka riješiš problem koji je pred tobom. Dakle, ovdje se konkretno radi o kategorijama.

Pošto će se te kategorije spremati u bazu i kasnije prema njima čupati podaci, također iz baze, nema potrebe za nikakvim provjerama putem "if"-a ili "switch"-a. Jednostavno pokupiš sve potrebne podatke iz baze i to je to. Ali moraš paziti da imaš nekakav unique identifikator pojedine kategorije da ne bi došlo do miješanja sadržaja.

 

Primjer: 

 

Pretpostavka: Imaš dvije tablice, jedna za podatke o kategoriji, druga za vijesti iliti članke unutar kategorije

 

Imaš zadanu kategoriju "sport" koja ima nekakav unique id

 

<?php

 

$categoryID = 1;

 

Dalje imaš provjeru da li ta kategorija postoji:

 

<?php

 

$sql = "SELECT * FROM category WHERE `category_id` = '$categoryID' LIMIT 1"; // Pošto logički po requestu možeš odabradi samo jednu kategoriju zaštitiš se da ti iz baze vuče samo jedno polje podataka -> (LIMIT 1)

 

$result = msql_query($sql);

 

if($result)

{

$categoryData = mysql_fetch_assoc($result); // I to je to, imaš podatke od kategorije

}

 

Ok, idemo sada na dohvaćanje vijesti/članaka za selektiranu kategoriju

 

<?php

 

$sql = "SELECT * FROM vijesti WHERE `category_id` = $categoryID";

 

$result = mysql_query($sql);

 

$vijesti = array();

if($result)

{

 

$brojac = 0;

while($row = mysql_fetch_assoc($result))

{

$vijesti[$brojac] = $row;

$brojac++;

}

 

}

 

I sada, dalje gradiš svoj layout prema podacima koje imaš...

 

 

<?php

 

if(!empty($vijesti)) {

 

echo "<div id='popis_vijesti' class='{$categoryData['category_name']}'>";

 

foreach($vijesti as $_vijest) {

 

// Sad ispišeš sve vijesti kako god želiš

 

}

 

} else {

 

echo "<div class='message info'>Kategorija ne sadrži vijesti.</div>";

 

}

 

E sada da ti akžem što je bitno. Pošto radiš cms, cilj je da sve radiš dinamički. Od kreiranja kategorije, ubacivanja vijesti, editiranja vijesti. Ako ti staviš provjeru imena kategorije u "if" ili "switch" gubiš dinamičnost jer si ograničio broj kategorija na broj provjera "if"-a ili "switcha". Što na kraju krajeva ubija kompletan koncept CMS-a

 

"Dva puta mjeri, jednom reži" iliti "Dva puta promisli i isplaniraj kako i što, a jednom tipkaj kod".

 

 

E sada, ovo sve što sam natipkao je sve abstraktno. Dakle, nije striktno vezano za tvoj kod. Ti moraš prilagoditi svome kodu kako odgovara. Ali ovo ti je jedan dobar pokazatelj kako trebaš razmišljati prilikom izrade aplikacije. Misli uvijek par koraka unaprijed. Misli kako ćeš unaprijeđivati svoj kod, kako ćeš ga održavati.

 

Nema ništa gore nego kada nakon nekog vremena (kada već zaoraviš kako si i što programirao) pogledaš kod i skužiš da će ti idućih nekoliko sati/dana/tjedana biti pakleno jer nisi mislio na to kako održavati kod.

 

Dakle,u čemu je fora. Ako želiš nabrzinu iskoditrat nešto onda će to u većini slučajeva biti statično i hardcodirano. No ako želiš dinamičnost, onda sjedi i razmisli kako ćeš postavlajti stvari. CMS je dosta kompliciran sustav, i to iz dosta razloga. Moraš voditi brigu o dodavanju sadržaja, o izgledu sadržaja, njihovom editiranju.

 

dr. Mito Korupcija, doktor političkih znanosti.
Poruka je uređivana zadnji put sub 14.11.2009 0:09 (coder_).
Moj PC  
2 0 hvala 0
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

CMS mi je prvi veći projekat otkad sam "naucio" PHP i MySQL i sve sve slobodno vrijeme ulažem u njega, na večer prije spavanja, ako ne mislim i nekoj curi razmisljam sta bi mogao sljedeći put dodati u CMS Cool.  Za kategorije sam želio preko if jer sam zaboravio switch funkciju koju znam dobro, ali jbg sto je znam ako sam zaboravio zasto služi. sada si mi ti napisao i ono drugo sto sam zelio ali te nisam pitao za to pa ti jos jednom zahvaljujem, a to je pregled vijesti iz pojedine kategorije. hvala jos jednom, ako opet zapnem nadam se das opet pomoći

k1.c0
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

 

Tek sad sam primijetio da si mi ti napisao kod za stranicu na kojoj će se prikazivati samo vijesti iz jedne kategorije. Ja sam mislio da napravim naslovnu nešto slično kao na ovoj stranici , naslov kategorije zabava je roze boje, naslov buissnes kategorije  crvene boje dok je kategorije sport plave boje , ali možda si ti dobro napisao ali

/*

* e sad, tu mozes odabrat dva nacina:

*

* 1. Ako imas potpuno drugaciji ispis za pojedinu kategoriju (tipa, zelis drugaciji raspored divova za ovu kategoriju, ili druge bannere/slike ili sl..

*    onda ides ovako:

*/

mislim da je ovo za pojedinu kategoriu stranica nakojoj ce se ispisivati vijesti samo iz jedne kategorije

k1.c0
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)

aaa, ti si to mislio...da, ovo kaj sam napisao pod jedan je za ispis postova iz jedne kategorije, a ovo sto ti zelis mozes s onim pod 2. :)

 

ili, mislim da ce ti biti lakse ovako, ako ti je su ti kategorije već predodređene tj. ak znaš da ćeš imat sport, vrijeme, bla, bla i to je sve, onda si mozes napravit polje  $class koje ce izgledati na primjer ovako:

 

$class['sport'] = 'klasasport';

 

i tako za sve kategorije...onda, kada budes izlistavao kategorije mozes staviti u div ovako nesto:

 

// recimo da imas neku varijablu $category_name (ili ako dobivas podatke iz baze $row['category_name'], s tim da 'category_name' je ime stupca iz baze koje ti moras zamijeniti svojim ) u kojoj je ime kategorije... prvo ju svedes na sva mala slova:

 

$category_name = strtolower($category_name);

 

// i onda u divu radis ovo:

 

<div class="<?php echo $class[$category_name]; ?>">

   .....

</div>

 

nemora nužno biti div, može biti bilo koji tag na koji želiš stavit tu klasu..

17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)

Dobro što ti to želiš napraviti, ali to je samo header neke kategorije. Njega možeš staviti kakvog god želiš. Pomoću CSS-a.

 

Recimo da imaš tablicu sa informacijama o kategoriji:

 

 

  1. id (int [3]) : Unique identifikator kategorije
  2. category_name (varchar [255]) : Ime kategorije
  3. category_description (varchar [255]) : Opis kategorije
  4. visible_front (bool [default = true]) : Vidljivost kategorije na početnoj stranici (Ono što ti treba)
  5. published (bool [default = false]) : Da li je kategorija objavljena ili ne
Dakle, nekako moraš definirati koje ti se kategorije ispisuju. Kako na početnoj tako i na cijelom siteu. Flag "visible_front" je zadužen za provjeru kod ispisa na početnoj stranici, dok je flag "published" zadužen za objavu kategorije vijesti na cijelom siteu.
Dakle, povadiš sve objavljenje kategorije iz baze, i onda samo na početnoj provjeriš da li je ona vidljiva na početnoj stranici ili ne.
<?php
// Vadiš iz baze popis svih objavljenih kategorija vijesti
$sql = "SELECT * FROM category WHERE `published` = 1 ";
$result = mysql_query($sql);
$podaci = array();
if($result) {
while($row = mysql_fetch_assoc($result)) {
// Pošto ti je id u tablici kategorija unique(ne postoje dva ista), možeš ga koristit i kao key u polju podataka kategorija i vijesti
$podaci[$row['id']] = $row;
}
}
Podatke o kategoriji već imaš, sad prelazimo na vijesti.
<?php
if(!empty($podaci)) {
foreach($podaci as &$_podatak) {
// Sada vadiš sve vijesti iz određene kategorije
$sql = "SELECT * FROM vijesti WHERE `category_id` = '{$_podatak['id']}'"; Možeš vaditi i samo jednu, onda samo na kraj querya staviš LIMIT 1
$result = mysql_query($sql);
if($result) {
while($row = mysql_fetch_assoc($result)) {
$_podatak['vijesti'] = $row;
unset($_podatak);
} // end while
} // end if
} // end foreach
} // end if
Opet ponavljam, sve ovo što pišem ja abstraktno i nije prilagođeno tebi i tvom CMS-u jer ne znam imena tablica, itd...
No ovo ti je ideja kako napraviti stvar koju želiš...

 

dr. Mito Korupcija, doktor političkih znanosti.
Poruka je uređivana zadnji put sub 14.11.2009 12:57 (coder_).
17 godina
offline
PHP problem (mislim da nije velik)

Dakle razmisljaj ovako...

 

Dinamicko dodavanje kategorija vijesti (npr tablica vijesti_kategorija)

Dinamicko dodavanje vijesti na kategoriju (npr tablica vijesti)

Dinamicko dodavanje slika na vijest (tablica slika)

 

Pa ako mislis imat multilinqual cms onda bi islo ovako

 

tablica jezik

kategorija_vijest koja ovisi o jeziku

...

 

 

A ostatak pogledaj kako ti je _coder radio...

 

Nista ne ostavljaj fiksno, kad vec radis radi da te klijent ne mora mucit za pola godine vec ga samo odprdis, "gospodine mozete to sve preko cms-a napravit"

I'm going woo woo
 
0 0 hvala 0
17 godina
neaktivan
offline
RE: PHP problem (mislim da nije velik)
tnakir kaže...

Dakle razmisljaj ovako...

 

.

.

.

Updavo tako...

 

P.S. Na krivu stranu si crticu stavio!!! Sram te bilo.. Smijeh hehehehe

Šalim se.. :)

dr. Mito Korupcija, doktor političkih znanosti.
Poruka je uređivana zadnji put sub 14.11.2009 15:57 (coder_).
16 godina
neaktivan
offline
PHP problem (mislim da nije velik)

tražio sam po internetu i nisam mogao naći ili nisam dobroo tražio to kako se dodaje slika u bazu , stavljao sam u formu za unos vijesti tinymce ali nisam sliku mogao dodati samo bold  i italic mi je radio

k1.c0
Moj PC  
0 0 hvala 0
17 godina
offline
PHP problem (mislim da nije velik)

Ne dodajes sliku u bazu...

 

dodajes path slike

 

 

dakle imas folder npr

 

/upload/<kategorija>/<vijesti_id>/slika.jpg

 

 

a u bazi imas tablicu

 

table slika

id_slika

id_clanak

url_slika (nvarchar(max))

sirina (int)

visina (int)

izdvojena (to je za npr glavnu sliku u vijesti) (int, 0 ili 1)

 

prilikom uploada slike nju dignes u pripadajuci folder (dakle ovisno o kategoriji, id-u clanka - ja to tako radim da mi je lakse brisati kada obrisem kategoriju/clanak, obrisem cijeli folder umjesto sliku po sliku, manje kodiranja, iako sada radim "repozitorij slika" u novom cms.u, gdje uploadam slike u jedan zajednicki folder pa ih includam u tekst...)

 

u tablicu slika upisujes id_clanka na kojeg je sliak vezana,  url slike upises ili cijeli path ili samo ime slike, a full path generiras tako da spajas stringove (neznam kako to ide u php, ali za .net imas stringbuilder, ne zbrajati stringove "na obican nacin", nije efikasno) ali sada cu parafrazirati "/upload/" + rsClanak("id_kategorija") + "/" + rsClanak("id_clanak") + "/" + rsSlika("url_slika")

 

Dakle ne spremas sliku u bazu, slika se nalazi na disku, vec spremas samo path do slike

I'm going woo woo
 
0 0 hvala 0
17 godina
neaktivan
offline
PHP problem (mislim da nije velik)

vidim da ti nitko nije napomenuo jedan veliki problem, kod ti podliježe SQL injection napadu, ne filtriraš ID koji uzimaš iz URLa, pa se u taj ID može napisati svašta, možeš čak ostati i bez tablice.

 

u svakom slučaju, prouči ovu temu http://www.bug.hr/forum/topic/razvoj-web-stranica/sigurni-php/4436.aspx :)

Potpis ;)
Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice