Avatar billede daki Juniormester
23. august 2003 - 18:39 Der er 20 kommentarer og
1 løsning

To valgmuligeder i en <form action>

Hvordan retter jeg i nedenstående script, således at jeg enten kan trykke på 'OK' = nyhed oprettes eller 'INDSÆT' = Der skal lige indsættes nogen mere.

Skal lige nævnes, at det ikke er mig, som have lavet scriptet. Men nu skal jeg altså have indført denne valg nulighed.

if (!isset($type))
  {
  echo "<h3><center>";
  echo "Nyheds redigeringsside";
  echo "<br><br></td></tr><tr><td><h3>";
  echo "<table align=\"center\" border=\"0\" width=\"340\" bgcolor=\"#FFFF95\" ";
  echo "cellpadding=\"5\" cellspacing=\"0\" class=\"blackborder\" style : (margin-left:0; ";
  echo "margin-top:0)><tr><td>";
  echo "<form action=\"edit_nyheder.php\" method=\"post\"><input type=\"hidden\" name=\"type\" value=\"insert\">";
  echo "<h3>Tilføj en nyhed:<br><br>";
  echo "<h2>Overskrift:<br><input type=\"text\" name=\"overskrift\" size=\"50\" class=\"blackborder\">";
  echo "<h2>Forfatter:<br><input type=\"text\" name=\"forfatter\" size=\"50\" class=\"blackborder\">";
  echo "<h2>Nyhed:<br><textarea name=\"nyhed\" cols=\"50\" rows=\"10\" class=\"blackborder\"></textarea>";
  if ($login_id==$erh_pass)
      {
      echo "<input type=\"hidden\" name=\"gruppe\" value=\"1\">";
      }
  else
      {
      echo "<input type=\"hidden\" name=\"gruppe\" value=\"2\">";
      }
  echo "<center><input type=\"image\" src=\"images/ok.gif\" value=\"Tilføj\" border=\"0\"></center>";
  echo "</form>";
  echo "</td></tr></table>";
  echo "<br>";
Avatar billede jakoba Nybegynder
23. august 2003 - 18:47 #1
<form action="indsaet.php" onsubmit="this.action=(this.handling[0].selected)?'opret.php':'indsaet.php';return true;">
Ønsker du at oprette<input type='radio' name='handling' value='1'>
eller indsætte<input type='radio' name='handling' value='1'>

mvh JakobA

PS: det er lidt spild af servertid at skrive sådan en masse konstante linier med php.
Avatar billede jakoba Nybegynder
23. august 2003 - 18:49 #2
Ups. det hedder vist .checked og ikke .selected for radioknapper.
Avatar billede cbolvig Nybegynder
23. august 2003 - 18:57 #3
Jacob har ret. Husk at HTML i princippet ikke har en pind med PHP at gøre.
Du samler al din HTMl kode i en variabel fx. $HTMLout og "echoer" denne til slut således:
<?php
$HTMLout="<html>";
$HTMLout.="<head>";
$HTMLout.="</head>";
$HTMLout.="<body>";
.. endnu mere
$HTMLout.="</body>";
$HTMLout.="</html>";
echo $HTMLout;
?>
Avatar billede daki Juniormester
23. august 2003 - 18:58 #4
Som nævnt er det ikke mig der har lavet dette, så hvad der er spild har jeg ingen ide om :-))

Der skal ikke hentes/startes et nyt script. Hvis man trykker på 'OK' ender man her:
  if (isset($type) && $type=="insert").

Så jeg havde regnet noget med - trykker man på 'Indsæt' ender man her:
  if (isset($type) && $type=="indsaet").

Eller har jeg forklarte det forkert ???
Avatar billede daki Juniormester
23. august 2003 - 19:00 #5
forklarte = forklaret
Avatar billede jakoba Nybegynder
23. august 2003 - 19:18 #6
Ja så skal du blot vælge på radiknappen værdi:

Ønsker du at oprette<input type='radio' name='handling' value='opret' checked>
eller indsætte<input type='radio' name='handling' value='indset'>

og sende formen normalt. Når formens svript så starter vil $handling have den ene eller den anden værdi:
  if ( $handling=="opret" ) {
      // kode der opretter
  } else
  if ( $handling=="indset" ) {
      // kode der indsætter
  }

mvh JakobA
Avatar billede cbolvig Nybegynder
23. august 2003 - 20:25 #7
Jacobs radiobuttons metode er skudsikker.
Alternativt: Hvis man kan finde fornuftige "values" til sit formål, kan man som en anden mulighed benytte to submitknapper med samme navn(name) og forskellige værdier(value). Knapteksten er lig "value" og man skal forsøge at undgå Danske specialtegn selvom mit eksempel i ren HTMLkode viser Danske tegn herunder. Denne metode med to submitbuttons ses meget sjældent i praksis. Smag og behag.

<input type="submit" value="OK" name="type">
<input type="submit" value="Indsæt" name="type">

Hvis du tilføjer "styles" kan du gøre knapperne lige brede uanset forskellige længder af "value" og ændre baggrundsfarver osv.

Hvis du som "name" bruger variablen "type" fra dit eget eksempel til Jacobs radiobuttons, skal du fjerne tag'et hvor type="hidden" og name="type", ellers får du flere instanser af variablen "type=" når du submitter formularen og så skal du sikre dig at du får fat i den rette type=xxx.
Avatar billede daki Juniormester
23. august 2003 - 20:47 #8
Som I nok kan forstå, er jeg ikke den store 'PHP-NØRD' og skal derfor have alt skåret ud i pap for ar fatte sammenhænget.

Jeg viser lige hele scriptet igen efter jeg har ændret i det.

if (!isset($type))
  {
  ?>
  <h3><center>Nyheds redigeringsside med Upload<br><br>
  </td></tr><tr><td><h3>
  <table align="center" border="0" width="340" bgcolor="#FFFF95" cellpadding="5" cellspacing="0" class="blackborder" style : (margin-left:0 margin-top:0)>
  <tr><td>
  <form action="edit_nyheder_upload.php" method="post">

  <input type="hidden" name="type" value="insert"> - Hvad gør det godt for

  <h3>Tilføj en nyhed:<br><br>
  <h2>Overskrift:<br>
  <input type="text" name="overskrift" size="50" class="blackborder">
  <h2>Forfatter:<br>
  <input type="text" name="forfatter" size="50" class="blackborder">
  <h2>Nyhed:<br>
  <textarea name="nyhed" cols="50" rows="10" class="blackborder"></textarea>
  <?
  if ($login_id==$erh_pass)
      { ?> <input type="hidden" name="gruppe" value="1"> <? }
  else
      { ?> <input type="hidden" name="gruppe" value="2"> <? }
  ?>
  <center><input type="image" src="images/ok.gif" value="Tilføj" border="0"> - Hvorfor skal der pludselig bruge "Tilføj" ???
Trykkes der på 'OK' sendes da videre til : if (isset($type) && $type=="insert") --- script del længere nede.

  <? echo "&nbsp"; ?>
  <input type="image" src="images/ret_1.gif" value="????" border="0"></center>
Trykkes der på 'RET' sendes da videre til : if (isset($type) && $type=="ret") --- script del mangler !!!.

  </form></td></tr></table><br>
  <?


if (isset($type) && $type=="insert")
  {
  if ($gruppe == 1):
      {
      $sql="insert into nyheder values ('',current_date(),'$overskrift','$forfatter','$nyhed','1','0','0','0')";
      $result=mysql_query($sql,$db);
      if ($result)
        {
        echo "<b>Nyheden blev indsat!</b>";
        ?> <meta http-equiv="REFRESH" content="3;URL=edit_nyheder_upload.php"> <?
        }
      else
        {
        echo "<b>Nyheden blev IKKE indsat!</b>";
        ?> <meta http-equiv="REFRESH" content="3;URL=edit_nyheder_upload.php"> <?
        }
      }
  else:
      {
      $sql="insert into nyheder values ('',current_date(),'$overskrift','$forfatter','$nyhed','0','1','0','0')";
      $result=mysql_query($sql,$db);
      if ($result)
        {
        echo "<b>Nyheden blev indsat!</b>";
        ?> <meta http-equiv="REFRESH" content="3;URL=edit_nyheder_upload.php"> <?
        }
      else
        {
        echo "<b>Nyheden blev IKKE indsat!</b>";
        ?> <meta http-equiv="REFRESH" content="3;URL=edit_nyheder_upload.php"> <?
        }
      }
  endif;
  }

Hvis det er til nogen hjælp :-)
Avatar billede jakoba Nybegynder
23. august 2003 - 21:50 #9
angående linien:
  <input type="hidden" name="type" value="insert"> - Hvad gør det godt for

tror jeg det er et felt programmøren har beholdt fra den form han kopierede da han laved din side. Den bliver godt nok testet bagefter, men den bliver aldrig ændret, så den er reelt ligegyldig.

angående  insert / tilføj
De to ord betyder noget nær det samme.
  "tilføj en ny nyhed (til databasen)" / "tilføj nogeet mere til en eksisterende nyhed"
er det samme som:
  "insert a new news article (into the database)" / "Insert something at the end of an existing news article".

Det er ikke sådan at tilføj altid betyder "udvid noget der findes" og at insert altid betyder "indsæt noget helt nyt"

allenfals kan du bare fjerne feltet
  <input type="hidden" name="type" value="insert"> - Hvad gør det godt for
og istedet indsætte radioknapperne (og give dem navnet 'type'
  Ønsker du at oprette<input type='radio' name='type' value='insert' checked> eller tilføje noget til<input type='radio' name='type' value='tilfojtil'> en nyhed ?
Avatar billede jakoba Nybegynder
23. august 2003 - 21:53 #10
så vil if setningen
  if (isset($type) && $type=="insert")
virke præcis som før,
og du kan lave en ny if-setning
  if (isset($type) && $type=="tilfojtil") {
      // og her tilføjer du så noget til en eksisterende nyhed.
      // det er ikke så nemt som det lige lyder, så det tør jeg ikke sige hvordan
  }
Avatar billede daki Juniormester
23. august 2003 - 22:10 #11
Tak for forklaring jakoba.

Jeg bliver nød til at stoppe for i dag, vender tilbage i morgen med et svar på om jeg får det til at virke, som jeg gerne vil have det.
Avatar billede daki Juniormester
24. august 2003 - 11:38 #12
Så har jeg fået det til at virke.

Jeg vil lige forklare meningen med de 2 valg:
Opret = indsæt i tabel med status ='0'
Tilføj = indsæt i tabel med status ='1'

Er status så = '1' skal jeg bruge idnr for rækken, hvordan gør jeg det ??
Avatar billede jakoba Nybegynder
24. august 2003 - 11:44 #13
Øh bøh, det ved jeg ikke.
Hvad hedder felterne er der i den der database-tabel og hvad slags data er der i dem?
Hvad er det idnr til?
Avatar billede daki Juniormester
24. august 2003 - 12:15 #14
Tabellen ser sådan ud:
CREATE TABLE nyheder (
  id int(11) NOT NULL auto_increment,
  dato varchar(10) default NULL,
  overskrift varchar(100) default NULL,
  forfatter varchar(100) default NULL,
  nyhed blob,
  adderhverv tinyint(4) default NULL,
  addtfc tinyint(4) default NULL,
  status tinyint(4) default '0',
  billedeid tinyint(4) default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

Og det var billedeid som skulle være 0 eller 1.
Hvis det er 1 skal id nummeret bruges i tabellen billeder til vise hvilken nyhed billeder hører til.

tabellen til billeder ser sådan ud:
CREATE TABLE billeder (
  id int(4) NOT NULL auto_increment,
  billede varchar(100) NOT NULL default '0',
  tekst blob NOT NULL,
  nyhed_id tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede daki Juniormester
24. august 2003 - 12:24 #15
Altså:
Man opretter en nyhed med 'OK' og fortæller - 'der skal ikke indsættes billeder'.

Man opretter en nyhed med 'Tilføj' og fortæller - 'Der skal indsættes billeder'.

Opretter man med tilføj indsættes nyheden i tabellen nyheder og man sendes videre, og skal nu vælge billeder til indsæt.

Når man har valgt billederne skal disse uploades og indsættes i tabellen med oplysninger om billedenavn og tekst samt nyhedens idnr. Så man kan vise billederne sammen med nyheden.

Hvis det kan gøre på en smartere måde er jeg selvfølgelig lydhør for ideer.
Avatar billede jakoba Nybegynder
24. august 2003 - 13:03 #16
Det du beskriver lyder som 2 eller 3 sider for at indsætte een 'nyhedsklump', det er generelt bedst at undgå fordi folk bliver usikre og trykker på 'back' knappen og så har du et hulens bøvl med at holde rede i hvorlangt de er kommet, osv.

Det er klart at foretrække at hele nyheden (influsive billeder) kommer fra een enkelt formular. En nem måde kunne være at tilføje et par <input type='file' felter til den form du har så brugeren kan vælge at uploade et (eller to) billeder sammen med nyhedsteksten.

Men det er mere end jeg har tid til idag. undskyld.

mvh JakobA
Avatar billede daki Juniormester
24. august 2003 - 13:18 #17
Jo det har jeg såmænd også tænkt, men jeg syntes at indtastningsformularen blev for stor. Det skal også kun være max. 3 billeder, måske 5.

Du vil vel stadigvæk sætte info om billederne i sin egen tabel og sammenligne med en form for id, eller hvad ??

Giv tid, giv tid - det er kun et forslag til om det kan lade sig gøre eller ej, så om jeg har fået lavet en løsning engang i løbet af ugen er det fint.
Avatar billede tipsen Nybegynder
24. august 2003 - 13:21 #18
Er der egentlig noget galt i at lave to submit-knapper med forskellige names og values?
Avatar billede daki Juniormester
24. august 2003 - 13:33 #19
tipsen -> Hvad mener du. Hvordan vil du da gøre det.

Det der skal ske er:

1. vælger man OK - oprettes nyheden i tabellen og der er ikke billeder til.
2. vælger man Tilføj/Indsæt - oprettes nyheden i tabellen og der skal vælges x-antal billeder til upload, som så kan vises sammen med nyheden.
Avatar billede tipsen Nybegynder
24. august 2003 - 17:40 #20
lav to submitknapper med navnene submit1 og submit2 og check med if (isset($_POST['submit1'])) eller if (isset($_POST['submit2']))
Avatar billede daki Juniormester
24. august 2003 - 22:13 #21
Jeg har fået det til at virke med jacoba forslag med radio.
Hvis der vælges OK - indsættes nyheden som normalt og man komme tilbage til forsiden.

Vælger man TILFØJ - indsættes nyheden og man sendes videre til en ny skærm med upload mulighed.
Efter man har valgt x-antal filer og klikker OK - uploades filer og man sendes tilbage til forsiden.

Så point til jakoba for med tak for hjælpen.

mvh
Dan
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