Avatar billede internet Nybegynder
23. april 2005 - 17:13 Der er 44 kommentarer og
1 løsning

Opdatere sql

Jeg har prøvet at lave dette script til at opdatere nogle sql data fra tabbelen "fakta"

<?php
$ID_OLD = $_REQUEST["old_id"];
$ID = $_REQUEST["id"];
$FORNAVN = $_REQUEST["fornavn"];
$EFTERNAVN = $_REQUEST["efternavn"];
$DM = $_REQUEST["dm"];
$AAR = $_REQUEST["aar"];
$STED = $_REQUEST["Fodsel_sted"];
$LAND = $_REQUEST["Land"];
$OK = $_REQUEST["ok"];
?>

<?php
require("config.php");
?>
<?php
$conn = mysql_connect("$server", "$user", "$password");
mysql_select_db("$database");
// Hent først data ud
$resultat = mysql_query("UPDATE `fakta` SET `id` = '<?php echo $ID?>',
`fornavn` = '<?php echo $FORNAVN?>',
`efternavn` = '<?php echo $EFTERNAVN?>',
`dm` = '<?php echo $DM?>',
`aar` = '<?php echo $AAR?>',
`Fodsel_sted` = '<?php echo $STED?>',
`Land` = '<?php echo $LAND?>',
`ok` = '<?php echo $OK?>' WHERE `id` = '<?php echo $ID_OLD?>';");
while ($row = mysql_fetch_assoc($resultat)) {
extract($row);
?>
Udført
<?php }?>

Men jeg får denne fejl:


Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\www\localhost\girls\cms\ret_fakta.php on line 27

Nogle eksperter der kan hjælpe?
Avatar billede busschou Praktikant
23. april 2005 - 17:15 #1
prøv smække en fejlmedelelse bagefter
`ok` = '<?php echo $OK?>' WHERE `id` = '<?php echo $ID_OLD?>'")or die(mysql_error());
Avatar billede busschou Praktikant
23. april 2005 - 17:16 #2
men hvorfor laver du egentlig echo´er ?
Så kommer variablene vel slet ikke med ind i update strengen
Avatar billede internet Nybegynder
23. april 2005 - 17:19 #3
Det ved jeg ikke.. er rimelig ny til php, har du et alternativ?
Avatar billede busschou Praktikant
23. april 2005 - 17:19 #4
$resultat = mysql_query("UPDATE fakta SET id = $ID, fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = $ID_OLD")or die(mysql_error());
Avatar billede sungdk Nybegynder
23. april 2005 - 17:24 #5
Ja kort og godt er fejlen echo, og en masse tegn unødvendige steder :D
Avatar billede busschou Praktikant
23. april 2005 - 17:26 #6
Jeg kan i øvrigt ikke helt lure hvad der sker med den update. Du søger på et bestemt ID og samtidig vil du rette det?
Afhængig af hvordan det ID er defineret så kan det gå godt...eller skidt ;o)
Men prøv rette til den version jeg gav dig og se hvad den siger
Avatar billede internet Nybegynder
23. april 2005 - 17:27 #7
Så skriver den:

Unknown column 'TEST' in 'where clause'

Når jeg prøver at opdatere brugeren med id = TEST
Avatar billede busschou Praktikant
23. april 2005 - 17:29 #8
prøv lige sådan her og se hvad den echoer
$sql = "UPDATE fakta SET id = '$ID', fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'";
echo "$sql";
$resultat = mysql_query($sql)or die(mysql_error());
Avatar billede busschou Praktikant
23. april 2005 - 17:29 #9
altså...det burde skrive $sql ud...så ser vi på hvordan den ser ud :o)
Avatar billede internet Nybegynder
23. april 2005 - 17:31 #10
så skriver den:

UPDATE fakta SET id = 'TEST1', fornavn = 'Test', efternavn = 'Personen', dm = '09/01', aar = '1989', Fodsel_sted = 'TES', Land = 'TES', ok = 'TES' WHERE id = 'TEST'
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\www\localhost\girls\cms\ret_fakta.php on line 22
Avatar billede busschou Praktikant
23. april 2005 - 17:31 #11
Er dine ID ikke tal i databasen?
Avatar billede internet Nybegynder
23. april 2005 - 17:32 #12
nej det er bokstaver...
Avatar billede busschou Praktikant
23. april 2005 - 17:33 #13
okey...det er så første gang jeg er stødt på det..normalt gemmer man et unikt id som et tal...så man altid har en unik reference til hver indgang i databasen
Avatar billede internet Nybegynder
23. april 2005 - 17:33 #14
min tabel ser sådan ud:

CREATE TABLE `fakta` (
  `id` varchar(200) NOT NULL default '',
  `fornavn` varchar(200) NOT NULL default '',
  `efternavn` varchar(200) NOT NULL default '',
  `dm` varchar(200) NOT NULL default '',
  `aar` varchar(4) NOT NULL default '',
  `Fodsel_sted` text NOT NULL,
  `Land` varchar(200) NOT NULL default '',
  `vist` int(12) NOT NULL default '0',
  `ok` char(3) NOT NULL default 'nej',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
Avatar billede busschou Praktikant
23. april 2005 - 17:35 #15
jeg er ikke 200% sikker
Men jeg tror problemet er at du prøver rette ID til test1 på den post hvor ID = test
Og da Id er primary key så konflikter det
Avatar billede busschou Praktikant
23. april 2005 - 17:35 #16
hvad siger den hvis du udelader rette id
$sql = "UPDATE fakta SET fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'";
echo "$sql";
$resultat = mysql_query($sql)or die(mysql_error());
Avatar billede internet Nybegynder
23. april 2005 - 17:39 #17
Så siger den:

UPDATE fakta SET fornavn = 'Test1', efternavn = 'Personen', dm = '09/01', aar = '1989', Fodsel_sted = 'TES', Land = 'TES', ok = 'TES' WHERE id = 'TEST1'
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\www\localhost\girls\cms\ret_fakta.php on line 22

Den viser en fejl meddelse, men den retter det..
Avatar billede busschou Praktikant
23. april 2005 - 17:40 #18
Ja jeg har lige luret den
Når du updaterer en tabel så får du jo ikke noget resultat
---
while ($row = mysql_fetch_assoc($resultat)) {
extract($row);
---
Hvad skal de to ovenstående linjer gøre?
Når du ikke har en "Select blabla from blabal"... Så henter den ingenting
Den updaterer kun
Avatar billede sungdk Nybegynder
23. april 2005 - 17:41 #19
du mangler også din UPDATE af id i den nye SQL
Avatar billede internet Nybegynder
23. april 2005 - 17:42 #20
Det ved jeg ikke, det er den eneste måde jeg kender til at hente data..

Hvis du kan ordne det, så den bare opdaterer, og bagefter skriver at den er opdateret, så er jeg meget glad..
Avatar billede busschou Praktikant
23. april 2005 - 17:43 #21
Jamen hvis du ingen fejl får...så er den opdateret :o)
Fjern blot linjerne
while ($row = mysql_fetch_assoc($resultat)) {
extract($row);
}
Avatar billede busschou Praktikant
23. april 2005 - 17:45 #22
Det er rigtig at hvis du skal hente data så kan du løbe det igennem...
Men hvis du kun skal Update..så får du intet tilbage fra kaldet
Hvis du fjerner de linjer og den ikke brokker sig...og den opdaterer
Så prøv indsætte id igen og se om det virker
Avatar billede internet Nybegynder
23. april 2005 - 17:45 #23
jeg får en fejl, denne:

UPDATE fakta SET fornavn = 'Test1', efternavn = 'Personen', dm = '09/01', aar = '1989', Fodsel_sted = 'TES', Land = 'TES', ok = 'TES' WHERE id = 'TEST1'
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\www\localhost\girls\cms\ret_fakta.php on line 22

jeg prøver lige fjerne linjerne...
Avatar billede sungdk Nybegynder
23. april 2005 - 17:45 #24
Hvis du vil bruge while, fordi du skal have opdateret flere? - Så skal du jo hente id osv. ud af databasen til at starte med. Og proppe UPDATE ind i while().
Avatar billede busschou Praktikant
23. april 2005 - 17:46 #25
Ja det er klart...hvis du ønsker updatere flere end een post på een gang...så er det en anden sag :o)
Avatar billede internet Nybegynder
23. april 2005 - 17:48 #26
nej, jeg ønsker kun at opdatere en post adgangen..

Scriptet dur ikke når jeg fjerner linjerne, mit script ser stadig sådan ud:

<?php
$ID_OLD = $_REQUEST["old_id"];
$ID = $_REQUEST["id"];
$FORNAVN = $_REQUEST["fornavn"];
$EFTERNAVN = $_REQUEST["efternavn"];
$DM = $_REQUEST["dm"];
$AAR = $_REQUEST["aar"];
$STED = $_REQUEST["Fodsel_sted"];
$LAND = $_REQUEST["Land"];
$OK = $_REQUEST["ok"];
?>
<?php
require("config.php");
?>
<?php
$conn = mysql_connect("$server", "$user", "$password");
mysql_select_db("$database");
// Hent først data ud
$sql = "UPDATE fakta SET fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'";
echo "$sql";
$resultat = mysql_query($sql)or die(mysql_error());
while ($row = mysql_fetch_assoc($resultat)) {
extract($row);
?>
Udført
<?php }?>
Avatar billede sungdk Nybegynder
23. april 2005 - 17:50 #27
prøv at lave en: <? echo $ID_OLD; ?>
Avatar billede busschou Praktikant
23. april 2005 - 17:50 #28
<?php
$ID_OLD = $_REQUEST["old_id"];
$ID = $_REQUEST["id"];
$FORNAVN = $_REQUEST["fornavn"];
$EFTERNAVN = $_REQUEST["efternavn"];
$DM = $_REQUEST["dm"];
$AAR = $_REQUEST["aar"];
$STED = $_REQUEST["Fodsel_sted"];
$LAND = $_REQUEST["Land"];
$OK = $_REQUEST["ok"];
?>
<?php
require("config.php");
?>
<?php
$conn = mysql_connect("$server", "$user", "$password");
mysql_select_db("$database");
// Hent først data ud
$sql = "UPDATE fakta SET fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'";
echo "$sql";
mysql_query($sql)or die(mysql_error());
?>
Udført
Avatar billede busschou Praktikant
23. april 2005 - 17:51 #29
_labisama_ hvorfor det?.. hvis du følger med kan du højere oppe se værdien af den :o)
Avatar billede internet Nybegynder
23. april 2005 - 17:51 #30
det dur slet ikke..
Avatar billede busschou Praktikant
23. april 2005 - 17:52 #31
hvad siger den da?
Avatar billede sungdk Nybegynder
23. april 2005 - 17:52 #32
buss > Hvis værdien ikke er sat, hvordan skal den så hvide hvilken post der er ID = ''? :D
Avatar billede busschou Praktikant
23. april 2005 - 17:54 #33
som sagt...hvis du ser højere oppe så vil du se at den er sat...17:39:26
Avatar billede busschou Praktikant
23. april 2005 - 17:57 #34
Hvad giver den af fejl til det jeg skrev 17:50:35?
Avatar billede internet Nybegynder
23. april 2005 - 17:57 #35
Hvis jeg retter det, som _labisama_ sagde, så ser mit script sådan ud:

<?php
$ID_OLD = $_REQUEST["old_id"];
$ID = $_REQUEST["id"];
$FORNAVN = $_REQUEST["fornavn"];
$EFTERNAVN = $_REQUEST["efternavn"];
$DM = $_REQUEST["dm"];
$AAR = $_REQUEST["aar"];
$STED = $_REQUEST["Fodsel_sted"];
$LAND = $_REQUEST["Land"];
$OK = $_REQUEST["ok"];
?>
<?php
require("config.php");
?>
<?php
$conn = mysql_connect("$server", "$user", "$password");
mysql_select_db("$database");
// Hent først data ud
$sql = "UPDATE fakta SET fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '<? echo $ID_OLD; ?>'";
echo "$sql";
$resultat = mysql_query($sql)or die(mysql_error());
while ($row = mysql_fetch_assoc($resultat)) {
extract($row);
?>

<?php }?>

og skriver dette:

UPDATE fakta SET fornavn = 'Test1', efternavn = 'Personen', dm = '09/01', aar = '1989', Fodsel_sted = 'TES', Land = 'TES', ok = 'TES' WHERE id = ''
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\www\localhost\girls\cms\ret_fakta.php on line 22
Avatar billede busschou Praktikant
23. april 2005 - 17:57 #36
Hehe det er fordi _labisama_ ikke udtrykte sig klart nok ;o)
Avatar billede busschou Praktikant
23. april 2005 - 17:58 #37
Du må ikke have echo midt i din sql
Hvad giver den af fejl til det jeg skrev 17:50:35?
Avatar billede internet Nybegynder
23. april 2005 - 17:59 #38
den skriver:

UPDATE fakta SET fornavn = 'Test1', efternavn = 'Personen', dm = '09/01', aar = '1989', Fodsel_sted = 'TES', Land = 'TES', ok = 'TES' WHERE id = 'TEST1'Udført

Jeg må ha' oversat den besked..
Den er fuldstændig rigtig nu..

Kan du bare gøre så den ikke skriver sql sætningen, men kun udført..
Avatar billede busschou Praktikant
23. april 2005 - 18:00 #39
<?php
$ID_OLD = $_REQUEST["old_id"];
$ID = $_REQUEST["id"];
$FORNAVN = $_REQUEST["fornavn"];
$EFTERNAVN = $_REQUEST["efternavn"];
$DM = $_REQUEST["dm"];
$AAR = $_REQUEST["aar"];
$STED = $_REQUEST["Fodsel_sted"];
$LAND = $_REQUEST["Land"];
$OK = $_REQUEST["ok"];
?>
<?php
require("config.php");
?>
<?php
$conn = mysql_connect("$server", "$user", "$password");
mysql_select_db("$database");
// Hent først data ud
$sql = "UPDATE fakta SET fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'";
mysql_query($sql)or die(mysql_error());
?>
Udført
Avatar billede hmortensen Nybegynder
23. april 2005 - 18:00 #40
<?php
$conn = mysql_connect($server, $user, $password);
mysql_select_db($database, $conn);

$sql = "UPDATE fakta SET fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'";
mysql_query($sql) or die(mysql_error());
?>
Avatar billede busschou Praktikant
23. april 2005 - 18:01 #41
prøv lige for en sikkerhedsskyld at indsætte id´et som du gerne ville oprindeligt og se om det virker.
Altså.. ovenstående virker!.
Men test evt om det virker med denne her
$sql = "UPDATE fakta SET id = '$ID', fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'";
Avatar billede internet Nybegynder
23. april 2005 - 18:01 #42
Tak for hjælpen..
Avatar billede busschou Praktikant
23. april 2005 - 18:02 #43
Det var så lidt... hvis den giver fejl på min sidste kommentar så er det altså fordi du ikke kan opdatere id´et på det id hvor du opdaterer andre ting...så at sige :o)
Avatar billede sungdk Nybegynder
23. april 2005 - 18:02 #44
<?php
$ID_OLD = $_REQUEST["old_id"];
$ID = $_REQUEST["id"];
$FORNAVN = $_REQUEST["fornavn"];
$EFTERNAVN = $_REQUEST["efternavn"];
$DM = $_REQUEST["dm"];
$AAR = $_REQUEST["aar"];
$STED = $_REQUEST["Fodsel_sted"];
$LAND = $_REQUEST["Land"];
$OK = $_REQUEST["ok"];

require("config.php");

$conn = mysql_connect("$server", "$user", "$password");
mysql_select_db("$database");
// Hent først data ud

$resultat = mysql_query("UPDATE fakta SET id = '$ID', fornavn = '$FORNAVN', efternavn = '$EFTERNAVN', dm = '$DM', aar = '$AAR', Fodsel_sted = '$STED', Land = '$LAND', ok = '$OK' WHERE id = '$ID_OLD'")or die(mysql_error());

mysql_close($conn); ?>

Jep buss.. havde jeg ik lige set :D
Avatar billede internet Nybegynder
23. april 2005 - 18:03 #45
Nej, det giver ikke fejl..

Den opdateret fuldstændig perfekt, også med $id, og skriver Udført..

Igen, 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
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