[ herc @ 14.11.2002. 14:35 ] @
Pozdrav svima!
nemam baš nešto puno iskustava s PHP-om i MYSQL-om (osim prepravljanj manjih skripti:)) a sada sam naišao na jedan problem koji je, nadam se, lako rješiv uz vašu pomoć.
Ukratko na svom PC-u w2k imam instaliran Apache forW, PHP 4.x i Mysql bazu podataka i većina stvari sa PHP i MYSQL mi radi OK, ali sada hoću da idem malo dalje i da napravim jedan mali sajt tj. napravim formu za unos podataka u bazu (da sve ide preko browsera) a ti podaci bi se unosili s 2 ili više PC-a u LAN-u.
Radi se o unosu korisnika koji poštom pošalju podatke o sebi (ime, prezime, tel .broj , adresa , zanimanje i sl.) i da se ovaj unos radi sa 2 ili više radnih mjesta na LAN-u u firmi u koju ta pošta stiže.
Naišao sam na www.spoono.com/tutorials/PHP/upload jedan primjer koji sliči ovome, i mislim ga prepraviti, ali mi nikako ne uspijeva da pokrenem ovaj primjer na svom PC-u, pa ovdje kopiram taj kod da vidite o čemu se radi.
Znači treba ispuniti običnu formu i da se ti podaci unesu u bazu, ali to mi ne ide baš...evo o čemu se radi...ovo je file 'ovajfile.php'

<?php

if($submit) //If submit is hit
{
mysql_connect("localhost","root","password"); //then connect as user
mysql_select_db("testna_unos"); //select which database you want to edit
$result=MYSQL_QUERY("INSERT INTO news (id,title,message,who,date,time) VALUES ('NULL', '$title', '$message', '$who', '$date', '$time')"); //Insert the values into the correct database
print "<p>This file has the Database"; //Get a conformation that it has been uploaded
}
else
{
// close php so we can put in our code
?>
<form method="post" action="ovajfile.php"> //where ovajfile.php is the name of this file
<TABLE> //make the table not neccessary but adds some order to things
<TR>
<TD>title:</TD>
<TD><INPUT TYPE='TEXT' NAME='title' VALUE='Random Update' size=60></TD>
</TR> //the value section means the default text when the form comes up
<TR>
<TD>message:</TD>
<TD><INPUT TYPE='TEXT' NAME='message' VALUE='' size=60></TD>
</TR><br>
<TR>
<TD>name_upper:</TD>
<TD><SELECT NAME='who'>
<OPTION VALUE='Akash'>Akash //you can even create a drop down
<OPTION VALUE='Brian'>Brian
<OPTION VALUE='Shan'>Shan
</SELECT>
</TD>
</TR>
<TR>
<TD>date:</TD>
<TD><INPUT TYPE='TEXT' NAME='date' VALUE='<? echo date("M.j.y"); ?>' size=60></TD>
</TR> //date is a PHP function to get the date<br>
<TR>
<TD>time:</TD>
<TD><INPUT TYPE='TEXT' NAME='time' VALUE='<? echo date("g:i a"); ?>' size=60></TD>
</TR> //date is a PHP function to get date and time
<TR>
<TD></TD><br>
<TD><p><INPUT TYPE="submit" name="submit" value="submit"></TD>
</TR>//create the submit
</TABLE>
</form>
<?

} //close the else statement

?>

Kada ovo pokrenem i pritisnem button 'Submit' ništa se ne dešava, a niti se vrši unos u bazu..(provjerim preko MYSQLFront-a)
Da li je to nešto sa POST metodom, možda neće da radi, da li treba koristiti $http_post_vars metode i kako to onda ide, i/ili možda još neku provjeru uvjeta.
U svom php.in file stavio sam Reggister Globals= On, ali kada izvršim u browseru provjeru varijabli putem sljedeće skripte :
<?php

$rg=ini_get("register_globals");
$sm=ini_get("safe_mode");
if ($rg=="1" || eregi("Yes", $rg)) {
$rg="Yes";
} else {
$rg="No";
}
if ($sm=="1" || eregi("Yes", $sm)) {
$sm="Yes";
} else {
$sm="No";
}
?>
Register_globals: <?=$rg?><br>
Safe_mode: <?=$sm?><br>

..dobijem ovaj odgovor:

Register_globals: No
Safe_mode: No

Šta bi sve ovo moglo biti ???

Ako netko može pomoći i ima vremena ovo čitati, unaprijed HVALA!


[ lenny @ 14.11.2002. 15:03 ] @
Da li su podaci prosledjeni funkcijama mysql_connect() i mysql_select_db() ispravni?
Koji browser koristis za testiranje? Recimo Konqueror ima obicaj da da belu stranicu kada je neki error u PHP kodu.
[ CONFIQ @ 14.11.2002. 15:58 ] @
stavi na vrhu koda ovo "extract($_POST);"

[ Dejan Topalovic @ 14.11.2002. 23:10 ] @
1. reci nam koja je verzija PHP-a. Nije dovoljno samo 4.x, jer je tek od verzije 4.1 po defaultu iskljuceno register_globals.
2. pokusaj restartati server nakon promjene php.ini fajla
3. ako je register_globals ukljucen, trebalo bi raditi nakon restarta servera, a ako nije, onda moras koristiti $_POST, $_GET, $_COOKIES i td.
Dakle: if(isset($_POST['submit']) { blabla mysql }
4. uvijek nakon neke izmjene nad bazom podataka, tj. nakon unosa, provjeri rezultat da li se to zaista ostvarilo
5. www.php.net , procitaj FAQ, pogledaj dobre PHP linkove u TOP temi: Linkovi iz bookmarka

Javi nam sta se desilo.
[ herc @ 15.11.2002. 09:17 ] @
Evo uspio sam nešto:
Inače verzija PHP-a je 4.2.0.Win32 i postavio sam refister_globals na On i provjerio to pomoću phpinfo() i to je u redu, a još da dodam da koristim IE6.
Onda sam dodao na vrh koda ovo što je napisao CONFIQ (extract($_POST);") i sada mi vrši upis u bazu, poslije klika na button Submit vraća mi: 'This file has the Database' i provjerom preko MYSQLFront-a vidim da se podaci prosljeđuju u bazu i to je OK.
Jedino me još 'zeza' Datum, u MySQL-u sam stavio varijablu 'date' i tip 'date' ali mi ne upisiva datum iz ove forme za unos u ovome formatu u bazi je format 0000-00-00 i mislim da samo moram još u ovoj formi napraviti i pogledati u manualima za PHP ovo echo date i onda to vidjeti...
A sa ovom skriptom mislim ići dalje u smjeru da dodam još neke podatke (možda JMBG ili neki drugi jedinstveni podatak uz 'id' ) i da napravim obradu za pokušaje unosa dvostrukih podataka...tj da nemam dva unosa sa istim npr. JMBG (odnono da u bazi definiram još jedan ključ JMBG), ali ne znam još toliko, moram malo kopati po manualima, pa ako nešto zapne kontaktirati ću Vas. Još planiram da napravim neke upite za pretraživanje, npa, koji su podaci uneseni taj i taj datum i sl.
Hvala svima na pomoći, valjda će dalje ići u redu....
[ herc @ 15.11.2002. 09:24 ] @
I još nešto da Vas pitam, kako da napravim Refresh nakon što unesem jedan zapis, kada kliknem submit piše mi ono 'This file has the database' i moram se vratiti nazad klikon na Back, ali mi je ostalo vrijeme od priješnjeg upisa (iako u stvarnosti protekla npr. minuta ili više).
Npr. da se automatski refresha i redirect-a na stranicu sa formom za upis...?
Možda neki kod u if petlji ili ne znam šta već........????
[ Goran Rakić @ 16.11.2002. 22:19 ] @
Code:

Header("Location index.php");


Ovo će da pošalje redirection u trenutku izvršavanja skripta, i uopšte neće ni prikazati "file is...". A ako hoćeš da ti i taj tekst prikaže, to onda nema veze sa PHP-om, već sa HTML-om i <meta name="redirection"...> tagom
[ CONFIQ @ 17.11.2002. 00:14 ] @
Hteo sam ovo da napišem ali je crko verat.

Da sam na tvom mestu samo bi izbrisao else i one zagrade.....


Tako uvek kad upishesh neshto ono automatski ti pojavi istu stranu samo što ti piše na početku stranice ti javi da je uspešno uneo u bazu....