|
[ shx @ 06.06.2005. 21:52 ] @
| pokusavam napraviti formu za unos podataka u bazu! uspijem to napravit ali kad imam jedan .htm i jedan .php file (ili 2 .php) - mogu li to napraviti sa samo jednim php fileom, tj. da mi se ne otvara php file za obradu??
...i da mi se prilikom uspjesno upisanih podataka u bazu na istoj stranici gdje je i forma ispise neki tekst da je upis u bazu obavljen!!
hvala |
[ 01011011 @ 06.06.2005. 22:20 ] @
Nije bas najbolje napisana skripta ali evo:
Konekcija za bazu podataka nazoves je dbconnect.php
Code:
<?
// Konekcija
mysql_connect("localhost", "imezamysql", "sifra") or
die ("Can't Connect to the database.");
mysql_select_db("imebazepodataka") or
die ("Cant find the database.");
?>
I sada forma
Code:
<?
if(isset($Submit))
{
?>
Ovdje napises sta hoces ako je forma poslata .....
<?
// konekcija za bazu podataka
include "dbconnect.php";
$query = "INSERT INTO nekatabla (nesto, nesto) VALUES
('$nesto', '$nesto')";
mysql_query($query);
}
else
{
?>
neka forma ovdje ide... [b]form.php[/b]
<form method="post" action="<?php echo $PHP_SELF;?>">
Ime:<input type="text" size="12" maxlength="12" name="ime">:<br />
Prezime:<input type="text" size="12" maxlength="36" name="prezime">:<br />
<?
echo "<center><input type='submit' value='Submit' name='Submit' type='submit'>";
echo "</form>";
?>
<?
}
?>
Nadam se da je pomoglo. Pozdrav.
PS. Ovdje nije uradjeno nikakva provjera da li su polja ispravna ili popunjena, dakle i ako zeli da posalje praznu formu osoba ot moze uratiti. Provjeru mozes uraditi ili sa php ili sa Java scripting.
[ shx @ 07.06.2005. 00:06 ] @
Nesto sam kao skuzio iz ovoga, ali nisam uspio dobiti ok rjesenje!
koje su posebne stvari na koje treba obratiti paznju, jeli mozda ovaj dio <form method="post" action="<?php echo $PHP_SELF;?>"> ?? $PHP_SELF se koristi kako bi se podaci iz forme poslali na stranicu koja je aktivna?
zasto se ispituje ovaj isset($Submit) na pocetku?
[ 01011011 @ 07.06.2005. 00:16 ] @
pa zato ukoliko nije kliknuto na submit onda prikaze formu, ako je kliknut submit ukuca sve u bazu podataka i onda pokaze to gore.
[ flylord @ 07.06.2005. 09:19 ] @
I btw, taj skript ce da radi samo ako je u php.ini ukljucen globals na ON. Treba izbegavati tako raditi i koristiti super global nizove $_POST, $_GET, $_SESSION, $_COOKIE, $_SERVER.
Tako se izbegavaju greske koje ponekad mogu biti katastrofalne (sigurnosni propusti)
[ 01011011 @ 07.06.2005. 16:51 ] @
Umjesto toga samo stavis ime tog fajla u kome skriptu pises
nrp. forma.php
pozdrav
[ shx @ 07.06.2005. 16:59 ] @
jel pri tome mislis da i ovaj if (isset($Submit)) treba pisati kao if(isset($_POST_VARS['submit']) ??
[ 01011011 @ 07.06.2005. 17:17 ] @
Ne,
ovaj slucaj
Code:
if (isset($Submit))
ti radi sa svim verzijama php
Ukoliko su global variables ukljucene na serveru global_variables = on
onda ukoliko je php verzija straija od 4.1.0 i prije ide
Code:
if (isset($HTTP _POST_VARS['Submit']))
a ako je verzija poslije ove onda ides
Code:
if(isset($_POST['submit']))
Pozdrav
[ flylord @ 07.06.2005. 17:25 ] @
Sve hosting kompanije su presle na nove verzije PHP-a 4.3.x. Tako da koristi slobodno samo $_POST ... , tj skracene verzije.
[ shx @ 07.06.2005. 18:47 ] @
a izgleda da mi ovo nikako ne proradi! evo kod - pa da netko baci oko??
hvala
Code:
<?
if (isset($_POST['submit'])){
echo mysql_affected_rows().'stavki ubaceno u bazu';
$_POST['ime'] = addslashes($_POST['ime']);
$_POST['prezime'] = addslashes($_POST['prezime']);
$_POST['grad'] = addslashes($_POST['grad']);
$link = @mysql_connect ("localhost", "user", "pass");
if (!$link) {
echo 'ERROR: Nemoze se spojit sa bazom!';
exit;
}
mysql_select_db('slavisa');
$query = "insert into ekipa values (NULL, '".$_POST['ime']."', '".$_POST['prezime']."', '".$_POST['grad']."')";
$result = mysql_query($query);
}
else {
echo ' <form name="form1" method="post" action="kombiniranunos.php">
<table width="75%" border="0">
<tr>
<td width="13%">Ime:</td>
<td width="87%"><input name="ime" type="text" id="ime" size="20" maxlength="15"></td>
</tr>
<tr>
<td>Prezime:</td>
<td><input name="prezime" type="text" id="prezime" size="20" maxlength="15"></td>
</tr>
<tr>
<td>Grad:</td>
<td><input name="grad" type="text" id="grad" size="25" maxlength="20"></td>
</tr>
<tr>
<td> </td>';
echo '<td><input name="Submit" type="submit" id="Submit" value="Submit"></td>';
echo '</tr> </table> </form>';
}
?>
[ 01011011 @ 07.06.2005. 19:06 ] @
Mala greska a stvara dosta problema, isset submit treba S biti veliko, kopiraj ovaj code.
Code:
<?
if (isset($_POST['submit'])){
echo mysql_affected_rows().'stavki ubaceno u bazu';
$_POST['ime'] = addslashes($_POST['ime']);
$_POST['prezime'] = addslashes($_POST['prezime']);
$_POST['grad'] = addslashes($_POST['grad']);
$link = @mysql_connect ("localhost", "user", "pass");
if (!$link) {
echo 'ERROR: Nemoze se spojit sa bazom!';
exit;
}
mysql_select_db('slavisa');
$query = "insert into ekipa values (NULL, '".$_POST['ime']."', '".$_POST['prezime']."', '".$_POST['grad']."')";
$result = mysql_query($query);
}
else {
echo ' <form name="form1" method="post" action="kombiniranunos.php">
<table width="75%" border="0">
<tr>
<td width="13%">Ime:</td>
<td width="87%"><input name="ime" type="text" id="ime" size="20" maxlength="15"></td>
</tr>
<tr>
<td>Prezime:</td>
<td><input name="prezime" type="text" id="prezime" size="20" maxlength="15"></td>
</tr>
<tr>
<td>Grad:</td>
<td><input name="grad" type="text" id="grad" size="25" maxlength="20"></td>
</tr>
<tr>
<td> </td>';
echo '<td><input name="Submit" type="submit" id="Submit" value="Submit"></td>';
echo '</tr> </table> </form>';
}
?>
Ne znam jel insertuje u bazu podataka i da li to radi sve, jer nisam testirao sa bazom podataka.
[ shx @ 07.06.2005. 20:04 ] @
radi mi sad ok! stavio sam veliko S u 'submit'. zasto je to tako? zasto mora biti veliko s?
jos me zanima sljedece: kad stisnem submit dobijem prazan bijeli ekran, kako mogu dobiti da mi se ne izbrisu polja forme?
hvala puno
[ 01011011 @ 07.06.2005. 20:16 ] @
Code: <?
if (isset($_POST['submit'])){
?>
OVDJE STAVI HTML ILI STA HOCES DA TI SE POJAVI NA STRANICI KAD JE FORMA POSLANA :)
<?
echo mysql_affected_rows().'stavki ubaceno u bazu';
$_POST['ime'] = addslashes($_POST['ime']);
$_POST['prezime'] = addslashes($_POST['prezime']);
$_POST['grad'] = addslashes($_POST['grad']);
$link = @mysql_connect ("localhost", "user", "pass");
if (!$link) {
echo 'ERROR: Nemoze se spojit sa bazom!';
exit;
}
mysql_select_db('slavisa');
$query = "insert into ekipa values (NULL, '".$_POST['ime']."', '".$_POST['prezime']."', '".$_POST['grad']."')";
$result = mysql_query($query);
}
else {
echo ' <form name="form1" method="post" action="kombiniranunos.php">
<table width="75%" border="0">
<tr>
<td width="13%">Ime:</td>
<td width="87%"><input name="ime" type="text" id="ime" size="20" maxlength="15"></td>
</tr>
<tr>
<td>Prezime:</td>
<td><input name="prezime" type="text" id="prezime" size="20" maxlength="15"></td>
</tr>
<tr>
<td>Grad:</td>
<td><input name="grad" type="text" id="grad" size="25" maxlength="20"></td>
</tr>
<tr>
<td> </td>';
echo '<td><input name="Submit" type="submit" id="Submit" value="Submit"></td>';
echo '</tr> </table> </form>';
}
?>
[ shx @ 07.06.2005. 20:39 ] @
a evo sad sam uspio sve napravit kako sam zamislio, naravno bez vase pomoci nista!!
hvala svima
[ 01011011 @ 07.06.2005. 20:41 ] @
Nema na cemu, meni je na poslu ionako dosadno.
[ boccio @ 08.06.2005. 09:19 ] @
Citat: 01011011: Nema na cemu, meni je na poslu ionako dosadno.
A jel' ? Pa daj, nacicu ti ja sta da radis :)))) Firma placa, tebi nije dosadno (a usput naucis nesto), ja dobijem kôd...svi srecni, debeli i zadovoljni :)))
[ Bojan Zivanovic @ 08.06.2005. 11:26 ] @
Sto se koda gore tice, umesto addslashes() koristi mysql_real_escape_string(),
mnogo je vise friendly prema nasim slovima :)
[ sale83 @ 08.06.2005. 12:15 ] @
Cisto da se nadovezem " posto vidim da pocinjete sa mysql_real_escape_string()"
Zasto je Bojan Zivanovic spomenuo mysql_real_escape_string() ??
Upitanju je SQL Injection Attack - Zato obratite paznju na parametre $_POST, $_GET, $_COOKIE itd!!
http://php.planetmirror.com/ma...n.mysql-real-escape-string.php
[ BodaTajson @ 30.01.2007. 11:08 ] @
Da ne bih otvarao novu temu, napisacu svoj problem ovde :)
Pocetnik sam u php-u, brljao sam, muljao, citao tutorijale i na kraju razlozio na tri fajla kako bih lakse nasao problem ali ne ide.
Kada pokrenem stranicu, pojavi se forma ali jednostavno se podaci ne upisuju u bazu.
index.php
Code:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!--index.php-->
<body>
<h1>Index - test</h1>
<h5>
<form method="POST" action="uBazu.php">
Naslov:<br><input name="naslov" type="text">
<br><br>
Tekst:<br><textarea rows="8" cols="17" name="tekst" WRAP=no></textarea>
<br><br>
<input type="Submit" value="Potvrdi unos">
</form>
</h5>
</body>
</html>
Ubacivanje u bazu. Kad pokrenem samo ovaj fajl (iz Zenda) u bazu upise prazna polja(sem datuma, naravno). Tako da mi se cini da je ovde sve ok.
uBazu.php
Code:
<?php
include "konekcija.php";
$datum = date("Y-m-d");
$sql="insert into novosti (naslov, tekst, datum) values ('$_POST[naslov]', '$_POST[tekst]', '$datum')";
if (mysql_query($sql)) {
echo "Vest je ubacena u bazu";
}
else {
echo "Some shit occured: ".mysql_error();
}
?>
konektovanje
konekcija.php
Code:
<?php
$konekcija =@mysql_connect("localhost", "root", "mojasifra");
if (!$konekcija) {
die("Some shit occured: ".mysql_error());
}
mysql_select_db("ucenje", $konekcija);
?>
Ocito mi ne radi spoj izmedju index.php i uBazu.php pa bih molio za pomoc :)
[ mika @ 30.01.2007. 11:31 ] @
Posle:
Code: $sql="insert into novosti (naslov, tekst, datum) values ('$_POST[naslov]', '$_POST[tekst]', '$datum')";
ubaci jedno:
Code: echo $sql;
...pa ćeš videti gde je greška, tj. videćeš koji upit MySQL izvršava.
[ BodaTajson @ 30.01.2007. 11:51 ] @
Probavao sam to ali mi nije pomoglo. Kad iz browsera startujem index.php i popunim formu, Submitom me baci na uBazu.php bez ikakvog ispisa na toj stranici(cak ni sa $sql) niti upise bilo sta u bazu. Kad startujem samo uBazu.php iz Zenda, $sql mi ispise upravo ono sto sam rekao
>>> INSERT INTO novosti (naslov, tekst, datum) VALUES ('', '', '2007-01-30')
tj. u bazu upise prazna polja(naslov i tekst) i datum.
Cini mi se da sam uradio nesto pogresno u submit formi u index.php ali ne znam sta :(
[ mika @ 30.01.2007. 12:33 ] @
Probaj da ispišeš _POST variable pre izvršavanja upita. Ako ti ne ispiše, onda ti ne prenosti POST variable script kako treba, mada ne znam zašto je to tako.
Npr. probaj iz browsera da startuješ sve svoje fajlove, a ne iz tog ZEND-a, možda on blokira POST zahteve?
[ BodaTajson @ 30.01.2007. 13:06 ] @
I to sa ispisivanjem echo $_POST... sam probao i ne ispise nista. Znaci ne prenese podatke iz forme.
A kada im ovde na pocetku dodelim vrednost, te se vrednosti normalno upisu u bazu(startujuci iz Zenda, www.zend.com). Kada iz browsera startujem samo ovaj fajl(uBazu.php) ne desi se nista sem ispisa "testing".
Code:
testing!
<br><br>
<?php
include "konekcija.php";
$_POST['naslov']=proba;
$_POST['tekst']='upisa u bazu';
$datum = date("Y-m-d");
$sql="INSERT INTO novosti (naslov, tekst, datum) VALUES ('$_POST[naslov]', '$_POST[tekst]', '$datum')";
echo $sql;
if (mysql_query($sql)) {
echo "<br><br>Vest je ubacena u bazu";
}
else {
echo "Some shit occured: ".mysql_error();
}
?>
hvala na trudu :)
[ Nemanja Avramović @ 30.01.2007. 13:18 ] @
Ne možeš echo $_POST jer je to niz. Mora print_r($_POST);
I SQL upit mora da ide ovako, kad koristiš $_POST direktno u njemu, što nije nikako preporučljivo:
Code: $sql="INSERT INTO novosti (naslov, tekst, datum) VALUES ('{$_POST['naslov']}', '{$_POST['tekst']}', '$datum')";
Probaj tako pa javi šta si uradio. Ali opet je bolje de eskejpuješ vrednosti sa add_slashes ili mysql_real_escape_string.
[ BodaTajson @ 30.01.2007. 13:37 ] @
probao sam i sa {$_POST...} i ovako:
Code:
$upisNaslova = $_POST['naslov'];
$upisTeksta = $_POST['tekst'];
$datum = date("Y-m-d");
$sql="INSERT INTO novosti (naslov, tekst, datum) VALUES ('$upisNaslova', '$upisTeksta', '$datum')";
ali sve je isto, jednostavno ne upise u bazu :(
edit: probacu i sa add_slashes... samo da malo procitam literaturu :)
[ BodaTajson @ 30.01.2007. 14:05 ] @
izvinjavam se sto gnjavim al' moram :)
Promenio sam kod ovako: (uBazu.php)
Code:
testing!
<br><br>
Naslov: <?php echo $_POST["naslov"]; ?>.<br />
<br>
Tekst: <?php echo $_POST["tekst"]; ?>.<br />
<br><br>
<?php
include "konekcija.php";
$upisNaslova = $_POST["naslov"];
$upisTeksta = $_POST["tekst"];
$datum = date("Y-m-d");
$sql="INSERT INTO novosti (naslov, tekst, datum) VALUES ('$upisNaslova', '$upisTeksta', '$datum')";
if (mysql_query($sql)) {
echo "<br><br>Vest je ubacena u bazu";
}
else {
echo "Some shit occured: ".mysql_error();
}
?>
i dobijam ispis
testing!
Naslov: tekst naslova.
Tekst: tekst teksta :).
znaci, POST ipak prenese varijablu ali se ne upise u bazu.
[ Nemanja Avramović @ 30.01.2007. 14:13 ] @
Ne pratim temu od početka, tako da si možda i rekao, ali reci mi šta ti vraća mysql_error() ako uopšte vraća nešto. I šta ispisuje kad napišeš echo $sql;
Možda je najbolje da okačiš ovde sve relevantne fajlove kao i strukturu baze.
[ mika @ 30.01.2007. 14:22 ] @
Ček, bre, napravi ovakav fajl:
Code:
testing!
<br><br>
Naslov: <?php echo $_POST["naslov"]; ?>.<br />
<br>
Tekst: <?php echo $_POST["tekst"]; ?>.<br />
<br><br>
<?php
$upisNaslova = $_POST["naslov"];
$upisTeksta = $_POST["tekst"];
$datum = date("Y-m-d");
$sql="INSERT INTO novosti (naslov, tekst, datum) VALUES ('$upisNaslova', '$upisTeksta', '$datum')";
echo $sql;
?>
pa javi šta je bilo?
Očito je problem u fajlu konekcija.php i to trivijalan.
[ BodaTajson @ 30.01.2007. 17:24 ] @
probao, ispis je ovaj:
testing!
Naslov: qwerty.
Tekst: tekstqwerty.
INSERT INTO novosti (naslov, tekst, datum) VALUES ('qwerty', 'tekstqwerty', '2007-01-30')
znaci definitivno nesto sa konekcijom ne valja, evo je:
konekcija.php
Code:
<?php
$konekcija =@mysql_connect("localhost", "root", "mojasifra");
if (!$konekcija) {
die("Greska: ".mysql_error());
}
mysql_select_db("ucenje", $konekcija);
?>
[ BodaTajson @ 30.01.2007. 17:32 ] @
Citat: Nemanja Avramović: Ne pratim temu od početka, tako da si možda i rekao, ali reci mi šta ti vraća mysql_error() ako uopšte vraća nešto. I šta ispisuje kad napišeš echo $sql;
Možda je najbolje da okačiš ovde sve relevantne fajlove kao i strukturu baze.
okacio sam sve fajlove 5-6 postova gore (moj prvi post na ovoj temi)
echo $sql; mi vraca ono iznad napisano INSERT....
a baza je jednostavna, jedna tabela novosti
+----------+-------------+-------------------------+------------+
| idnovost | naslov | tekst | datum |
+----------+-------------+-------------------------+------------+
| 1 | Prva vest | Tekst vesti | 2007-01-29 |
| 2 | Druga vest | Tekst vesti druge vesti | 2007-01-29 |
| 3 | Treca vest | Tekst trece vesti | 2007-01-29 |
| 4 | 4. vest | Tekst 4. vesti | 2007-01-29 |
[ glavince @ 30.01.2007. 21:29 ] @
Probaj ovako,
$sql="INSERT INTO novosti (naslov, tekst, datum) VALUES ('".$_POST['naslov']."', '".$_POST['tekst']."', '".$datum."')";
[ mika @ 31.01.2007. 07:44 ] @
Probaj ovako: nemoj da includuješ konekciju već u samom kodu napiši sledeću stvar:
Code:
$konekcija =mysql_connect("localhost", "root", "mojasifra") or die ("Greska: ".mysql_error());
mysql_select_db("ucenje", $konekcija);
I onda probaj da li će da radi?
[ BodaTajson @ 01.02.2007. 15:56 ] @
ne ide, sve je isto :(
brljacu jos par dana sam pa se javljam ponovo ako ne resim
hvala :)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|