23. august 2003 - 18:39Der 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.
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; ?>
Ø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 }
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.
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.
<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 " "; ?> <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; }
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 ?
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 }
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;
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.
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.
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.
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.
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
Synes godt om
Ny brugerNybegynder
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.