Avatar billede claushelth Nybegynder
06. februar 2003 - 19:00 Der er 8 kommentarer og
1 løsning

Variabeloverførsel med fra form

Jeg er ved at lave en indsættelse-form til min DB fra min hjemmeside.

Jeg har set flere eksempler, hvor man har placeret php-koden på samme side som formen, det vil jeg også for overskuelighedens skyld.

Problem: Der overføres til DB selv om der ikke står noget i felterne!

To ting omkring det:
- I min MySql tabel har jeg defineret at de 3 felter der skal indsættes fra hjemmesiden må ikke være null (NOT NULL), men alligevel acceptere den at man ikke skriver noget i disse felter (det samme er gældende når jeg indsætter via phpMyAdmin)?
- jeg mente at isset() skulle fange det? Men det ser jo ikke sådan ud

Spørgsmål: Hvor og hvordan skal jeg sætte den til at tjekke felterne (i DB, i formen eller i php-koden)?

claus
Avatar billede claushelth Nybegynder
06. februar 2003 - 19:02 #1
ups...her er min kode:

<?php
if(isset($_POST['send_artikel']))
{
    require($_SERVER["DOCUMENT_ROOT"] . "/hj_funktioner/db_funktioner.php");

    aabn_forbindelse_og_vaelgdb();

    $forfatter     = $_POST["forfatter"];
    $overskrift = $_POST["overskrift"];
    $tekst     = $_POST["tekst"];

    $tekst = str_replace("\n","<br>",$tekst);

    $query = "insert into artikeldbtest1(Forfatter,Overskrift,Tekst)
            values ('$forfatter','$overskrift','$tekst')";

    sql_spoerg($query);

    luk_forbindelse();
    echo "ok";

}
else
{
    echo "Ikke ok";
}
?>



<p>
    Indsæt ny artikel
</p>

<p>
<form method=post action="<?php echo $PHP_SELF; ?>">
  <input type="hidden" name="send_artikel" value="send_artikel">
  Forfatter: <br> <input type="text" size="30" name ="forfatter"> <br><br>
  Overskrift:<br> <input type="text" size="60" name ="overskrift"> <br><br>
  Indhold:  <br> <textarea type="text" name ="tekst" rows="10" cols="45"></textarea><br>
  <input type="submit" value="send">
</form>

</p>
<br>
Avatar billede fangel Nybegynder
06. februar 2003 - 19:05 #2
lav en

if($artikel == "" OR $emne == ""){
echo "du skal skrive noget...";
}

og du kan forresten bytte
$tekst = str_replace("\n","<br>",$tekst);
ud med
$tekst = nl2br($tekst);

da denne funktion gør præcist det samme...

Morten
Avatar billede claushelth Nybegynder
06. februar 2003 - 19:34 #3
jeg troede det kunne gøres på en lidt nemmere (hensigtsmæssig) måde f.eks. isset().
Jeg fatter simpelthen bare ikke hvad isset(); skal gøre godt for så?
Hvordan beholder jeg de data inden i felterne som der allerede er blevet udfyldt(Hvis man bar har glemt at indtaste forfatter, er det lidt surt at ens hele tekst skal skrives på ny)?
Avatar billede claushelth Nybegynder
06. februar 2003 - 19:49 #4
Er der egnetlig regler for om ma skal skrive sin php-kode i toppen eller i bunden, eller er det op til en selv. I mit eksempel, kunne jeg jo få skrvet en kontroltekst i bunden, hvis vel og mærke at php-koden står i bunden...
Avatar billede fangel Nybegynder
06. februar 2003 - 20:01 #5
det er mest hensigts mæsigt at lægge det i toppen, da du jo for vist formen lige meget hvad, hvis den altså står øverst... så er det forresten også nemmest at rette PHP fejl, for så skal man ikke scroll'e ned hver gang... ;)

isset() tjekker bare om variablen findes.... "is set" = "er oprettet"... altså om variablen er blevet erklæret et sted.

Morten
Avatar billede claushelth Nybegynder
06. februar 2003 - 20:05 #6
ok...hmmm isset() skal så bare altid være med som en slags sikkerhed!

Når jeg fik svar på mit ? så hvis du lige smider et svar så vil jeg oprette et nyt med mit 2. ? omkring at beholde de indskrvet værdier i felterne hvis man havde glemt at udfylde et enkelt felt. :-)

claus
Avatar billede fangel Nybegynder
06. februar 2003 - 20:13 #7
jeg kan somend også godt lave det andet... du ændre din form til at være

<form method=post action="<?php echo $PHP_SELF; ?>">
  <input type="hidden" name="send_artikel" value="send_artikel">
  Forfatter: <br> <input type="text" size="30" name ="forfatter" value="<?php if(isset($_POST['forfatter']) echo $_POST['forfatter']; ?>"> <br><br>
  Overskrift:<br> <input type="text" size="60" name ="overskrift" value="<?php if(isset($_POST['overskrift']) echo $_POST['overskrift']; ?>"> <br><br>
  Indhold:  <br> <textarea type="text" name ="tekst" rows="10" cols="45"><?php if(isset($_POST['tekst']) echo $_POST['tekst']; ?></textarea><br>
  <input type="submit" value="send">
</form>

kort sagt går det ud på at lave en

value="<?php if(isset($_POST['felt']) echo $_POST['felt']; ?>"

på hvert eneste input... ;)

Morten
Avatar billede claushelth Nybegynder
06. februar 2003 - 20:26 #8
Jeg takker for hjælpen...der opstod lidt flere ting undervejs...men jeg vil lige side og rode lidt med det.

(Når jeg gør det på denne måde mister jeg mulligheden for at ryde felterne i formen..)

claus
Avatar billede fangel Nybegynder
06. februar 2003 - 20:28 #9
OK...

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Politiets Efterretningstjeneste

DevOps engineer til dataanalyse i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

DevOps Engineer (AI) til Forsvarets nye IT-platform

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger elementleder til Metode og Modning