Gå til innhold

HTML-form i phpscript til mysql-feil


Anbefalte innlegg

Skrevet (endret)

Hei, nå er jeg fri for ideér. Skal ha en liten form som skal lagre no data i en mysql-database. Men får ikke PHP_SELF til å kjøre på samma sia. Har funnet flere forskjellige action-verdier men ingen fungerer, så lurer på om jeg mangler noe vesentlig andre steder?

 

Kan noen hjelpe?

 

<html>

<?php

 

$ip = $_SERVER['HTTP_CLIENT_IP'];

$date = "D j M y, H:i:s";

if (!isset($_POST['submit'])) {

mysql_connect("localhost","bruker","pass") or die ('kan ikke koble til');

mysql_select_db("database") or die ('kunne ikke velge db');

mysql_query("INSERT INTO nyheter (DATE, IP, TITLE, TEXT) VALUES('$date','$ip','$title','$text') or die ('hmm into');

echo ='Data lagt inn';

}

else {

 

?>

 

<form method="post" action="<?=$_SERVER[php_SELF];?>">

Tittel: <input type="text" name="tittel"><br>

Text: <textarea name="text"></textarea><br>

<input type="submit" name="submit" value="submit">

</form>

<?

}

?>

</html>

Endret av rikardo
Videoannonse
Annonse
Skrevet
Hei, nå er jeg fri for ideér. Skal ha en liten form som skal lagre no data i en mysql-database. Men får ikke PHP_SELF til å kjøre på samma sia. Har funnet flere forskjellige action-verdier men ingen fungerer, så lurer på om jeg mangler noe vesentlig andre steder?

 

Kan noen hjelpe?

 

<html>

<?php

 

$ip = $_SERVER['HTTP_CLIENT_IP'];

$date = "D j M y, H:i:s";

if (!isset($_POST['submit'])) {

mysql_connect("localhost","bruker","pass") or die ('kan ikke koble til');

mysql_select_db("database") or die ('kunne ikke velge db');

mysql_query("INSERT INTO nyheter (DATE, IP, TITLE, TEXT) VALUES('$date','$ip','$title','$text') or die ('hmm into');

echo ='Data lagt inn';

}

else {

 

?>

 

<form method="post" action="<?=$_SERVER[php_SELF];?>">

Tittel: <input type="text" name="tittel"><br>

Text: <textarea name="text"></textarea><br>

<input type="submit" name="submit" value="submit">

</form>

<?

}

?>

</html>

5841741[/snapback]

 

 

Hvis det er bare til samme side du skal refere så trenger du ha en tom action tag:

 

action=""

 

Se om det funker

Skrevet (endret)

bruk <?php ?> i stede for <? ?>

 

Filen må også slutte på .php ellers vil det i det fleste tilfeller ikke virke.

 

EDIT: prøv også slik <?php print $_SERVER['PHP_SELF']; ?>

Endret av trondes
Skrevet (endret)

EHH ?

allown.htm

 

Må den ikke hete allown.php for at php skal funke da ?

 

EDIT: Ups, leste inlegget over litt dårlig.. ^^

Endret av stianiquniez
Skrevet

Nå har jeg endra til fil.php og det du skrev trondes. Får ikke noen parse-feilmeldinger, men ingenting kommer opp.. Skjønner ingenting :woot:

 

<?php

 

$ip = $_SERVER['HTTP_CLIENT_IP'];

$date = "D j M y, H:i:s";

 

if (!isset($_POST['submit']))

{

mysql_connect("localhost","bruker","pass") or die ('kan ikke koble til');

mysql_select_db("database") or die ('kunne ikke velge db');

mysql_query("INSERT INTO nyheter (DATE, IP, TITLE, TEXT) VALUES('$date','$ip','$title','$text') or die ('hmm into');

}

else {

?>

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

">

Tittel: <input type="text" name="$titel"><br>

Text: <textarea name="$text"></textarea><br>

<input type="submit" name="submit" value="submit">

</form>

<?php

}

?>

Skrevet

if (!isset($_POST['submit']))

 

sider du... dvs at hvis det ikke er sendt inn noe form, da skal den registere den..

 

if (isset($_POST['submit']))

 

skal det være

Skrevet

Nå har jeg fått til alt, bortsett fra at TITLE og TEXT blir ikke lagret. Og iogmed IP og Dato blir hentet fra selve skriptet og ikke HTML-formen, så jeg regner med det er noe der som er galt. Tips mottas med stor takk!

 

<?php

$date = date("D j M y, H:i:s");

if(isset($_POST['submit']))

{

$host = host;

$user = user;

$pass = pass;

$db = db;

mysql_connect("$host","$user","$pass") or die ("Kunne ikke koble til");

mysql_select_db("$db") or die ('Lunne ikke velge databasen');

mysql_query("INSERT INTO nyheter (DATE,IP,TITLE,TEXT) values('$date', \"".$HTTP_SERVER_VARS['REMOTE_ADDR']."\", '$TITLE', '$TEXT')") or die ("Greide ikke lagre");

}

else

{

print <<< html

  <h3>Legg til nyhet</h3>

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

  Title: <input type=text name="TITLE" size="20" maxlength="255"><br>

  News:  <textarea name="TEXT" rows="10" cols="20"></textarea><br>

  <input type="submit" name="submit" value="Legg til nyhet">

  </form>

html;

}

?>

Skrevet
Nå har jeg fått til alt, bortsett fra at TITLE og TEXT blir ikke lagret. Og iogmed IP og Dato blir hentet fra selve skriptet og ikke HTML-formen, så jeg regner med det er noe der som er galt. Tips mottas med stor takk!

 

<?php

$date = date("D j M y, H:i:s");

if(isset($_POST['submit']))

{

$host = host;

$user = user;

$pass = pass;

$db = db;

mysql_connect("$host","$user","$pass") or die ("Kunne ikke koble til");

mysql_select_db("$db") or die ('Lunne ikke velge databasen');

mysql_query("INSERT INTO nyheter (DATE,IP,TITLE,TEXT) values('$date', \"".$HTTP_SERVER_VARS['REMOTE_ADDR']."\", '$TITLE', '$TEXT')") or die ("Greide ikke lagre");

}

else

{

print <<< html

  <h3>Legg til nyhet</h3>

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

  Title: <input type=text name="TITLE" size="20" maxlength="255"><br>

  News:  <textarea name="TEXT" rows="10" cols="20"></textarea><br>

  <input type="submit" name="submit" value="Legg til nyhet">

  </form>

html;

}

?>

5850545[/snapback]

 

med mindre register_globals = on kan du ikke bruke variabler slik du gjør. Det er mulig du ikke har postet den delen av koden som gjør postvariabler om til annen type variabler.

 

Men la oss si at du har postet alt, så må du konvertere variablene slik:

$text = $_POST['TEXT'];
$title = $_POST['TITLE'];

 

Hvordan har du tenkt å hente ut dato og ip fra skjema? Ingen postvariabler der som jeg kan se som gjør dette mulig. Neste spm blir - hvorfor vil du hente ip og dato fra skjema? Slik du gjør det i scriptet ditt er vel okay?

 

Og for å gjøre ting litt enklere for deg selv:

$ip = $_SERVER[REMOTE_ADDR];

og da

insert into [,.....] values(..., {$ip}...);

så slipper du å tenke på når en streng begynner, når en variabel begynner, når skal en escape og når skal en konkatinere.

 

og til sist:

Siden du ikke har register_globals = on kan du ikke heller bruke $PHP_SELF slik du gjør

Men du kan skrive

$PHP_SELF = $_SERVER[PHP_SELF];
echo <<<HTML
<form method="post" action="$PHP_SELF">
// alt det andre du skal ha med i skjema
HTML;

Skrevet (endret)

Hjertelig takk for utfyllende svar! Er helt ny på dette, så har skrevet skriptet ut ifra hva jeg har sett andre har gjort det :-)

 

Edit; Title og tekst vil fremdeles ikke inn :hmm:

(Yepp kommer etter at jeg trykker submit, og IP og Dato blir lagret)

 

<?php

$date = date("D j M y, H:i:s");

$text = $_POST['TEXT'];

$title = $_POST['TITLE'];

$ip = $_SERVER[REMOTE_ADDR];

if(isset($_POST['submit']))

{

$host = host;

$user = user;

$pass = pass;

$db = db;

mysql_connect("$host","$user","$pass") or die ("Kunne ikke koble til");

mysql_select_db("$db") or die ('Lunne ikke velge databasen');

mysql_query("INSERT INTO nyheter (DATE,IP,TITLE,TEXT) values('$date', '$ip', '$TITLE', '$TEXT')") or die ("Greide ikke lagre");

echo "Yepp!";

}

else

{

echo "$date";

echo "<br>";

echo "$ip";

$PHP_SELF = $_SERVER[php_SELF];

print <<< html

   <h3>Legg til nyhet</h3>

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

   Title: <input type=text name="TITLE" size="20" maxlength="255"><br>

   News:  <textarea name="TEXT" rows="10" cols="20"></textarea><br>

   <input type="submit" name="submit" value="Legg til nyhet">

   </form>

html;

}

?>

Endret av rikardo

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...