» »

Php in my sql - novice

Php in my sql - novice

steyr ::

Pozdravljeni!

Kot sem brskal po forumu take teme še ni... V bistvu je sam naslov tak.
Po dolgem času, sedaj ko sem končal 9.r sem se zopet lotil spletnega programiranja.
V bistvu vpis, izpis, ... novic.

Omislil sem si nekako takole:
Pripravil sem obrazec in kodo ki bodo novico vpisali v bazo:

<?php
include_once 'glava.php';
if ($_POST){
if(($_POST[naslov]!="")&&($_POST[vsebina]!=""&&($_POST[avtor]!=""))){
if (!link) die ("Povezava s strežnikom zavrnjena!");
mysql_select_db($link);
$poizvedba="INSERT INTO novice (naslov, vsebina, avtor) VALUES ('".$_POST[naslov]."', '".$_POST[vsebina]."', '".$_POST[avtor]."')";
if ($rezultat=mysql_query($poizvedba)){
print "Objava uspešna!<br>";
}
else{
"Prišlo je do napake!";
}
include_once 'noga.php';
}
else {
print "Izpolniti je potrebno vsa polja!";
}
}

else{
print "Objava ni uspela!";
}
?>

<form action="<?php print($_SERVER[PHP_SELF]);?>" method="post">
Avtor:
  <input name="avtor" type="text" disabled="disabled" value="Administrator" />
<br /><br />
Naslov:
<input name="naslov" type="text" value="" size="53" maxlenght="50" />
<br/>
<br />
Vsebina:
<br />
<textarea name="vsebina" rows="10" cols="40" warp="on">

</textarea><br/>

<br />
<br />
<input type="submit" value="Objavi"/>
</form>


v bazi imam takole:

id int(5) auto_increment primary key
avtor varchar(15)
cas timestamp CURRENT_TIMESTAMP
naslov varchar(255)
vsebina text



In da bi se na spletni strani videlo kdo je članek objavil, sem v php kodo in v bazo dodal "avtor".

V tem primeru je administrator. V kodo sem dodal vrstico, v kateri piše administrator in jo blokiral da ne morejo druge možnosti uporabit. Vse sem lepo prenesel na strežnik. Ko grem v brskalnik in sprebam če deluje, mi napiše, da moram izpolnit vsa polja... Ampak sem vse izpolnil, kot more bit (naslov novice, vsebino) izpolnil nisem edino tam kjer piše administrator, pa tudi ne morem saj sem vnosno vrstico zaklenil.

Prosim pomagajte mi:

Da bo v obrazcu pisalo Avtor: administrator(administrator bo pisalo v takšni vrstici kot je za naslov vendar bo zaklenjena in bo objavitelja (v tem primeru administratorja, vseeno zapisalo v bazo če tudi bo vnosno polje zaklenjeno)

Skratka vse tako kot je že narejeno, samo da mi ne bo težilo da moram izpolniti tudi polje avtorja.

Hvala za odgovore!:)

Lp
...::: STEYR :::... za vedno ...::: STEYR :::...
  • spremenil: steyr ()

bluefish ::

Malo offtopic: bolje bi bilo avtor ali pa objavil. Objavitelj je ena taka čudna skovanka :) .

steyr ::

Blue fism, hvala, se nisem mogel spomnit ;)

Še vedno ni bilo odgovora, glede vprašanja :(

Upam na vas!
...::: STEYR :::... za vedno ...::: STEYR :::...

bluefish ::

Če ne bo pametnejšega odgovora (v php sem tudi nov): vidim, da imaš tam pogoj else in "Izpolniti je potrebno vsa polja!".
Morda v formi v polje objavil že v sami kodi vnesi avtorja.

steyr ::

Sam vseeno bi rad, da nad obrazcem v blokiranem vnosnem polju izpiše avtorja :(

Tisto prej mi ni ratalo naredit :(
...::: STEYR :::... za vedno ...::: STEYR :::...

Zgodovina sprememb…

  • spremenil: steyr ()

Adrijan0 ::

Zakaj sploh potrebuješ polje avtor? Itak če hoče nekdo objavit novico, more biti prijavljen.. ali kakor korli. Pa kar iz tam poberi kdo je avtor, ne pa da vsak posebi upisuje svoje up.ime to ni smiselno.

steyr ::

Ne, sej objavljali bi lahko le admini in moderatorji.
...::: STEYR :::... za vedno ...::: STEYR :::...

Adrijan0 ::

Ja, ampak tudi oni se morejo prijaviti.

Če je tam mogoče uporabiti samo administrator, potem izbriši iz pogoja da more biti polje avtor izpoljeno in je problem rešen in kar v SQL stavek dodaj, da je avtor administrator. Ne razumem zakaj si tisto zaklenu, če se vsak prijavi s svojim up.imenom naprimer, in ima samo različne pravice.

Dela ti pa ne zato ker imaš pod name = objavil, s post pa iščeš po avtorju, ki ga sploh ni.

Zgodovina sprememb…

  • spremenil: Adrijan0 ()

steyr ::

zgleda da sem slabo razložil...
Pa pustmo stat...

Adrijan0 ali bi mi lahko tako spisal kodo da bi mi ime avtorja vzelo iz iste baze, vendar iz tabele uporabniki.Vrstica v tabeli: uporabnik

Zahvaljujem se že v naprej! :|
...::: STEYR :::... za vedno ...::: STEYR :::...

steyr ::

Ja, ampak tudi oni se morejo prijaviti.

Če je tam mogoče uporabiti samo administrator, potem izbriši iz pogoja da more biti polje avtor izpoljeno in je problem rešen in kar v SQL stavek dodaj, da je avtor administrator. Ne razumem zakaj si tisto zaklenu, če se vsak prijavi s svojim up.imenom naprimer, in ima samo različne pravice.

Dela ti pa ne zato ker imaš pod name = objavil, s post pa iščeš po avtorju, ki ga sploh ni.


Ja to sem tukaj na forumu pozabil zamenjat ker mi je Blue fish predlagal boljšo besedo ;)
...::: STEYR :::... za vedno ...::: STEYR :::...

Adrijan0 ::

Nevem, lahko uporabiš sejo npr. in ko se človek prijavi pač v sejo shraniš username, in ga potem na ta način uporabiš.

t3hn0 ::

else{
"Prišlo je do napake!";

manjka echo/print

verjetno ti vsakic ko si na strani najprej napise "Objava ni uspela!", ker ni nic v $_POST (dokler prvic ne oddas obrazca). lahko imas brez if($_POST){..}else{..}.

drugace pa bi jaz naredil tako da imas eno bazo admini / uporabniki...kjer imas userje z dostopom do admina.
ko se prijavis, preverjas podatke glede na te uporabnike v bazi. pri novicah pa nebi vnesel v tabelo z novicami uporabniskega imena, ampak id uporabnika. pol pa pac uporabnisko ime/prikazno ime preberes iz tabele uporabnikov glede na id pri novici.
tako se pri prihodnji menjavi podatkov uporabnika popravijo tudi novice - ce se recimo user preimenuje, bo to vidno povsod.
<?php
mysql_query("SELECT uporabniskoIme FROM uporabniki WHERE id = ".$_idPrijavljenegaUporabnika);
?>
^.^

steyr ::

hmm, kak si to mislil idPrijavljenegaUporabnika??

Jaz sem sedaj naredil še eno tabelo - administratorji
Tabela ima 2 vrstici - uporabnik in id

Po tej tabeli sem spremenil tudi kodo ki mi jo je dal t3hn0


<?php
mysql_query("SELECT uporabnik FROM administratorji WHERE id = ".$_idPrijavljenegaUporabnika);
?>




A nej si to pomagam s cookiji??
...::: STEYR :::... za vedno ...::: STEYR :::...

Zgodovina sprememb…

  • spremenil: steyr ()

steyr ::

Ok, zdej mi v bazo uspešno napiše admin...

Ker pa je že t3hn0 omenu drugačno možnost bi to dar videl, kaka pride koda...
Poizkušal sem na vse možne načine, vendar mi ne deluje.
A bi mi spisal kdo kodo tako kot je tehno razložil?

OBRAZEC:
<?php
include_once 'glava.php';
if ($_POST){
if(($_POST[naslov]!="")&&($_POST[vsebina]!="")&&($_POST[avtor]!="")){
if (!link) die ("Povezava s strežnikom zavrnjena!");
mysql_select_db($link);
$poizvedba="INSERT INTO novice (naslov, vsebina, avtor) VALUES ('".$_POST[naslov]."', '".$_POST[vsebina]."', '".$_POST[avtor]."')";
if ($rezultat=mysql_query($poizvedba)){
print "Objava uspešna!<br>";
}
else{
"Prišlo je do napake!";
}
include_once 'noga.php';
}
else {
print "Izpolniti je potrebno vsa polja!";
}
}

else{
print "Objava ni uspela!";
}
?>

<form action="<?php print($_SERVER[PHP_SELF]);?>" method="post">

Avtor:
  <input name="avtor" type="text" value="administrator" readonly="readonly" maxlenght="50" />


<br /><br />

Naslov:
<input name="naslov" type="text" value="" size="53" maxlenght="50" />
<br/>
<br />
Vsebina:
<br />
<textarea name="vsebina" rows="10" cols="40" warp="on">

</textarea><br/>

<br />
<br />
<input type="submit" value="Objavi"/>
</form>



Prosim, bom zlo hvaležen!:|
...::: STEYR :::... za vedno ...::: STEYR :::...

Zgodovina sprememb…

  • spremenil: steyr ()

krho ::

Offtopic:
Sedaj pa poišči php.ini ter v njem naslednje vrstice:
error_reporting nastavi ga na E_ALL | E_STRICT
display_errors nastavi ga na On

Zakaj? Zato, da boš videl kakšne bedarije počneš.
if(($_POST[naslov]!="")&&($_POST[vsebina]!=""&&($_POST[avtor]!=""))){
Tule manjkajo narekovaji in če imaš vklopljen prikaz napak prav fino vidiš, kje si ga usral.
Po domače. array index mora biti v narekovajih.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

Zgodovina sprememb…

  • spremenil: krho ()

steyr ::

a booo :S

a ni bolj prav tako:
if(($_POST[naslov]!="")&&($_POST[vsebina]!="")&&($_POST[avtor]!="")){


kot tako:
if(($_POST[naslov]!="")&&($_POST[vsebina]!=""&&($_POST[avtor]!=""))){
...::: STEYR :::... za vedno ...::: STEYR :::...

krho ::

$_POST['naslov']
$_POST['vsebina']

in tako naprej indexi MORAJO biti v narekovajih. Upoštevaj moj zgornji nasvet, pa boš videl, kaj vse dobiš nazaj.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

t3hn0 ::

if(($_POST[naslov]!="")&&($_POST[vsebina]!="")&&($_POST[avtor]!="")){

zamenjas z
if(!empty($_POST['naslov']) && !empty($_POST['vsebina']) && !empty($_POST['avtor'])) {


spremenljivke kot je krho rekel imej v navednicah. (to naj bi sicer v php5 delalo? sam vseen, tako je bolj 100%)

poleg tega, ko ti dobis nekaj iz textarea, imas med textom prelome vrstic / odstavke. te moras pred vnosom v bazo "popravit", nadomestit...obstaja funkcija, ki se ji rece nl2br - new line to break.

primer uporabe:
$text = nl2br($_POST['vsebina']);

ce ne bos tega naredil in ne bos uporabljal <pre></pre> pri izpisu, bo vse v eni vrsti...

najboljse bi bilo da si malce pogledas kak tutorial po netu, ter zacnes pocasi uporabljati php.net dokumentacijo.
scasoma bo to vse kar bos potreboval :P
^.^


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Izsiljevalski virusi napadajo tudi spletne strežnike na Linuxu

Oddelek: Novice / Kriptovalute
2012311 (9856) filipk
»

Samsungovi androidni telefoni bodo dobili zemljevide Nokia HERE

Oddelek: Novice / Android
3212934 (9271) kpkp
»

Črv za iPhone rickrolla odklenjene telefone

Oddelek: Novice / Varnost
203615 (1552) Tablica
»

Napad z ničelno predpono na SSL/TLS certifikate že "v divjini"

Oddelek: Novice / Varnost
416221 (4599) McMallar
»

Gabe Newell in Erik Johnson gresta v Avstralijo

Oddelek: Novice / Igre
144364 (3060) BigWhale

Več podobnih tem