Avatar billede human Nybegynder
23. januar 2003 - 02:16 Der er 10 kommentarer og
1 løsning

Edit i tabel

Hejsa!

Jeg sidder og skal lave en lille ting så jeg kan rette i en tabel.

Det skal være sådan, at hvis der ikke står noget i tabellen skal der selvfølgelig bare være et blankt felt til at skrive i, men når man så trykker på edit fx, så skal feltet komme op med den tekst i man indtastede før, så man kan redigere i den.

Hvor gør jeg lige det? Er det nogen der vil prøve at komme med et eksempel..?
Avatar billede human Nybegynder
23. januar 2003 - 02:18 #1
Hvor gør jeg lige det? =
Hvordan gør jeg lige det? :o)
Avatar billede corneliues Nybegynder
23. januar 2003 - 02:59 #2
Kan du ikke lige uddybe det lidt
skal det være sådan at der kommer et separat vindue frem ?
Avatar billede miraculix Nybegynder
23. januar 2003 - 18:26 #3
Hvis vi antager at du vil lave en webapplikation og bruge PHP og du har følgende tabel:

create table my_table(
    id int(20) not null primary key auto_increment,
    name varchar(50)
);

Så kan disse 3 filer gøre det jeg tror du beder om (Du skal lige tilrette brugernavn, password og databasenavn):

list.php:
<?
    $conn = mysql_connect("localhost", "brugernavn", "passwd")
          or die("Could not connect!<br>");

      mysql_select_db("databasenavn", $conn);
     
      $sql = "select id, name from my_table order by name asc";
   
      $res = mysql_query($sql);
     
      while( list($id, $name) = mysql_fetch_row($res) ) {
?>
        <li><?= $name ?> [ <a href="edit.php?p_id=<?= $id ?>">ret</a> ] </li>
<? 
      }
?>
<BR>
    [ <a href="edit.php?p_id=0">Tilføj</a> ]
<BR>


edit.php:
<?
    $navn = "";
   
    if ($p_id > 0) {
      $p_id = addslashes($p_id);
    $conn = mysql_connect("localhost", "brugernavn", "passwd")
              or die("Could not connect!<br>");
       
      mysql_select_db("database", $conn);
     
      $sql = "select id, name from my_table where id = '".$p_id."'";
   
     
      $res = mysql_query($sql);
     
      list($id, $name) = mysql_fetch_row($res);
    } else {
        $id = 0;
    }
?>
<form action="submit.php" method="post">
    <input type=hidden name="p_id" value="<?= $id ?>">
    Navn: <input type=tekst name="p_name" value="<?= $name ?>">
    <input type="submit" value="Gem">
</form>

submit.php:
<?
    $p_id = addslashes($p_id);
    $p_name = addslashes($p_name);
   
    $conn = mysql_connect("localhost", "brugernavn", "passwd")
          or die("Could not connect!<br>");
   
    mysql_select_db("database", $conn);
   
    if ($p_id == 0) {
        $sql = "insert into my_table(name) values ('".$p_name."')";
    } else {
        $sql = "update my_table set name = '".$p_name."' where id = '".$p_id."'";
    }
   
    $res = mysql_query($sql);

    header("location: list.php\n\n");
?>

Du skal starte med at køre list.php...
Avatar billede human Nybegynder
25. januar 2003 - 17:28 #4
<?
    $navn = "";
   
    if ($p_id > 0) {
      $p_id = addslashes($p_id);
    $conn = mysql_connect("localhost", "brugernavn", "passwd")
              or die("Could not connect!<br>");
       
      mysql_select_db("database", $conn);
     
      $sql = "select id, name from my_table where id = '".$p_id."'";
   
     
      $res = mysql_query($sql);
     
      list($id, $name) = mysql_fetch_row($res);
    } else {
        $id = 0;
    }
?>


Hvad skal jeg skirve ved $navn?
Avatar billede miraculix Nybegynder
26. januar 2003 - 12:28 #5
Undskyld!! Der skulle have stået $name="".

Jeg har siddet og været inkonsekvent da jeg skrev det og rettet til senere. Den sætning sørger bare for at $name er initialiseret til ingenting, så du skal ikke skrive om på den.

Har du prøvet at bruge siderne?
Avatar billede human Nybegynder
26. januar 2003 - 14:58 #6
Ok.. Men jeg får denne fejl :(

http://www.ezillians.dk/edit/list.php
Avatar billede miraculix Nybegynder
26. januar 2003 - 15:12 #7
Hmm. Det betyder som regel at der er fejl i den sql du har lagt ind. Det kan f.eks. være et forkert felt-navn.

Er det eksemplet du kører eller har du rettet det til dit eget formål?

I sidste fald er du nok nødt til at poste lidt kode, hvis jeg skal kunne sige hvad der går galt.

Jeg har testet og kørt scriptene på min egen server.
Avatar billede human Nybegynder
26. januar 2003 - 15:19 #8
<?
    $conn = mysql_connect("localhost", "ezillians.dk", "x")
          or die("Could not connect!<br>");

      mysql_select_db("edit", $conn);
     
      $sql = "select id, name from my_table order by name asc";
   
      $res = mysql_query($sql);
     
      while( list($id, $name) = mysql_fetch_row($res) ) {
?>
        <li><?= $name ?> [ <a href="edit.php?p_id=<?= $id ?>">ret</a> ] </li>
<? 
      }
?>
<BR>
    [ <a href="edit.php?p_id=0">Tilføj</a> ]
<BR>

Har overhovedet ikke rettet i det, har endda oprettet tabellen så den hed my_table.
Avatar billede miraculix Nybegynder
26. januar 2003 - 15:34 #9
Ja, det ser meget identisk ud.

Mystisk...

Prøv evt. udvide mysql_select_db og mysql_query, med en "or die.. "

Jeg prøver imellemtiden at paste din kode ind i stedet for min, så ser jeg lige om jeg kan gennemskue det på den måde...
Avatar billede miraculix Nybegynder
26. januar 2003 - 15:37 #10
Den virker hos mig.

Måske kan det være at brugeren "ezillians.dk" ikke har adgang til databasen "edit" ?

Hedder databasen ikke f.eks. "ezillians.dk"? (i mysql_select_db(..) )

Det er i hvertfald en udbredt navngivningsform hos internet udbydere
Avatar billede human Nybegynder
26. januar 2003 - 16:01 #11
Yesh der. Så virker det! :o)

Jeg siger mange tak for hjælpen.
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
Computerworld tilbyder specialiserede kurser i database-management

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