Pereiti prie turinio

Kodėl neįrašo į duombazę?


Rekomenduojami pranešimai

Sveiki, turiu tokį paprastą PHP koduką. Kai prisijungi, viršuje rašo: "Welcome, tavo nick, su kuriuo prisijungei" ir po apačia yra html elementas textarea, į kurį įvedus kokį nori tekstą ir paspaudus mygtuką submit, tas tekstas turi būti įrašytas į duomenų bazę, tačiau kai paspaudi submit, duomenų bazėje prie lentelės lauko "text" būna tuščia, o id kiekvieną kartą paspaudus vis padidėja (taip ir turi būti).

 

Va, kas būna, kai pavyzdžiui įrašau "Labas" į textarea ir paspaudžiu submit:

http://www.part.lt/img/11664404922352ad3c00b335fa20a0ab570.JPG

 

Ir va kodas puslapio, kai prisijungi:

 

<?php
mysql_connect('localhost','root','');
mysql_select_db('test');

$insert = @mysql_query("INSERT INTO `irasai` (text) 
VALUES ('$_POST[text]')");

if(isset($_POST['login']) && isset($_POST['password']) && isset($_POST['submit'])) 
{
$user_name = preg_replace(array("/\=/","/\#/","/\sOR\s/"), "", $_POST['login']);
$user_pass = $_POST['password'];

$result = @mysql_query("SELECT * FROM vartotojai 
				WHERE login = '$user_name' 
				AND password = '$user_pass'");

if(@mysql_num_rows($result) == 0)
{
	echo "The nickname or passwrod you've entered are incorrect";
} else {
	$data = @mysql_fetch_assoc($result);

	session_start();
	$_SESSION['user'] = $data['login'];

	echo "<center>Hello, " . $data['login'] . "<center />";
	if(isset($_POST['submit1']) && isset($_POST['text'])){
	$insert;
	}
}
} else {
echo "Hello, guest";
}

if(isset($_POST['logout'])){
setcookie("user", "", time()-3600);
}

if(isset($_SESSION['user'])) {

?>

<html>
<body>

<form action="home.html" method="post">
<input type="submit" name="logout" value="Logout" />
<center><textarea cols="100" rows="10" name="text"></textarea><center />
<center><input type="submit" name="submit1" value="Submit" /><center />
</form>

<form action="lol.html" method="post">


</body>
</html>

<?php
}

 

Čia įterpimo kodas:

 

$insert = @mysql_query("INSERT INTO `irasai` (text) 
VALUES ('$_POST[text]')");

 

Ties viduriu, labiau į pabaigą jis yra vygdomas:

 

if(isset($_POST['submit1']) && isset($_POST['text'])){
	$insert;
	}

 

Gal ir nelabai aiškiai išdėsčiau, jei taip, tai klauskit, kas neaišku. Tikiuosi surasite klaidą mano kode ir padėsite.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Duomenų įrašymas vyksta iškart panaudojus mysql_query() funkciją su "INSERT" komenda, todėl pas tave rašo į lentelę kiekvieną kartą užkrovus puslapį (prieš tikrinant prisijungimą ir formą)

 

2. Niekad nerašyk $_POST, $_GET ir kitų globalių kintamųjų tiesiai į SQL komandą, panaudok bent mysql_real_escape_string() filtravimą, o dar geriau - naudok prepared statements.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Duomenų įrašymas vyksta iškart panaudojus mysql_query() funkciją su "INSERT" komenda, todėl pas tave rašo į lentelę kiekvieną kartą užkrovus puslapį (prieš tikrinant prisijungimą ir formą)

 

2. Niekad nerašyk $_POST, $_GET ir kitų globalių kintamųjų tiesiai į SQL komandą, panaudok bent mysql_real_escape_string() filtravimą, o dar geriau - naudok prepared statements.

 

Žinok nelabai supratau, nes esu naujokas PHP kalboje. Gal kas galėtumėte paprasčiausiai ištaisyti mano klaidą, bet be jokių "mandrybių" ir t.t. Man reikia, kad ištaisytumėt, kad įrašytų normaliai į duomenų bazę. Dėkui :)

 

if(isset($_POST['submit1']) && isset($_POST['text'])){
	mysql_query( "INSERT INTO `irasai` set `text` = '{$_POST['text']}' " );
	}

 

Ten kur buvo $insert = mysql_query tai čia ne tik priskyrė bet ir vykdė ;)

 

Taip išvis nieko neinsertina, net ID neprisideda... :\

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Žinok nelabai supratau, nes esu naujokas PHP kalboje. Gal kas galėtumėte paprasčiausiai ištaisyti mano klaidą, bet be jokių "mandrybių" ir t.t. Man reikia, kad ištaisytumėt, kad įrašytų normaliai į duomenų bazę. Dėkui :)

 

 

 

Taip išvis nieko neinsertina, net ID neprisideda... :\

 

Pridėti eilutę turi tik jeigu paspaudi submit ir yra įvestas koks nors tekstas :) Šiaip čia tas tavo duotas kodas kažkoks nelabai į temą ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pamėgink su šituo pažaisti, nebandžiau bet turėtų veikti, gal padės suprasti :)

 

<?	
$sql = mysql_connect ( "localhost", "user", "pass" ) or exit ( mysql_error () );
mysql_select_db( "test" ) or exit ( mysql_error () );

if ( isset ( $_POST['submit'] ) and isset ( $_POST['text'] ) )
mysql_query ( "insert into `irasai` set `text` = '{$_POST['text']}'" ) or exit ( mysql_error () );
?>

<form action="" method="post">

<textarea cols="100" rows="10" name="text"></textarea><br /><br />
<input type="submit" name="submit" value="Submit" />

</form>

<?
mysql_close ( $sql );
?>

Redagavo Kat
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pamėgink su šituo pažaisti, nebandžiau bet turėtų veikti, gal padės suprasti :)

 

<?	
$sql = mysql_connect ( "localhost", "user", "pass" ) or exit ( mysql_error () );
mysql_select_db( "test" ) or exit ( mysql_error () );

if ( isset ( $_POST['submit'] ) and isset ( $_POST['text'] ) )
mysql_query ( "insert into `irasai` set `text` = '{$_POST['text']}'" ) or exit ( mysql_error () );
?>

<form action="" method="post">

<textarea cols="100" rows="10" name="text"></textarea><br /><br />
<input type="submit" name="submit" value="Submit" />

</form>

<?
mysql_close ( $sql );
?>

 

Vis tiek tas pats...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na tu atidžiau panagrinėk, matyt kažkur žioplą klaidą įvėlei :)

 

Jau veikia, bet man įdomu kodėl kai į formą kur action yra, įrašau pvz home.html, ir kai poto į textarea įrašau tekstą ir spaudžiu submit, į db nieko neinsertina, o jei action palieku tuščią, tada viskas normaliai veikia :?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jau veikia, bet man įdomu kodėl kai į formą kur action yra, įrašau pvz home.html, ir kai poto į textarea įrašau tekstą ir spaudžiu submit, į db nieko neinsertina, o jei action palieku tuščią, tada viskas normaliai veikia :?

 

http://www.w3schools.com/TAGS/att_form_action.asp :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jau veikia, bet man įdomu kodėl kai į formą kur action yra, įrašau pvz home.html, ir kai poto į textarea įrašau tekstą ir spaudžiu submit, į db nieko neinsertina, o jei action palieku tuščią, tada viskas normaliai veikia :?

 

Nes html failai neatlieka php funkcijų. Jeigu failo turinys bus identiškas ir turėsi du failus, pvz., 1.html ir 2.php ir juos dėsi kaip target, tai veiks tik antras variantas.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nes html failai neatlieka php funkcijų. Jeigu failo turinys bus identiškas ir turėsi du failus, pvz., 1.html ir 2.php ir juos dėsi kaip target, tai veiks tik antras variantas.

 

Tai kaip kam padaryti, kad paspaudus Submit mygtuką, nukeltų į tam tikrą puslapį?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Panaudosiu savo pvz.:

 

Pirmas failas, tarkime, index.php

 

<form action="engine.php" method="post">

<textarea cols="100" rows="10" name="text"></textarea><br /><br />
<input type="submit" name="submit" value="Submit" />

</form>

 

Kitas failas, tarkime engine.php

 

<?      
$sql = mysql_connect ( "localhost", "user", "pass" ) or exit ( mysql_error () );
mysql_select_db( "test" ) or exit ( mysql_error () );

if ( isset ( $_POST['submit'] ) and isset ( $_POST['text'] ) )
       mysql_query ( "insert into `irasai` set `text` = '{$_POST['text']}'" ) or exit ( mysql_error () );

mysql_close ( $sql );
?>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Panaudosiu savo pvz.:

 

Pirmas failas, tarkime, index.php

 

<form action="engine.php" method="post">

<textarea cols="100" rows="10" name="text"></textarea><br /><br />
<input type="submit" name="submit" value="Submit" />

</form>

 

Kitas failas, tarkime engine.php

 

<?      
$sql = mysql_connect ( "localhost", "user", "pass" ) or exit ( mysql_error () );
mysql_select_db( "test" ) or exit ( mysql_error () );

if ( isset ( $_POST['submit'] ) and isset ( $_POST['text'] ) )
       mysql_query ( "insert into `irasai` set `text` = '{$_POST['text']}'" ) or exit ( mysql_error () );

mysql_close ( $sql );
?>

 

Nu bet pas mane padaryta, kad tą formą rodytų tik kai žmogus prisijungia...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...