Avatar billede smeier Nybegynder
03. august 2004 - 12:24 Der er 14 kommentarer og
1 løsning

Update en db.

Hej eksperter.
Jeg er rimeligt nybegynder i php og har derfor lidt svært ved det.
Følgende kode virker ikke, får fejlen 'Undefined index on line 12'

Ved ikke om min fejl skyldes en lille fejl jeg har set mig blind på eller en grundlæggende forståelses fejl.
PLease hjælp mig. Har prøvet alt.
Avatar billede smeier Nybegynder
03. august 2004 - 12:24 #1
Koden er her.

<?php
include("../incl/db/db_password.inc");

?>
<?
$ID = $_GET['ID'];
mysql_connect("$hostname","$user","$password");
mysql_select_db("$db");
$thispage = $_SERVER["PHP_SELF"];   


if ($_POST['Submit'] == 'Submit') {
  // Format the data
  $Navn = $_POST['Navn'];
  $Adresse = $_POST['Adresse'];
  $by = $_POST['by'];

  // Update values
$query = "UPDATE $db
            SET Navn = '$Navn',
            Adresse = '$Adresse',
            by = '$by'
            WHERE ID = $ID";
  $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>';
  }
}
  else{



$query = "SELECT * FROM $db where ID=$ID";
$result = mysql_query($query);
while ($data = mysql_fetch_row($result)) echo "<br>



<form action=\"$thispage?ID=$ID\" method=\"post\">
<table width=200 border=1>
  <tr>
    <td>Navn:</td>
    <td><input type=\"text\" value=\"$data[0]\" name=\"Navn\" size=\"30\">
</td>
  </tr>
  <tr>
    <td>Adresse:</td>
    <td><input type=\"text\" value=\"$data[1]\" name=\"Adresse\" size=\"30\"></td>
  </tr>
  <tr>
    <td>By:</td>
    <td><input type=\"text\" value=\"$data[2]\" name=\"by\" size=\"30\"></td>
  </tr>

 

</table>
<input type=Submit value=Submit name=Submit>
</form>
";
}
?>
Avatar billede detox Nybegynder
03. august 2004 - 12:32 #2
Du skal nok bruge:

if (isset($_POST['Submit']) && $_POST['Submit'] == 'Submit') {

istedet for:

if ($_POST['Submit'] == 'Submit') {

Da indexet jo ikke er sat før formen bliver submitted, kommer denne notice.
Avatar billede detox Nybegynder
03. august 2004 - 12:35 #3
I øvrigt skal du passe på med at bruge 'by' som kolonnenavn i din database, da det er et reserveret ord i MySQL.
Avatar billede smeier Nybegynder
03. august 2004 - 12:42 #4
By er ændret til Sted og $_POST['submit'] er ændret og nu virker det. Fantastisk.

Har du tid til et spørgsmål mere?
Avatar billede detox Nybegynder
03. august 2004 - 12:46 #5
Jo jo.
Avatar billede smeier Nybegynder
03. august 2004 - 12:46 #6
Præcis som denne ret side skal man også kunne slette en række i db'en.
Mit problem ligger i at man kommer fra siden medlemmer.php til medlemmer_slet.php
den sidste side skal i princippet kun indeholde et Javascript Alert eller lignende der spørger om man vil slette, og enten sletter og går tilbage til medlemmer.php eller lader være at slette og stadig går tilbage til medlemmer.php

HAvde forstillet mig noget med

$tekst = "DELETE FROM $db WHERE ID = $ID";

echo "<SCRIPT>alert('$tekst');</SCRIPT>";
exit;

Men det holder vist ikke helt....
Avatar billede detox Nybegynder
03. august 2004 - 12:52 #7
Så skal du nok hellere bruge confirm()
Avatar billede smeier Nybegynder
03. august 2004 - 12:56 #8
Den udfører ikke rigtigt delete'n den spørger mig jo blot om DELETE FROM $db WHERE ID = $ID. HVordan udfører jeg det og sender den tilbage til medlemmer.php
Avatar billede detox Nybegynder
03. august 2004 - 13:01 #9
javascript er ikke min stærke side, men confirm returnerer vel true eller false.
Du må nok over i javascript kategorien, hvis du vil have bedre hjælp til det.
Avatar billede detox Nybegynder
03. august 2004 - 13:08 #10
Hvad jeg lige kan se må det være noget i den her stil:

echo "<SCRIPT>
var name=confirm('$tekst')
if (name==true)
{
document.write('You pressed the OK button!')
}
else
{
document.write('You pressed the Cancel button!')
}
</SCRIPT>";

hvor du istedet for document.write sender brugeren til en side (med $db og $ID i urlen), der sletter rækken og returnerer til medlemmer.php eller returnerer med det samme ved 'Cancel'.
Avatar billede detox Nybegynder
03. august 2004 - 13:13 #11
Sådan måske:

echo "<SCRIPT>
if (confirm('$tekst'))
{
window.location='delete.php?db=$db&ID=$ID'
}
else
{
window.location='medlemmer.php'
}
</SCRIPT>";
exit;
Avatar billede detox Nybegynder
03. august 2004 - 13:39 #12
delete.php kunne så se sådan ud:

<?php
if (isset($_GET['ID'])) {
    include("../incl/db/db_password.inc");
        mysql_connect("$hostname","$user","$password");
    mysql_select_db($_GET['db']) or die(mysql_error());
    if (mysql_query("delete from $_GET[db] where id='$_GET[ID]'")) {
        header('Location:medlemmer.php');
    } else {
            echo "Der blev ikke slettet noget";
        }
}
?>
Avatar billede detox Nybegynder
03. august 2004 - 13:40 #13
Men må jeg foreslå at du skelner mellem databasenavne og tabelnavne ved at give dem forskellige navne, hvilket du øjensynligt ikke har gjort her.
Avatar billede smeier Nybegynder
03. august 2004 - 14:09 #14
Jeg fik sku lortet til at virke... Smider du et svar så siger jeg mange tak for hjælpen detox...
Avatar billede detox Nybegynder
03. august 2004 - 14:26 #15
Velbekommen så
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