Gå til innhold

HTML-form i phpscript til mysql-feil


Anbefalte innlegg

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
Lenke til kommentar
Videoannonse
Annonse
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

Lenke til kommentar

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

}

?>

Lenke til kommentar

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;

}

?>

Lenke til kommentar
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;

Lenke til kommentar

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
Lenke til kommentar

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...