Avatar billede nuddel Nybegynder
15. september 2003 - 14:57 Der er 39 kommentarer og
1 løsning

tilføj til databsen alt efter $_REQUEST[]

Jeg har en række links til databaser, der bentter $_REQUEST til at finde ud af hvilke den skal tilføje til.
Men den vil kun tilføje data til forum1..?¿ Tror at den er gal omkring : forum".$_REQUEST[forum]." ??

Her er koden ihvert fald.

if($_POST[submit]){
    $addData = "INSERT INTO forum".$_REQUEST[forum]." (emneid, emne, text, afsender, afsenderid) VALUES ('".$emneid_num."','".$_POST['emne']."','".$_POST['text']."','".$_SESSION['username']."','".$_SESSION['id']."')";
    mysql_query($addData);
    header("location: forum-vis.php?id=$emneid_num&forum=$_REQUEST[forum]&forumname=$_REQUEST[forumname]&postemne=$_POST[emne]");
}
Avatar billede avminarm Juniormester
15. september 2003 - 15:16 #1
ja - prøv forum".$_REQUEST['forum']."
Avatar billede nuddel Nybegynder
15. september 2003 - 18:30 #2
virker ikk....
Avatar billede avminarm Juniormester
15. september 2003 - 20:17 #3
hvordan fanges  requesten ? post eller get
Avatar billede nuddel Nybegynder
15. september 2003 - 21:52 #4
fanges....? hva mener du?

forum ID'et kommer fra et link hvis det er der du mener. ?forum=1 osv.

$_REQUEST henter det fra "adresse linjen".
Avatar billede avminarm Juniormester
16. september 2003 - 08:54 #5
Hvis du ved det kommer fra adresselinien kan du ligeså godt bruge $_GET, men du kunne evt overveje at lave et hidden felt i din formular der indeholder forum id og så benytte denne $_POST var
Avatar billede nuddel Nybegynder
16. september 2003 - 16:35 #6
oki, vidste ikk at man kunne kalde dem frem med $_GET....hva' er forskellen?¿

Det kunne godt lyde som en mulighed med det hidden felt.
jeg prøver det lige imorgen, så høre du nærmere:D
Avatar billede nuddel Nybegynder
16. september 2003 - 21:33 #7
har prøvet lidt af hvert, men det er som om så snart jeg vil ha' en variabel efter "forum" virker den ikk. Det mærkelige er dog at når jeg bruger forum1 på listen, så virker den. Men kun på forum1.
Avatar billede avminarm Juniormester
16. september 2003 - 21:47 #8
prøv at udskrive dine $_GET værdier til skærmen og se om de indeholder en værdi
Avatar billede nuddel Nybegynder
17. september 2003 - 08:12 #9
det har jeg prøvet, og den udskriver det id som det valgt forum har....wierd...
Avatar billede avminarm Juniormester
17. september 2003 - 08:21 #10
måske kunne du prøve sådan her:

$forum = "forum".$_GET['forum'];

$addData = "INSERT INTO ".$forum." (emneid, emne, text, afsender, afsenderid) VALUES ('".$emneid_num."','".$_POST['emne']."','".$_POST['text']."','".$_SESSION['username']."','".$_SESSION['id']."')";
Avatar billede nuddel Nybegynder
17. september 2003 - 08:27 #11
mærkeligt....

når jeg echo'er $forum skriver den kun tallet på forumet, f.eks : 6 og ikk forum6
Avatar billede nuddel Nybegynder
17. september 2003 - 08:33 #12
nu har jeg fået den til at udskrive forum(x) men den tilføjer det stadig ikk' til den valgte database....

$forum = "forum".$_GET[forum];
Avatar billede avminarm Juniormester
17. september 2003 - 08:33 #13
underligt?? - det er ikke sådan at du har en var et sted der hedder $forum i forvejen - prøv at omdøbe $forum til $mitforum eller lign
Avatar billede avminarm Juniormester
17. september 2003 - 08:35 #14
lad mig lige se et dump af din database struktur
Avatar billede nuddel Nybegynder
17. september 2003 - 08:47 #15
det har jeg ikk.. den kommer her:


>>>>>>>>>>>>>>>>>>>>>

<?php
//-----Checker om du er logge ind
session_start();
    if (!isset($_SESSION['id'], $_SESSION['sessionnr']) || $_SESSION['sessionnr'] != session_id()) {
    header("Location: index.php");
}

    mysql_connect("","","");
    mysql_select_db("");

    mysql_query("SELECT id FROM forum".$_REQUEST[forum]."");
        $emneid_num = mysql_affected_rows()+ 1;


$forum = "forum".$_GET[forum];

if($_POST[submit]){
    $addData = "INSERT INTO ".$forum." (emneid, emne, text, afsender, afsenderid) VALUES ('".$emneid_num."','".$_POST['emne']."','".$_POST['text']."','".$_SESSION['username']."','".$_SESSION['id']."')";
    mysql_query($addData);
    header("location: forum-vis.php?id=$emneid_num&forum=$_REQUEST[forum]&forumname=$_REQUEST[forumname]&postemne=$_POST[emne]");
}


require('req/menu.req');
?>
<!-- MAIN -->
<table height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
        <td width="29">&nbsp;</td>
        <td width="17">&nbsp;</td>
        <td width="675" background="gfx/main-bg.gif" valign="top">
        <center>
        <br>   
       
        <form method="post" action="<?php $PHP_SELF?>">
   
        <table width="200" border="0">
        <tr>
            <td><font size="1"><b>titel</b></td>
            <td><input type="text" name="emne"></td>
        <tr>
            <td valign="top"><font size="1"><b>text</b></td>
            <td><textarea cols="30" rows="10" name="text"></textarea></td>
        </tr>
        <tr>
            <td colspan="2" align="right"><input type="submit" name="submit" value="wire it"></td>
        </tr>
        </table>
        </form>
        <?
       
        echo $forum;
   
        ?>
        </center>
        </td>
       
</tr>
</table>

        <td>&nbsp;</td>
</tr>
</table>

</body>
</html>
>>>>>>>>>>>>>>>>>>>>>

slut
Avatar billede avminarm Juniormester
17. september 2003 - 08:48 #16
nej - din database den kan du lave et dump af via PHPmyadmin
Avatar billede nuddel Nybegynder
17. september 2003 - 08:53 #17
ahhh...2sek
Avatar billede nuddel Nybegynder
17. september 2003 - 08:53 #18
CREATE TABLE forum1 (
  id int(2) NOT NULL auto_increment,
  emneid int(2) NOT NULL default '0',
  emne varchar(25) NOT NULL default '',
  text text NOT NULL,
  afsender varchar(20) NOT NULL default '',
  afsenderid int(2) NOT NULL default '0',
  UNIQUE KEY id (id)
) TYPE=MyISAM;

og der er så fra 1-17
Avatar billede avminarm Juniormester
17. september 2003 - 08:56 #19
og alle fora er oprettet? altså 1-17

er der et sted jeg kan se det køre "live"
Avatar billede nuddel Nybegynder
17. september 2003 - 09:00 #20
ja alle er oprettet.

www.d-box.dk

bare login med CMK // cmk
Avatar billede avminarm Juniormester
17. september 2003 - 09:13 #21
du mangler en action i din <form method="post" action=""> - der skal være en action ellers gætter browseren selv. - <form method="post" action="filnavn.php">

du kunne jo lave en hidden i din form med: <input type="hidden" name="forumid" value="<?php echo $_GET['forum']; ?>">
Avatar billede avminarm Juniormester
17. september 2003 - 09:19 #22
ellers meget pænt design ;o) dog hvis jeg må kritisere lidt ville jeg lava forum skriften (det hvor man vælger forum) lidt mørkere
Avatar billede nuddel Nybegynder
17. september 2003 - 09:22 #23
Og så bare skrive : $addData = "INSERT INTO ".$_POST[forumid]." (emneid...?¿

jeg har da en action ="<?php $PHP_SELF?>" og derefter går den til forum-vis.php
Avatar billede avminarm Juniormester
17. september 2003 - 09:25 #24
arrr det er fordi den skal være ="<?php $_SERVER['PHP_SELF'] ?>"
Avatar billede nuddel Nybegynder
17. september 2003 - 09:30 #25
det ændrede ikk' noget...desvær

men som du kan se hvis du har været inde på siden, så virker det som om at den opretter post'en, men skriver den ikk' ude på listen til venstre og add'er den ikk' til databasen. udover i database 1..
Avatar billede avminarm Juniormester
17. september 2003 - 09:54 #26
hov ja du kan så: $addData = "INSERT INTO ".$_POST[forumid]."

Du har altså ingen action på når formen udskrives - prøv "vis kilde" og prøv action med: ="<?php echo $_SERVER['PHP_SELF']; ?>"

Men du skriver i database1 - det er flere tabeller du har med at gøre ikke databaser
Avatar billede nuddel Nybegynder
17. september 2003 - 10:05 #27
har prøvet med ="<?php echo $_SERVER['PHP_SELF']; ?>

og har også prøvet : $addData = "INSERT INTO ".$_POST[forumid]."

der er bare ikk' noget der virker....PRESS!

og selvfølgelige kan du ikk' se noget i actionen, PHP er jo server scripting:D

Men hvis du kigger på koden : if($_POST[submit]), ser du også at den går til næste side når den har add'et data'N.
"header(location)"
Avatar billede avminarm Juniormester
17. september 2003 - 10:34 #28
ja - jeg ved godt php er server scripting, men action vil/skal altid figurere i formularen

se f.eks: http://wagners.users.whitehat.dk/eksperten/401316_nuddel.php

Din side: http://www.d-box.dk/forum-add.php?forum=2&forumname=illustrator viser flg: = ingen action!!!

        <form method="post" action="">
   
        <table width="200" border="0">
        <tr>
            <td><font size="1"><b>titel</b></td>
            <td><input type="text" name="emne"></td>
        <tr>
            <td valign="top"><font size="1"><b>text</b></td>
            <td><textarea cols="30" rows="10" name="text"></textarea></td>
        </tr>
        <tr>
            <td colspan="2" align="right"><input type="submit" name="submit" value="wire it"></td>
        </tr>
        </table>
        </form>
Avatar billede nuddel Nybegynder
17. september 2003 - 11:07 #29
ja det kan jeg egentligt godt se, nu du siger det. det er da mærkeligt... hmmm...

ved du hva' det evt kan skyldes?¿
Avatar billede nuddel Nybegynder
17. september 2003 - 11:08 #30
men det kan da vel ikk' være det der spiller ind mht til at vælge den rigtige database?
Avatar billede avminarm Juniormester
17. september 2003 - 11:26 #31
jo - fo når du laver det i samme fil PHP_SELF skal du benytte f.eks. et hidden felt - da du jo "reloader filen"
Avatar billede nuddel Nybegynder
17. september 2003 - 11:58 #32
jeg er helt blank, det gir simpelhen ingen menning.

tror dog ikk' det er pga. PHP_SELF, for har lige tjekket, og alle andre steder på siden skriver den heller ikk' sti'en og de virker.
Avatar billede nuddel Nybegynder
17. september 2003 - 12:03 #33
det mærkelige er dog at når jeg indsætter et hidden :
<input type="hidden" name="forumID" value="<?php echo $forum; ?>">

så skriver det forumet i valuen, men prøver jeg derimod at echo'e $_POST['formID'], udskriver den ikk' noget.
Avatar billede nuddel Nybegynder
17. september 2003 - 12:07 #34
never mind den sidste besked, det var pga. fejl tastning:D
Avatar billede nuddel Nybegynder
17. september 2003 - 12:12 #35
tror måske jeg har fundet ud af hvorfor. Hvis jeg glemmer alt med vars også og skriver forum17 direkte virker den heller ikk.

Må der ikk' være tal navnet på en database eller hvordan?
Avatar billede avminarm Juniormester
17. september 2003 - 13:13 #36
Det er ikke en database - det er en tabel du har med at gøre - hvordan forbinder du til DB (ikke dit navn og pass - bar forbindelsen til selve databasen = mysql_select_db("");)
Avatar billede nuddel Nybegynder
17. september 2003 - 13:44 #37
ja oki, tabel...

never mind. jeg har fået det til at virke. Det må være fordi man ikk' må bruge tal i tabel navnene. For nu har jeg lavet dem om, så de har tabel navn efter hva' de hedder på forum listen. og nu virker det....

mærkeligt...!
Avatar billede avminarm Juniormester
17. september 2003 - 14:10 #38
det lyder underligt? - jeg kom til at tænke på at du bare kunne  alle dine fora i en tabel - ved at indsætte et forumid, dvs alle tråde der hører til i forum med id=2 - findes ved at selecte alle der har forum id 2

CREATE TABLE forum (
  id int(2) NOT NULL auto_increment,
  forumid int(2) NOT NULL,
  emneid int(2) NOT NULL default '0',
  emne varchar(25) NOT NULL default '',
  text text NOT NULL,
  afsender varchar(20) NOT NULL default '',
  afsenderid int(2) NOT NULL default '0',
  UNIQUE KEY id (id)
) TYPE=MyISAM;
Avatar billede nuddel Nybegynder
17. september 2003 - 15:02 #39
har prøvet det du foreslå:D

men jeg har fået det til at virke nu.
thx for hjælpe eller. her er dine points fordi du har været så aktiv:-]
Avatar billede avminarm Juniormester
17. september 2003 - 15:30 #40
takker - det var så lidt ;o)
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