• 45 odgovora
  • 9.481 pregleda
Problemcic sa programcicem 02.01.2012. u 10:57 · pre 180 meseci #1
Pozdrav svima.

Imam jedan problem pa se nadam SAVJETU.Radim jedan programcic koji se sastoji od MySQL baze, HTML forme i PHP koda .

Trebao bi da uneseni sadrzaj iz HTML forme spasi u bazi. Problem je nastajao jer mi je stalno izbacivao undefined index na liniji koda 15 ,17 itd koji sam rijesio sa dodavanjem @ ispred $ e onda je poceo da mi izbacuje da je nedefinirana funkcija na liniji 20 koju sam rijesio istom metodom a sad mi stalno izbacuje dio upozorenja da trebaju sva polja da budu popunjena iako ja popunim sa probnim podatcima sva polja.

Unaprijed hvala

P.S

Kod



<?php
// contact to database
$connect = mysql_connect("localhost", "root", "") or die ("Error , check your server connection.");
mysql_select_db("registar lijekova");

//Get data in local variable
$v_glavna_grupa_lijekova=@$_POST['glavna_grupa_lijekova'];
$v_podgrupa_lijekova=@$_POST['podgrupa_lijekova'];
$v_vrsta_lijeka=$_POST['vrsta_lijeka'];
$v_ime_lijeka=$_POST['ime_lijeka'];
$v_djelovanje=$_POST['djelovanje'];
$v_indikacije=$_POST['indikacije'];
$v_doziranje_i_način_primjene=@$_POST['doziranje_i_način_primjene'];
$v_kontraindikacije=$_POST['kontraindikacije'];
$v_neželjeni_efekti=@$_POST['neželjeni_efekti'];
$v_posebna_upozorenja=$_POST['posebna_upozorenja'];
$v_registirani_lijekovi=@$_POST['registirani_lijekovi'];

// check for null values
if (@$v_glavna_grupa_lijekova=="" or @$v_registrirani_lijekovi=="")
echo "All fields must be entered, hit back button and re-enter information";
else{
$query="insert into books(glavna_grupa_lijekova,podgrupa_lijekova,vrsta_lijeka,ime_lijeka,djelovanje,indikacije,doziranje_i_način_primjene,kontraindikacije,neželjeni_efekti,posebna_upozorenja,registrirani_lijekovi) values('$v_glavna_grupa_lijekova','$v_podgrupa_lijekova','$v_vrsta_lijeka','$v_me_lijeka','$v_djelovanje','$v_indikacije','$v_doziranje_i_način_primjene','$v_kontraindikacije','$v_neželjeni_efekti','$v_posebna_upozorenja','$v_registrirani_lijekovi')";
mysql_query($query) or die(mysql_error());
echo "Your message has been received";
}

?>
Re: Problemcic sa programcicem 03.01.2012. u 16:46 · pre 180 meseci #2
Resavaj problem po problem a ne da ih skrivas. @ ti samo skriva problem i koristan je u retkim slucajevima, recimo kada ocekujes da ti sistem nesto odradi i on ti nekada odradi kako treba a nekada ne, a u tvom nikako ne treba to koristiti.
Prvo proveri da li je setovano sa isset
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Problemcic sa programcicem 03.01.2012. u 19:34 · pre 180 meseci #3
nisi dobro postavio polja u bazi
Najverovatnije neko polje ne moze biti NULL a post varijabla je null i errr
Re: Problemcic sa programcicem 04.01.2012. u 22:40 · pre 180 meseci #5
Nece pa nece probao sam sa NULL i ostalim ali nece pa nece .Pravio tablice nekoliko puta ali isto.Sad sam probao skolski sa primjerom iz knjige red koda po red koda nisam radio copy -paste i opet se isto desava. Zaglavi kod if i echo stvarno nisam pametan vise.Unio bezveze podatke i nece dalje od imena. Ako ne stavim @izbacuje mi undefined variable ne kontam ovo nikako.


<html>
<head>
<title>Book-O-Rama Book Entry Results</title>
</head>
<body>
<h1>Book-O-Rama Book Entry Results</h1>
<?php
// create short variable names
$isbn=$_POST['isbn'];
$author=$_POST['author'];
$title=$_POST['ime'];
$price=$_POST['prezime'];
$price=$_POST['neznano'];
$price=$_POST['proba'];
$price=$_POST['title'];
$price=$_POST['price'];

if (!$isbn || !$author || !@$ime ||!@$prezime ||!$neznano ||!$proba ||!$title || !$price) {
echo "You have not entered all the required details.<br />"
."Please go back and try again.";
exit;
}

if (!get_magic_quotes_gpc()) {
$isbn = addslashes($isbn);
$author = addslashes($author);
$author = addslashes($ime);
$author = addslashes($prezime);
$author = addslashes($nezano);
$author = addslashes($proba);
$title = addslashes($title);
$price = doubleval($price);
}

@ $db = new mysqli('localhost', 'root', '', 'registar lijekova');

if (mysqli_connect_errno()) {
echo "Error: Could not connect to database. Please try again later.";
exit;
}

$query = "insert into books values
('".$isbn."', '".$author."', '".$ime."', '".$prezime."', '".$neznano."', '".$proba."','".$title."', '".$price."')";
$result = $db->query($query);

if ($result) {
echo $db->affected_rows." book inserted into database.";
} else {
echo "An error has occurred. The item was not added.";
}

$db->close();
?>
</body>
</html>
Re: Problemcic sa programcicem 04.01.2012. u 23:06 · pre 180 meseci #6
Vidi se neki pomak u radu ali promasujes poentu. Nisi od onih sto okace 100 redova pa da im neko resi.
Kada ovde pises php code onda stavi [ code : php] bez razmaka, citljivije je.

Koristi ovako nesto.
(napravio sam pomocnu funkciju getPost koja proverava da li je setovan post a usput ako treba uradi escape da ti neko ne bi provalio bazu)
Code (php):

<?php
function getPost($var, $default = "", $escape = true)
{
    $value = isset($_POST[$var]) ? $_POST[$var] : $default;
    return $escape ? mysql_real_escape_string($value) : $value;
}
// contact to database
$connect = mysql_connect("localhost", "root", "") or die ("Error , check your server connection.");
mysql_select_db("registar lijekova");

//Get data in local variable
$v_glavna_grupa_lijekova=getPost('glavna_grupa_lijekova');
$v_podgrupa_lijekova=getPost('podgrupa_lijekova');
$v_vrsta_lijeka=getPost('vrsta_lijeka');
$v_ime_lijeka=getPost('ime_lijeka');
$v_djelovanje=getPost('djelovanje');
$v_indikacije=getPost('indikacije');
$v_doziranje_i_način_primjene=getPost('doziranje_i_način_primjene');
$v_kontraindikacije=getPost('kontraindikacije');
$v_neželjeni_efekti=getPost('neželjeni_efekti');
$v_posebna_upozorenja=getPost('posebna_upozorenja');
$v_registirani_lijekovi=getPost('registirani_lijekovi');

// check for null values
if (empty($v_glavna_grupa_lijekova) || empty(v_registrirani_lijekovi))
echo "All fields must be entered, hit back button and re-enter information";
else{
$query="insert into books(glavna_grupa_lijekova,podgrupa_lijekova,vrsta_lijeka,ime_lijeka,djelovanje,indikacije,doziranje_i_način_primjene,
kontraindikacije,neželjeni_efekti,posebna_upozorenja,registrirani_lijekovi) values('$v_glavna_grupa_lijekova','$v_podgrupa_lijekova','$v_vrsta_lijeka','$v_me_lijeka','$v_djelovanje'
,'$v_indikacije','$v_doziranje_i_način_primjene','$v_kontraindikacije','$v_neželjeni_efekti','$v_posebna_upozorenja','$v_registrirani_lijekovi')"
;
mysql_query($query) or die(mysql_error());
echo "Your message has been received";
}

?>
 
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Problemcic sa programcicem 05.01.2012. u 08:35 · pre 180 meseci #7
Prvo da se zahvalim na pomoci.


Probao sam kod ali je bio opet izbacivao gresku na linij 32.

Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM trazio sam po internetu i help manualu i tamo kazu da je ili tipo greska ili da je PHP < 5.3 te sam na kraju shvatio da je falilo $v_registirani_lijekovi.Cim sam to popravio greske je nestalo ali opet kaze da sva polja trebaju biti popunjena.

Code (php):

if (empty($v_glavna_grupa_lijekova) || empty(v_registrirani_lijekovi))
echo "All fields must be entered, hit back button and re-enter information";
else{
$query="insert into books(glavna_grupa_lijekova,podgrupa_lijekova,vrsta_lijeka,ime_lijeka,djelovanje,indikacije,doziranje_i_nacin_primjene,
kontraindikacije,neželjeni_efekti,posebna_upozorenja,registrirani_lijekovi) values('$v_glavna_grupa_lijekova','$v_podgrupa_lijekova','$v_vrsta_lijeka','$v_me_lijeka','$v_djelovanje'
,'$v_indikacije','$v_doziranje_i_nacin_primjene','$v_kontraindikacije','$v_neželjeni_efekti','$v_posebna_upozorenja','$v_registrirani_lijekovi')"
;
mysql_query($query) or die(mysql_error());
echo "Your message has been received";
}

?>
 


Jednostavno mi nije jasno kako kod koji 100% radi cim promjenim imena u tablici nece da radi.Sada mi jedino to ne ualzi u glavu ostalo sve razumijem.

Jos jednom hvala
Re: Problemcic sa programcicem 05.01.2012. u 10:37 · pre 180 meseci #8
Ne znam da li u imena mysql kolona i php varijabli mozes da stavljas slova sa kukicom - neželjeni_efekti.
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Problemcic sa programcicem 05.01.2012. u 10:47 · pre 180 meseci #9
Probao sam bez kvacica inace samo na tom mjestu se i nalazila kvacica a falilo je i ime_ na jednom mjestu. Inace u bazi i nigdje nema kvacica ali opet sam probao i nece.Ne kontam sto nece jedstavno repliciram kod koji 100% radi ali nece stalno izbacuje da sva polja moraju biti popunjena.
Re: Problemcic sa programcicem 05.01.2012. u 11:51 · pre 180 meseci #10
if (empty($v_glavna_grupa_lijekova) || empty(v_registrirani_lijekovi))
if (empty($v_glavna_grupa_lijekova) || empty($v_registrirani_lijekovi))
Nedostaje ti '$'. Ili je problem nesto drugo (malo sam u zurbi pa ne mogu bas detaljno sve da procitam)
Re: Problemcic sa programcicem 05.01.2012. u 12:43 · pre 180 meseci #11
Vidio sam to i popravio sam ali nista ne radi opet .Mislio sam i ja da je to problem ali nece opet
Re: Problemcic sa programcicem 05.01.2012. u 17:00 · pre 180 meseci #12
Postavi sql za kreiranje tabele.
Code (sql):

SHOW CREATE TABLE `books`;
 

Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Problemcic sa programcicem 05.01.2012. u 20:19 · pre 180 meseci #15
Code (sql):


CREATE TABLE books(
glavna_grupa_lijekova CHAR(13) NOT NULL PRIMARY KEY,
podgrupa_lijekova CHAR(50),
vrsta_lijeka CHAR(50),
ime_lijeka CHAR(50),
djelovanje CHAR(50),
indikacije CHAR(50),
doziranje_i_nacin_primjene CHAR(100),
kontraindikacije CHAR(50),
nezeljeni_efekti CHAR(50),
posebna_upozorenja CHAR(50),
registirani_lijekovi FLOAT(4,2))

 
Re: Problemcic sa programcicem 05.01.2012. u 21:01 · pre 180 meseci #16
1. Izbaci sva slova sa kvacicama u php-u imenima varijabli. MySQL ne moras ali prakticnije je da izbacis.
2. Proveri da kada pozivas varijablu u php-u da joj das isti naziv da ne izostavis slovo i slicno. (npr. ovde si zeznuo $v_registirani_lijekovi i $v_registrirani_lijekovi - fali ti R)
3. Ako i dalje ne radi onda postavi taj novi php code i novi show create table.

Citat:

PHP variables must start with a letter or underscore "_".
PHP variables may only be comprised of alpha-numeric characters and underscores. a-z, A-Z, 0-9, or _ .
Variables with more than one word should be separated with underscores. $my_variable
Variables with more than one word can also be distinguished with capitalization. $myVariable


Jako mi je cudan tvoj show create table, ne ono sto si ti kucao nego nesto ti mysql vrati kada izvrsis taj sql koji sam ti postavio.
Treba da imas primary key sa autoincrement.
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Problemcic sa programcicem 06.01.2012. u 08:25 · pre 180 meseci #17
Popravio sam php kod i napravio novu tabelu sa autoincrement ali opet po staromnece pa nece.Sad cu da napisem neku PHP skripticu da istestiram bazu da vidim da li ona funkcionise ali nisam vise stvarno pametan.


Code (sql):


CREATE TABLE books(
glavna_grupa_lijekova INT(13) NOT NULL AUTO_INCREMENT,
podgrupa_lijekova CHAR(50),
vrsta_lijeka CHAR(50),
ime_lijeka CHAR(50),
djelovanje CHAR(50),
indikacije CHAR(50),
doziranje_i_nacin_primjene CHAR(100),
kontraindikacije CHAR(50),
nezeljeni_efekti CHAR(50),
posebna_upozorenja CHAR(50),
registirani_lijekovi FLOAT(4,2),
PRIMARY KEY (glavna_grupa_lijekova))

 
Re: Problemcic sa programcicem 06.01.2012. u 14:05 · pre 180 meseci #18
Sta ti tacno javlja sada? Postuj ovde php kod koji si menjao.
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Re: Problemcic sa programcicem 06.01.2012. u 21:57 · pre 180 meseci #19
Sad mi javlja sljedece:Fatal error: Function name must be a string in C:\xampp\htdocs\test\insert.php on line 7

Umjesto getPost stavio sam $_POST ali sad ovo izbaci a ako stavim getPost na 7 liniji koda kaze da se mora da definira varijabla. Kod radi kad ubacim samo 4 polja u HTML-u i u bazi. Ne razumijem nikako sta mu je.Probao sam umjesto glavna_grupa_lijekova da sastavim sve ali opet nece.



Code (php):


<?php
// contact to database
$connect = mysql_connect("localhost", "root", "") or die ("Error , check your server connection.");
mysql_select_db("registar lijekova");
 
//Get data in local variable
$v_glavna_grupa_lijekova=$_POST('glavnagrupalijekova');
$v_podgrupa_lijekova=$_POST('podgrupa_lijekova');
$v_vrsta_lijeka=$_POST('vrsta_lijeka');
$v_ime_lijeka=$_POST('ime_lijeka');
$v_djelovanje=$_POST('djelovanje');
$v_indikacije=$_POST('indikacije');
$v_doziranje_i_nacin_primjene=$_POST('doziranje_i_nacin_primjene');
$v_kontraindikacije=$_POST('kontraindikacije');
$v_neželjeni_efekti=$_POST('nezeljeni_efekti');
$v_posebna_upozorenja=$_POST('posebna_upozorenja');
$v_registirani_lijekovi=$_POST('registrirani_lijekovi');

 
// check for null values
if ($v_glavnagrupalijekova==""  or $v_registrirani_lijekovi=="")
echo "All fields must be entered, hit back button and re-enter information";
else{
$query="insert into contact(glavnagrupalijekova,podgrupa_lijekova,vrsta_lijeka,ime_lijeka,djelovanje,indikacije,doziranje_i_nacin_primjene,kontraindikacije,nezeljeni_efekti,posebna_upozorenja,registrirani_lijekovi) values('$v_glavnagrupalijekova','$v_podgrupa_lijekova','$v_vrsta_lijeka','$v_ime_lijeka','$v_djelovanje','$v_indikacije','$v_doziranje_i_nacin_primjene','$v_kontraindikacije','$v_nezeljeni_efekti','$v_posebna_upozorenja','$v_registrirani_lijekovi')";
mysql_query($query)  or die(mysql_error());
echo "Your message has been received";
}
 
?>


 
Re: Problemcic sa programcicem 06.01.2012. u 23:44 · pre 180 meseci #20
Cemu svi prethodni postovi i saveti sto smo ti postavljali?
1. $_POST nije funkcija nego varijabla, ti array pa ne ide $_POST( nego $_POST[
2. Napisao sam ti funkciju gde lepo reseavas problem ako nije setovana neka varijabla da bi se oslobodio onih gluposti sa @
3. Uspit sam ti pripremio varijable da mogu da se insertuju u bazu bez bojazni da ce ti neko zeznuti podatke
4. Rekao sam da proveris imena varijabli jer ako se razlikuju za jedno slovo onda su to razlicite varijable a imas takvih slucajeva

Kada ispravis sve greske kako ti je receno da ispravis tvoj kod ce raditi. Provereno. Do tada ti NECE raditi.
Potpis
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme