Avatar billede kappel Nybegynder
22. april 2005 - 14:35 Der er 22 kommentarer og
1 løsning

Opdatere mysql tabel

Hej

Jeg har lavet dette foreløbigt:
http://super6.kappels.net/spiller/test.php

Mit spørgsmål er, hvordan kan jeg gøre sådan at når jeg trykker hent, så hentes data for valgte spiller?

Bagefter er meningen at jeg skal kunde ændre adressen f.eks. og trykke opdater hvorefter databasen opdateres.
Nogle forslag?

Jeg har følgende kode: (test.php og opdater.php)

-- --  test.php  -- --

<?php session_start();?>

<html>
<head>
<title>Opdater spillerdata</title>

<?php
require 'include.php'; // Forbindelse til database
$res = mysql_query("select id, navn_id from spillere");
$opt = "<select name='id' size='1'>";
while ($row = mysql_fetch_row($res)) {
    $opt .= "<option value='".$row[0]."'>".$row[1]." ".$row[2]."</option>";
}
$opt .= "</select>";
?>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body {
    background-color: #CCCCCC;
}
-->
</style><h4 align="center">Opdater data for spiller</h4>

<form method="post" action="http://super6.kappels.net/spiller/opdater.php">
<table border="0">
      <tr>
        <td width="10"></td>
        <td width="115"><b>Personoplysniger</b></td>
        <td width="210"><div align="center">Nuv&aelig;rende</div></td>
        <td width="210"><div align="center">Opdater til: </div></td>
      </tr>
      <tr>
        <td>- </td>
        <td>Navn:</td>
        <td><? echo $opt; ?> <input name="opdater" type="submit" value="Hent data"></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>-</td>
        <td>Efternavn:</td>
        <td><?php echo $data['efternavn'];?></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>- </td>
        <td>Adresse:</td>
        <td><?php echo $data['adresse'];?></td>
        <td><input name="adresse" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Postnr. og by: </td>
        <td><?php echo $data['postnr'];?></td>
        <td><input name="postnr" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Tlf.</td>
        <td><?php echo $data['tlf'];?></td>
        <td><input name="tlf" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Mobil:</td>
        <td><?php echo $data['mobil'];?></td>
        <td><input name="mobil" type="text" size="40"></td>
      </tr>
      <tr>
        <td>- </td>
        <td>Email:</td>
        <td><a href="mailto:<?php echo $data['email'];?>"><?php echo $data['email'];?></a></td>
        <td><input name="email" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Fødselsår:</td>
        <td><?php echo $data['fodselsdato'];?></td>
        <td>-</td>
      </tr>
      <tr>
        <td>-</td>
        <td>Kælenavn:</td>
        <td><?php echo $data['kaldenavn'];?></td>
        <td><input name="kaldenavn" type="text" size="40"></td>
      </tr>
    </table>
      <br>
      <table border="0">
        <tr>
          <td width="10"></td>
          <td width="115"><b>Facts</b></td>
          <td width="74">Nuv&aelig;rende:</td>
          <td width="86">Opdater til: </td>
        </tr>
        <tr>
          <td>-</td>
          <td>Spiller nr.:</td>
          <td><b><?php echo $data['spiller_nr'];?></b></td>
        <td><input name="spiller_nr" type="text" size="5"></td>        </tr>
        <tr>
          <td>-</td>
          <td>Position:</td>
          <td><?php echo $data['position'];?></td>
        <td><input name="position" type="text" size="5"></td>        </tr>
        <tr>
          <td>-</td>
          <td>Højde:</td>
          <td><?php echo $data['hojde'];?> cm</td>
          <td> <input name="hojde" type="text" size="5">          cm</td>
        </tr>
        <tr>
          <td>-</td>
          <td>Vægt:</td>
          <td><?php echo $data['vagt'];?> kg</td>
          <td> <input name="vagt" type="text" size="5">          kg</td>
        </tr>
</table>
<br>
<input name="send" type="submit" value="Opdater">
</form>
</body>
</html>


-- --  opdater.php  -- --
<?php
ob_start();
?>

<?php
    require('tjeklogin.php');
?>
<?php 
include('include.php');
mysql_select_db($database, $db);

$SET_ARRAY = array();

if ( !empty( $_POST['adresse'] ) )      $SET_ARRAY[] = 'adresse    = '.$_POST['adresse'];
if ( !empty( $_POST['postnr'] ) )      $SET_ARRAY[] = 'postnr    = '.$_POST['postnr'];
if ( !empty( $_POST['tlf'] ) )          $SET_ARRAY[] = 'tlf        = '.$_POST['tlf'];
if ( !empty( $_POST['mobil'] ) )        $SET_ARRAY[] = 'mobil      = '.$_POST['mobil'];
if ( !empty( $_POST['email'] ) )        $SET_ARRAY[] = 'email      = '.$_POST['email'];
if ( !empty( $_POST['kaldenavn'] ) )    $SET_ARRAY[] = 'kaldenavn  = '.$_POST['kaldenavn'];
if ( !empty( $_POST['spiller_nr'] ) )  $SET_ARRAY[] = 'spiller_nr = '.$_POST['spiller_nr'];
if ( !empty( $_POST['position'] ) )    $SET_ARRAY[] = 'position  = '.$_POST['position'];
if ( !empty( $_POST['hojde'] ) )        $SET_ARRAY[] = 'hojde      = '.$_POST['hojde'];
if ( !empty( $_POST['vagt'] ) )        $SET_ARRAY[] = 'vagt      = '.$_POST['vagt'];

if ( count($SET_ARRAY) != 0 ) { // Is there something to update?
    $sql_set = implode(', ', $SET_ARRAY);

    $sql = "
        UPDATE spillere
        SET $sql_set
        WHERE id = '{$_POST['id']}'";

mysql_query($sql) or die( mysql_error() );

} else { // Nothing to update!
    echo 'ERROR : Nothing to update!';
}
header("Location: add.php?status=done&id=".$_POST['id']);
?>
<?php
ob_end_flush();
?>


PS. test.php hedder oprindelig add.php (pga. kodeord, men da der er kodeord har kopieret det over i test.php)

Mvh. Kappel
Avatar billede busschou Praktikant
22. april 2005 - 14:42 #1
Du har jo denne her
<input name="opdater" type="submit" value="Hent data">
Øverst på din side kan du tjekke om den er submittet ved
if($_POST['opdater'] != ""){
Select * From din tabel where id = $_POST['id']
}
--
Så hvis der er postet så henter du den id som select/dropdown refererer til
Avatar billede busschou Praktikant
22. april 2005 - 14:44 #2
Jeg ville nok lade formen gå til siden selv...
For som det er nu går den til opdater
Evt ville jeg lave to forms...altså skille dem ad
Så der er en til opdatere og en til at hente med
For den som henter skal blot referere til siden selv så man kan se infoen på den enkelte
Avatar billede kappel Nybegynder
22. april 2005 - 14:44 #3
vil du ikke sætte det ind i test.php, fordi det er nu jeg synes det er mega svært.
Avatar billede kappel Nybegynder
22. april 2005 - 14:47 #4
eller forklare lidt (meget :)) mere, vil jo gerne lære det her crap
Avatar billede busschou Praktikant
22. april 2005 - 14:54 #5
jeg har ikke lige vildt tid nu desværre andet end følgende
Lav denne her i toppen af siden (med mysql_query og fecth osv)
---
if($_POST['opdater'] != ""){
Select * From din tabel where id = $_POST['id']
}
---
Tag din $opt ud af formen og lan en anden form til den drop down
Den anden form skal have action="samme_side.php"
Når du så klikker på hent knappen vil den opfriske siden.. if sætningen vil finde personen..
Du skal så i hvert felt hive de enkelte data ud af det du har hentet i din mysql_query
Men det er vist allerede det du prøver med din $data variabel ikke? ;o)
Avatar billede kappel Nybegynder
22. april 2005 - 16:09 #6
andre der kan hjælpe mig lidt på vej?
Avatar billede kappel Nybegynder
22. april 2005 - 19:47 #7
nu er jeg næsten færig - weeh

har dog et problem, da det kun er nogle af felterne jeg kan opdatere, f.eks kan jeg ikke opdatere email, det er sikkert fordi der er @ i, men hvordan kommer jeg udover det?

Desuden vil den heller ikke opdatere en adresse, den skriver:

You have an error in your SQL syntax. near '11 B, 4. th. WHERE id = '3'' at line 2

Mvh. Kappel
Avatar billede busschou Praktikant
22. april 2005 - 19:49 #8
prøv poste din kode og også poste hvordan hele din sql ser ud... altså så vi kan se de tal du putter i den mm :o)
Avatar billede busschou Praktikant
22. april 2005 - 19:53 #9
din syntax fejl kunne tyde på du ikke har ' omkring teksten?
Avatar billede kappel Nybegynder
22. april 2005 - 19:53 #10
Hvordan skal jeg vise sql?

Her er lidt kode:
-----------------  add.php --------------------

<?php session_start();?>
<?php
    require('tjeklogin.php');
?>
<html>
<head>
<title>Opdater spillerdata</title>
</head>

<body>
<?php
include('include.php');
$res = mysql_query("select * from spillere where id='".$_POST['id']."'");
$row = mysql_fetch_assoc($res);
if($_POST['status'] == 'done') echo "Databasen er opdateret for spilleren: <h2><b>".$row['navn']." ".$row[efternavn]."</b></h2>";
$out = "<table><tr>";
        $out .= "<th>Navn</th><th>Adresse</th><th>Post nr.</th><th>Telefon</th><th>Mobil</th><th>Email</th><th>Kælenavn</th><th>Spiller nr</th><th>Position</th><th>højde</th><th>Vægt</th></tr><tr>";
        $out .= "<td>".$row['navn_id']."</td><td>".$row['adresse']."</td><td>".$row['postnr']."</td><td>".$row['tlf']."</td><td>".$row['mobil']."</td><td>".$row['email']."</td><td>".$row['kaldenavn']."</td><td>".$row['spiller_nr']."</td><td>".$row['position']."</td><td>".$row['hojde']."</td><td>".$row['vagt']."</td>";
        $out .= "</tr></table>";
        echo $out;
?>
<br>
<div align="left"><b>Status:</b> <?php echo $_SESSION['Status']; ?><br />


<?php
require 'include.php'; // Forbindelse til database
$res = mysql_query("select id, navn_id from spillere");
$opt = "<select name='id' size='1'>";
while ($row = mysql_fetch_row($res)) {
    $opt .= "<option value='".$row[0]."'>".$row[1]." ".$row[2]."</option>";
}
$opt .= "</select>";
?>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body {
    background-color: #CCCCCC;
}
-->
</style><h4 align="center">Opdater data for spiller</h4>


<form method="post" action="http://super6.kappels.net/spiller/add.php">
<? echo $opt; ?> <input name="opdater" type="submit" value="Hent data">
</form>


<form method="post" action="http://super6.kappels.net/spiller/opdater.php">
<table border="0">
      <tr>
        <td width="10"></td>
        <td width="115"><b>Personoplysniger</b></td>
        <td width="210"><div align="center">Opdater til: </div></td>
      </tr>
      <tr>
        <td>- </td>
        <td>Navn:</td>
        <td><? echo $opt; ?></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Efternavn:</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td>- </td>
        <td>Adresse:</td>
        <td><input name="adresse" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Postnr. og by: </td>
        <td><input name="postnr" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Tlf.</td>
        <td><input name="tlf" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Mobil:</td>
        <td><input name="mobil" type="text" size="40"></td>
      </tr>
      <tr>
        <td>- </td>
        <td>Email:</td>
        <td><input name="email" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Fødselsår:</td>
        <td>-</td>
      </tr>
      <tr>
        <td>-</td>
        <td>K&aelig;lenavn:</td>
        <td><input name="kaldenavn" type="text" size="40"></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td></td>
        <td><b>Facts</b></td>
        <td>Opdater til: </td>
      </tr>
      <tr>
        <td>-</td>
        <td>Spiller nr.:</td>
        <td><input name="spiller_nr" type="text" size="5"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>Position:</td>
        <td><input name="position" type="text" size="40"></td>
      </tr>
      <tr>
        <td>-</td>
        <td>H&oslash;jde:</td>
        <td>
          <input name="hojde" type="text" size="5">
    cm</td>
      </tr>
      <tr>
        <td>-</td>
        <td>V&aelig;gt:</td>
        <td>
          <input name="vagt" type="text" size="5">
    kg</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
    </table>
      <br>
<center><input name="send" type="submit" value="Opdater"></center>
</form>
</body>
</html>
Avatar billede busschou Praktikant
22. april 2005 - 19:56 #11
den fejl du får
You have an error in your SQL syntax. near '11 B, 4. th. WHERE id = '3'' at line 2
må komme fra linje 2 i en anden fil ikke?
Prøv komme med den fil
og prøv lave en
echo "$sql";
så kan vi se hvad det er den prøver sætte ind ($sql skal selvfølgelig være din sql sætning hvor fejlen kommer ;o)
Avatar billede kappel Nybegynder
22. april 2005 - 19:58 #12
filen med fejl i linje 2 er denne:

opdater.php
<?php
ob_start();
?>

<?php
    require('tjeklogin.php');
?>
<?php 
include('include.php');
mysql_select_db($database, $db);

$SET_ARRAY = array();

if ( !empty( $_POST['adresse'] ) )      $SET_ARRAY[] = 'adresse    = '.$_POST['adresse'];
if ( !empty( $_POST['postnr'] ) )      $SET_ARRAY[] = 'postnr    = '.$_POST['postnr'];
if ( !empty( $_POST['tlf'] ) )          $SET_ARRAY[] = 'tlf        = '.$_POST['tlf'];
if ( !empty( $_POST['mobil'] ) )        $SET_ARRAY[] = 'mobil      = '.$_POST['mobil'];
if ( !empty( $_POST['email'] ) )        $SET_ARRAY[] = 'email      = '.$_POST['email'];
if ( !empty( $_POST['kaldenavn'] ) )    $SET_ARRAY[] = 'kaldenavn  = '.$_POST['kaldenavn'];
if ( !empty( $_POST['spiller_nr'] ) )  $SET_ARRAY[] = 'spiller_nr = '.$_POST['spiller_nr'];
if ( !empty( $_POST['position'] ) )    $SET_ARRAY[] = 'position  = '.$_POST['position'];
if ( !empty( $_POST['hojde'] ) )        $SET_ARRAY[] = 'hojde      = '.$_POST['hojde'];
if ( !empty( $_POST['vagt'] ) )        $SET_ARRAY[] = 'vagt      = '.$_POST['vagt'];

if ( count($SET_ARRAY) != 0 ) { // Is there something to update?
    $sql_set = implode(', ', $SET_ARRAY);

    $sql = "
        UPDATE spillere
        SET $sql_set
        WHERE id = '{$_POST['id']}'";

mysql_query($sql) or die( mysql_error() );

} else { // Nothing to update!
    echo 'ERROR : Nothing to update!';
}
header("Location: add.php?status=done&id=".$_POST['id']);
?>
<?php
ob_end_flush();
?>
Avatar billede busschou Praktikant
22. april 2005 - 20:04 #13
godt så er det ikke din update det går galt i?
Alle dine tekst felter skal der ' omkring
altså som
$SET_ARRAY[] = adresse = '.$_POST['adresse']';

Prøv evt at lave et echo"$sql"; inden din mysql_query ... så kan du tydelig se hvor ' mangler
Avatar billede kappel Nybegynder
22. april 2005 - 20:13 #14
det er godt nok add.php at jeg skal sætte noget echo"$sql";  ind ikke?

er det ikke helt fattet det - lol

hvis jeg i opdater.php skriver:
if ( !empty( $_POST['adresse'] ) )      $SET_ARRAY[] = adresse    = '.$_POST['adresse']';

melder den fejl.
Parse error: parse error, unexpected '=' in /customers/kappels.net/kappels.net/httpd.www/super6/spiller/opdater.php on line 14

hvorfor skriver man $_POST['adresse' og bagefter  $SET_ARRAY[] = adresse ?
Avatar billede busschou Praktikant
22. april 2005 - 20:15 #15
Prøv lige sådan her i opdater og fortæl hvad den viser i udskriften!
-------------------
<?php
ob_start();
?>

<?php
    require('tjeklogin.php');
?>
<?php
include('include.php');
mysql_select_db($database, $db);

$SET_ARRAY = array();

if ( !empty( $_POST['adresse'] ) )      $SET_ARRAY[] = 'adresse    = '.$_POST['adresse'];
if ( !empty( $_POST['postnr'] ) )      $SET_ARRAY[] = 'postnr    = '.$_POST['postnr'];
if ( !empty( $_POST['tlf'] ) )          $SET_ARRAY[] = 'tlf        = '.$_POST['tlf'];
if ( !empty( $_POST['mobil'] ) )        $SET_ARRAY[] = 'mobil      = '.$_POST['mobil'];
if ( !empty( $_POST['email'] ) )        $SET_ARRAY[] = 'email      = '.$_POST['email'];
if ( !empty( $_POST['kaldenavn'] ) )    $SET_ARRAY[] = 'kaldenavn  = '.$_POST['kaldenavn'];
if ( !empty( $_POST['spiller_nr'] ) )  $SET_ARRAY[] = 'spiller_nr = '.$_POST['spiller_nr'];
if ( !empty( $_POST['position'] ) )    $SET_ARRAY[] = 'position  = '.$_POST['position'];
if ( !empty( $_POST['hojde'] ) )        $SET_ARRAY[] = 'hojde      = '.$_POST['hojde'];
if ( !empty( $_POST['vagt'] ) )        $SET_ARRAY[] = 'vagt      = '.$_POST['vagt'];

if ( count($SET_ARRAY) != 0 ) { // Is there something to update?
    $sql_set = implode(', ', $SET_ARRAY);

    $sql = "
        UPDATE spillere
        SET $sql_set
        WHERE id = '{$_POST['id']}'";
echo"$sql";
mysql_query($sql) or die( mysql_error() );

} else { // Nothing to update!
    echo 'ERROR : Nothing to update!';
}
header("Location: add.php?status=done&id=".$_POST['id']);
?>
<?php
ob_end_flush();
?>
Avatar billede kappel Nybegynder
22. april 2005 - 20:17 #16
her:

UPDATE spillere SET adresse = Vesterå 11 B, 4. th. WHERE id = '3'You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '11 B, 4. th. WHERE id = '3'' at line 2
Avatar billede busschou Praktikant
22. april 2005 - 20:20 #17
godt så der har du din fejl ...det hedder ikke
UPDATE spillere SET adresse = Vesterå 11 B, 4. th. WHERE id = '3'
Men
UPDATE spillere SET adresse = 'Vesterå 11 B, 4. th.' WHERE id = '3'
Så du skal på en og anden måde have de plinger ' ind i din $sql som stammer fra dit array...så de skal ind der
Avatar billede kappel Nybegynder
22. april 2005 - 20:22 #18
okay thanks jeg prøver og se om jeg kan få det til at virke - tvivler dog :)
Avatar billede busschou Praktikant
22. april 2005 - 20:26 #19
Jeg er ikke sikker på hvordan arrays fungerer i php!
Men følgende linje
---
if ( !empty( $_POST['adresse'] ) )      $SET_ARRAY[] = 'adresse    = '.$_POST['adresse'];
---
Det første
if ( !empty( $_POST['adresse'] ) ) 
Betyder "gør noget hvis ikke $_POST['adresse'] er tom" .. altså hvis der kommer noget fra feltet med name="adresse" i formen.
---
Det næste
$SET_ARRAY[] = 'adresse    = '.$_POST['adresse'];
Betyder så at du sætter dit array til at indeholde 'adresse = 'adressen ...
Avatar billede kappel Nybegynder
22. april 2005 - 20:32 #20
så langt er jeg også med, ser lige om jeg kan finde ud af hvordan man skriver en streng sammen med et array.

Tak for hjælpen
Avatar billede kappel Nybegynder
22. april 2005 - 20:38 #21
har prøvet at få hjælp af nogle nogle andre, fordi jeg kan heller ikke lige se hvad jeg gør galt, så smid du et svar, det er stadig fortjent :)
Avatar billede busschou Praktikant
22. april 2005 - 20:44 #22
fandt du ud af det?
Ellers prøv..bare som forsøg
$SET_ARRAY[] = "adresse = \'$_POST['adresse']\'";
Avatar billede kappel Nybegynder
22. april 2005 - 21:13 #23
jeg fandt ud af det.
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