Avatar billede fritter25 Nybegynder
16. august 2004 - 14:21 Der er 29 kommentarer og
1 løsning

Sende brugeren til en ny side.

Hejsa.

Jeg har en side hvor man kan redigere i noget af den tekst som man har skrevet. Desværre er det sådan, at når brugeren klikker på "Submit", så skal den overskrive data i db'en, og samtidig sende brugeren til en ny side.

Jeg har "lånt" koden hist og her.

<html>

<head>

<title>Ny side 2</title>
</head>

<body>
<?
  $ID = $_GET['ID'];
    $db = mysql_connect("127.0.0.1", "root", "");
    mysql_select_db("mathiesen",$db);
$thispage = $_SERVER["PHP_SELF"]; 

if (isset($_POST['Submit']) && $_POST['Submit'] == 'Submit') {
  // Format the data
      $dato_array = getdate();
    $dato = $dato_array["mday"]. "/".
    $dato_array["mon"]."-". $dato_array["year"];
    $tiden = $_POST['tiden'];
    $afsluttet = $_POST['afsluttet'];
    $arbejdssdl = $_POST['arbejdssdl'];

  // Update values
$query = "UPDATE $db
            SET Navn = '$dato',
            Adresse = '$tiden',
            by = '$afsluttet'
            WHERE ID = $arbejdssdl";
  $result = mysql_query($query);
  if (mysql_affected_rows() == 1) {
    $success_msg = '<P>Your comment has been updated.</P>';
  } else {
    error_log(mysql_error());
    $success_msg = '<P>Something went wrong.</P>';
  }
}

$foresp =  mysql_query("Select * FROM logfil");
echo mysql_num_rows($foresp)." Resultat(er) fundet<BR><BR>";
while($data = mysql_fetch_array($foresp)){

echo "<form action=\'$thispage?ID=$ID\' method=\'post\'>";

echo "<table border='0' width='300'>";

echo    "<tr>";
echo        "<td>Dato</td>";
echo        "<td><input type='text' name='data0' value='$data[0]'></td>";
echo        "<td rowspan='4' width='62'><BR></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Navn2</td>";
echo        "<td><input type='text' name='data1' value='$data[1]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Navn3</td>";
echo        "<td><input type='text' name='data2' value='$data[2]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Navn4</td>";
echo        "<td><input type='text' name='data3' value='$data[3]'></td>";
echo    "</tr>";

echo "<BR>";
echo "<BR>";

echo "</table>";
echo "<input type=Submit value=Submit name=Submit>";
echo "</form>";
}
?>
</body>

</html>
Avatar billede detox Nybegynder
16. august 2004 - 14:25 #1
Jeg tror i hvert fald du skal ændre feltnavnet 'by', da det er et reserveret ord i MySQL.
Avatar billede detox Nybegynder
16. august 2004 - 14:37 #2
Og så skal navnene i din form rettes så de passer med de navne du bruger i php-delen.
Avatar billede fritter25 Nybegynder
16. august 2004 - 14:40 #3
Jeg er lidt i tvivl om hvad denne funtion gør: WHERE ID = $arbejdssdl";

Hvad er og gør ID??
Avatar billede detox Nybegynder
16. august 2004 - 14:49 #4
Ja, det kan jeg godt forstå. $ID bliver slet ikke brugt i koden her. ID henviser derimod til et felt i din database. $arbejdssdl skal vel så indeholde ID fra din form, som kunne ligges i et hidden felt. Men du er nødt til at rette navnene i din form, ellers er det rent gætværk. Og så brug '$data[feltnavn]' istedet for '$data[0]', så er det meget nemmere at finde rundt i.
Avatar billede detox Nybegynder
16. august 2004 - 14:50 #5
Hvilke felter indeholder din database tabel?
Avatar billede detox Nybegynder
16. august 2004 - 14:51 #6
Og hedder den: 'logfil'?
Avatar billede fritter25 Nybegynder
16. august 2004 - 15:14 #7
Min tabel hedder logfil
Jeg har disse felter:

dato 
tiden   
afsluttet
samlet
arbejdssdl
rekvi
lokat 
probl   
radio  set('Regning', 'Garanti')   
klaret
Avatar billede fritter25 Nybegynder
16. august 2004 - 15:15 #8
Men jeg skal have et ekstra felt i min tabel, som ID så skal henvise til. Skal der i det så stå en URL?
Avatar billede detox Nybegynder
16. august 2004 - 15:20 #9
ID plejer at være et unikt nummer der identificerer den enkelte række i tabellen entydigt. Man laver det gerne med autonummerering, så databasen selv indsætter et nyt nummer til hver række.
Avatar billede fritter25 Nybegynder
16. august 2004 - 15:23 #10
Hmmm. Den er jeg ikke lige med på. Nu er det jo ikke nødvendigt at jeg skal bruge denne kode. Hvis du har en bedre forslag, som måske er mere simpelt, er jeg villig til at se på det.
Avatar billede detox Nybegynder
16. august 2004 - 15:27 #11
Du skal bruge et felt i databasen som ikke kan være det samme i flere rækker (fx: ID) osse kaldet en primærnøgle.
Jeg ved ikke om arbejdssdl er et sådan felt? Hvis du ikke har det må du tilføje et felt.
Avatar billede fritter25 Nybegynder
16. august 2004 - 15:47 #12
arbejdssdl, er aldrig det samme. Det vil altid være forskelligt. Jeg tror sgu jeg kommer til at droppe ID funktionen. Den gør åbenbart mere skade end gavn. Det kan jeg vel godt, og så stadig bruge UPDATE og sende brugeren til en ny side, når han har klikket på Submit.
Avatar billede detox Nybegynder
16. august 2004 - 16:04 #13
Ja, hvis bare arbejdssdl er forskelligt kan du bare bruge det.
Er det alle de andre felter du vil kunne rette, eller bare nogle udvalgte?
Avatar billede fritter25 Nybegynder
16. august 2004 - 16:07 #14
Det er faktisk alle felterne der skal kunne rettes!
Avatar billede fritter25 Nybegynder
16. august 2004 - 16:16 #15
Det er jo nok denne her som skal ændres en smule. Du skal ikke tage dig af, at jeg endnu ikke har alle de andre felter fra min DB med endnu, da dette stadig kun er på "foster stadiet"

// Update values
$query = "UPDATE $db
            SET Dato = '$dato',
            tiden = '$tiden',
            afsluttet = '$afsluttet'
            WHERE ID = $arbejdssdl";
  $result = mysql_query($query);
Avatar billede fritter25 Nybegynder
16. august 2004 - 16:16 #16
Eftersom at alle 4 felter skal kunne opdateres, så skal de vel også hedde noget med ID
Avatar billede detox Nybegynder
16. august 2004 - 16:19 #17
Nej du har jo ikke et felt der hedder ID. Den skal være i den her stil:

$query = "UPDATE logfil
            SET dato = '$dato',
            tiden = '$tiden',
            afsluttet = '$afsluttet'
            WHERE arbejdssdl = $arbejdssdl";
$result = mysql_query($query) or die(mysql_error());
Avatar billede fritter25 Nybegynder
16. august 2004 - 16:27 #18
Jeg bliver nødt til at logge af for nu, men vi kan lige se på det imorgen!
Avatar billede fritter25 Nybegynder
17. august 2004 - 09:54 #19
Så er jeg tilbage igen idag. Skal vi lige kaste et blik på det igen.
Avatar billede fritter25 Nybegynder
17. august 2004 - 10:16 #20
Nu har jeg prøvet at indsætte den som du sagde, samt resten af koden.

<html>

<head>

<title>Ny side 2</title>
</head>

<body>
<?

    $db = mysql_connect("127.0.0.1", "root", "");
    mysql_select_db("mathiesen",$db);
$thispage = $_SERVER["PHP_SELF"]; 

if (isset($_POST['Submit']) && $_POST['Submit'] == 'Submit') {
  // Format the data
      $dato_array = getdate();
    $dato = $dato_array["mday"]. "/".
    $dato_array["mon"]."-". $dato_array["year"];
    $tiden = $_POST['tiden'];
    $afsluttet = $_POST['afsluttet'];
    $arbejdssdl = $_POST['arbejdssdl'];

  // Update values
$query = "UPDATE logfil
            SET dato = '$dato',
            tiden = '$tiden',
            afsluttet = '$afsluttet'
            WHERE arbejdssdl = $arbejdssdl";
$result = mysql_query($query) or die(mysql_error());

}

$foresp =  mysql_query("Select * FROM logfil");
echo mysql_num_rows($foresp)." Resultat(er) fundet<BR><BR>";
while($data = mysql_fetch_array($foresp)){

echo "<form action=\'$thispage?ID=$ID\' method=\'post\'>";

echo "<table border='0' width='300'>";

echo    "<tr>";
echo        "<td>Dato</td>";
echo        "<td><input type='text' name='data0' value='$data[dato]'></td>";
echo        "<td rowspan='4' width='62'><BR></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Tiden</td>";
echo        "<td><input type='text' name='data1' value='$data[tiden]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Afsluttet</td>";
echo        "<td><input type='text' name='data2' value='$data[afsluttet]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Arbejdssdl</td>";
echo        "<td><input type='text' name='data3' value='$data[arbejdssdl]'></td>";
echo    "</tr>";

echo "<BR>";
echo "<BR>";

echo "</table>";
echo "<input type=Submit value=Submit name=Submit>";
echo "</form>";
}
?>
</body>

</html>


Desværre er jeg ikke kommet et skridt længere.
Avatar billede detox Nybegynder
17. august 2004 - 11:25 #21
Jamen du skal rette navnene i din form. Det nytter jo ikke du bruger navne som: 'data0', 'data1', osv. og du så prøver at modtage dem med: $_POST['tiden'], $_POST['afsluttet'].
Avatar billede fritter25 Nybegynder
18. august 2004 - 10:31 #22
Ahhh. Jeg prøver lige
Avatar billede fritter25 Nybegynder
18. august 2004 - 10:37 #23
Hmmm. Det virker stadig ikke. Nu har jeg rettet den til, så den ser ud som følgende:

<?

    $db = mysql_connect("127.0.0.1", "root", "");
    mysql_select_db("mathiesen",$db);
$thispage = $_SERVER["PHP_SELF"]; 

if (isset($_POST['Submit']) && $_POST['Submit'] == 'Submit') {
  // Format the data
      $dato_array = getdate();
    $dato = $dato_array["mday"]. "/".
    $dato_array["mon"]."-". $dato_array["year"];
    $tiden = $_POST['tiden'];
    $afsluttet = $_POST['afsluttet'];
    $arbejdssdl = $_POST['arbejdssdl'];

  // Update values
$query = "UPDATE logfil
            SET dato = '$dato',
            tiden = '$tiden',
            afsluttet = '$afsluttet'
            WHERE arbejdssdl = $arbejdssdl";
$result = mysql_query($query) or die(mysql_error());

}

$foresp =  mysql_query("Select * FROM logfil");
echo mysql_num_rows($foresp)." Resultat(er) fundet<BR><BR>";
while($data = mysql_fetch_array($foresp)){

echo "<form action=\'$thispage?ID=$ID\' method=\'post\'>";

echo "<table border='0' width='300'>";

echo    "<tr>";
echo        "<td>Dato</td>";
echo        "<td><input type='text' name='dato' value='$data[dato]'></td>";
echo        "<td rowspan='4' width='62'><BR></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Tiden</td>";
echo        "<td><input type='text' name='tiden' value='$data[tiden]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Afsluttet</td>";
echo        "<td><input type='text' name='afsluttet' value='$data[afsluttet]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Arbejdsseddel</td>";
echo        "<td><input type='text' name='arbejdssdl' value='$data[arbejdssdl]'></td>";
echo    "</tr>";

echo "<BR>";
echo "<BR>";

echo "</table>";
echo "<input type=Submit value=Submit name=Submit>";
echo "</form>";
}
?>

Der er lige en enkelt linie, som jeg lige er lidt i tvivl om. Vi blev tidligere enige om, at jeg ikke havde behov for "ID" fuktionen. Men hvad så med denne linie?

echo "<form action=\'$thispage?ID=$ID\' method=\'post\'>";

Ydermere skal det lige nævnes, at jeg sagtens kan hente det ind, som står i min db.
Avatar billede detox Nybegynder
18. august 2004 - 11:26 #24
ID har du ikke brug for her. Jeg har prøvet at rette den lidt:

<?
$db = mysql_connect("127.0.0.1", "root", "");
mysql_select_db("mathiesen");
$thispage = $_SERVER["PHP_SELF"]; 

if (isset($_POST['Submit']) && $_POST['Submit'] == 'Submit') {
  // Format the data
    $dato = date('d/m-Y');
    $tiden = $_POST['tiden'];
    $afsluttet = $_POST['afsluttet'];
    $arbejdssdl = $_POST['arbejdssdl'];

  // Update values
    $query = "UPDATE logfil
            SET dato = '$dato',
            tiden = '$tiden',
            afsluttet = '$afsluttet'
            WHERE arbejdssdl = '$arbejdssdl'";
    mysql_query($query) or die(mysql_error());
}

$foresp =  mysql_query("Select * FROM logfil");
echo mysql_num_rows($foresp)." Resultat(er) fundet<BR><BR>";
while($data = mysql_fetch_array($foresp)){

echo "<form action='$thispage' method='post'>";
echo "<table border='0' width='300'>";
echo    "<tr>";
echo        "<td>Dato</td>";
echo        "<td><input type='text' name='dato' value='$data[dato]'></td>";
echo        "<td rowspan='4' width='62'><BR></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Tiden</td>";
echo        "<td><input type='text' name='tiden' value='$data[tiden]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Afsluttet</td>";
echo        "<td><input type='text' name='afsluttet' value='$data[afsluttet]'></td>";
echo    "</tr>";
echo    "<tr>";
echo        "<td>Arbejdsseddel</td>";
echo        "<td><input type='text' name='arbejdssdl' value='$data[arbejdssdl]'></td>";
echo    "</tr>";
echo "<BR>";
echo "<BR>";
echo "</table>";
echo "<input type='Submit' value='Submit' name='Submit'>";
echo "</form>";
}
?>
Avatar billede detox Nybegynder
18. august 2004 - 11:40 #25
Lidt pænere opstilling:

<?
$db = mysql_connect("127.0.0.1", "root", "");
mysql_select_db("mathiesen");
$thispage = $_SERVER["PHP_SELF"]; 

if (isset($_POST['Submit']) && $_POST['Submit'] == 'Submit') {
  // Format the data
    $dato = date('d/m-Y');
    $tiden = $_POST['tiden'];
    $afsluttet = $_POST['afsluttet'];
    $arbejdssdl = $_POST['arbejdssdl'];

  // Update values
    $query = "UPDATE logfil
            SET dato = '$dato',
            tiden = '$tiden',
            afsluttet = '$afsluttet'
            WHERE arbejdssdl = '$arbejdssdl'";
    mysql_query($query) or die(mysql_error());
}
$foresp =  mysql_query("Select * FROM logfil");
echo mysql_num_rows($foresp)." Resultat(er) fundet<br /><br/>";
while($data = mysql_fetch_array($foresp)){
    echo <<<EOFORM
    <form action='$thispage' method='post'>
    <table border='0' width='300'>
      <tr>
        <td>Dato</td>
        <td><input type='text' name='dato' value='$data[dato]'></td>
        <td rowspan='4' width='62'><BR></td>
      </tr>
      <tr>
        <td>Tiden</td>
        <td><input type='text' name='tiden' value='$data[tiden]'></td>
      </tr>
      <tr>
        <td>Afsluttet</td>
        <td><input type='text' name='afsluttet' value='$data[afsluttet]'></td>
      </tr>
      <tr>
        <td>Arbejdsseddel</td>
        <td><input type='text' name='arbejdssdl' value='$data[arbejdssdl]'></td>
      </tr>
    </table>
    <p><input type='Submit' value='Submit' name='Submit'></p>
    </form>
    EOFORM;
}
?>
Avatar billede fritter25 Nybegynder
18. august 2004 - 12:02 #26
Lige nu sker der det, at jeg ikke får vist en fejl URL.
Avatar billede detox Nybegynder
18. august 2004 - 12:33 #27
Nu er jeg ikke med.
Avatar billede fritter25 Nybegynder
19. august 2004 - 11:15 #28
Det kan jeg godt forstå. Har ikke beskrevet det så tydeligt. Før vi gik igang blev, når jeg trykkede på "submit" knappen, blev jeg sendt til en ny side. Den klassiske fejl side i explorer. Samtidig blev der ikke opdateret noget.
Lige nu, svarer det til at klikke på opdater knappen i explorer. Der bliver ikke opdateret noget i min db, men jeg ryger ikke til en fejlside
Avatar billede detox Nybegynder
19. august 2004 - 11:43 #29
Du får ingen fejlmelding og du er sikker på den angivne arbejdssdl findes i databasen?
Avatar billede fritter25 Nybegynder
25. oktober 2005 - 16:06 #30
Lukker
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