/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Erstatte gamle data med nye i database...
Fra : Dennis Munding


Dato : 10-05-05 20:23

Hej NG!

Jeg kæmper stadig med et script, som gerne skulle erstatte gamle data med
nye i min database...

Jeg er dog ikke klar over, om jeg bruger de rigtige variabler (udtryk)...

Er der nogen, som vil kigge på koderne til de 3 filer, som det drejer sig
om??

De ligger her:

http://www.pastebin.dk/index.php?show=557

På forhånd tusind tak!

Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www.mundings-memorial.dk/
http://www.cantica.dk/



 
 
Martin (11-05-2005)
Kommentar
Fra : Martin


Dato : 11-05-05 05:46

Dennis Munding wrote:
> Hej NG!
>
> Jeg kæmper stadig med et script, som gerne skulle erstatte gamle data med
> nye i min database...
>
> Jeg er dog ikke klar over, om jeg bruger de rigtige variabler (udtryk)...
>
> Er der nogen, som vil kigge på koderne til de 3 filer, som det drejer sig
> om??
>
> De ligger her:
>
> http://www.pastebin.dk/index.php?show=557
>

FILE#3:

<?php
header ("Location: FILE#1.php");
?>

<?php
session_start();
?>

Tjaa... hvis det står først i din så hopper den til file#1.php uden at
komme komme videre i teksten - måske problemet ligger der?

<?php
header("location: xxxxx");
// HOPPER OVER TIL xxxxx

print "Dette vil aldrig vises";
?>

Dennis Munding (11-05-2005)
Kommentar
Fra : Dennis Munding


Dato : 11-05-05 17:08

Hej Martin!
"Martin" <news@natten-i.dk> skrev i en meddelelse
news:42818dee$0$732$edfadb0f@dread16.news.tele.dk...
> FILE#3:
>
> <?php
> header ("Location: FILE#1.php");
> ?>
>
> <?php
> session_start();
> ?>
>
> Tjaa... hvis det står først i din så hopper den til file#1.php uden at
> komme komme videre i teksten - måske problemet ligger der?
>
> <?php
> header("location: xxxxx");
> // HOPPER OVER TIL xxxxx
>
> print "Dette vil aldrig vises";
> ?>

Jeg har prøvet at ændre lidt i scriptet - bl.a. har jeg flyttet "header
("Location: FIL#1.php");" ned i scriptet.

Resultatet er dog ikke tilfredsstillende, da det blot indsætter en ny
"event" i stedet for at erstatte den gamle...
Men nu får jeg i det mindste ikke min egen fejl-side....

Jeg har lagt den nye version op på pastebin.dk:

http://www.pastebin.dk/index.php?show=559

Håber virkelig, at der snart er en, som kan komme med løsningen, for det er
ved at drive mig til vanvid.

Mange tak for dit svar!


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www.mundings-memorial.dk/
http://www.cantica.dk/



Martin (11-05-2005)
Kommentar
Fra : Martin


Dato : 11-05-05 22:16

Dennis Munding wrote:
> Resultatet er dog ikke tilfredsstillende, da det blot indsætter en ny
> "event" i stedet for at erstatte den gamle...
> Men nu får jeg i det mindste ikke min egen fejl-side....

Måske du lige skulle kigge på dokumentationen og se hvorfor - løsningen
er temmelig tæt faktisk :P

<citat http://dev.mysql.com/doc/mysql/en/replace.html>
REPLACE works exactly like INSERT, except that if an old record in the
table has the same value as a new record for a PRIMARY KEY or a UNIQUE
index, the old record is deleted before the new record is inserted. See
Section 13.1.4, “INSERT Syntax”.
</citat>

Nu kan jeg ikke se din database struktur - men regner med at der er et
ID (som er primary key) for hvert event, og ovenstående engelske tekst
siger at den KUN an opdatere hvis der er primary nøgle eller unique
nøgle sat og fundet.

Hvis jeg var dig ville jeg nok lave noget ala

$numrows = mysql_result(mysql_query("
SELECT
COUNT(*)
FROM
MY_TABLE
WHERE
EventYear = '$year'
AND
EventMonth = '$month'
AND
EventDay = '$month'
AND
osv osv
"),0);

if($numrows == 0) {
$sql = mysql_query("INSERT INTO tabel (EventYear, EventMonth,
EventDay, EventTime, Event) VALUES ('$year', '$month', '$day', '$time',
'$event')"))

} else {
$sql = mysql_query("UPDATE tabel .....");
}

>
> Jeg har lagt den nye version op på pastebin.dk:
>
> http://www.pastebin.dk/index.php?show=559
>
> Håber virkelig, at der snart er en, som kan komme med løsningen, for det er
> ved at drive mig til vanvid.
>
> Mange tak for dit svar!
>
>
> Med venlig hilsen

Dennis Munding (12-05-2005)
Kommentar
Fra : Dennis Munding


Dato : 12-05-05 07:46

Hej Martin!
"Martin" <news@natten-i.dk> skrev i en meddelelse
news:428275f1$0$665$edfadb0f@dread16.news.tele.dk...
> Måske du lige skulle kigge på dokumentationen og se hvorfor - løsningen
> er temmelig tæt faktisk :P

Det har jeg skam gjort...
Jeg er bare newbie, så jeg forstår endnu ikke helt systemet i PHP og
MySQL...

> <citat http://dev.mysql.com/doc/mysql/en/replace.html>
> REPLACE works exactly like INSERT, except that if an old record in the
> table has the same value as a new record for a PRIMARY KEY or a UNIQUE
> index, the old record is deleted before the new record is inserted. See
> Section 13.1.4, “INSERT Syntax”.
> </citat>
>
> Nu kan jeg ikke se din database struktur - men regner med at der er et
> ID (som er primary key) for hvert event, og ovenstående engelske tekst
> siger at den KUN an opdatere hvis der er primary nøgle eller unique
> nøgle sat og fundet.

Der er en primær nøgle...

> Hvis jeg var dig ville jeg nok lave noget ala
>
> $numrows = mysql_result(mysql_query("
> SELECT
> COUNT(*)
> FROM
> MY_TABLE
> WHERE
> EventYear = '$year'
> AND
> EventMonth = '$month'
> AND
> EventDay = '$month'
> AND
> osv osv
> "),0);
>
> if($numrows == 0) {
> $sql = mysql_query("INSERT INTO tabel (EventYear, EventMonth,
> EventDay, EventTime, Event) VALUES ('$year', '$month', '$day', '$time',
> '$event')"))
>
> } else {
> $sql = mysql_query("UPDATE tabel .....");
> }

Og her bliver jeg så nødt til at spørge, om ID-nøglen bliver hentet
automatisk?
I stedet for at bruge "UPDATE" vil jeg nemlig gerne bruge "REPLACE", og der
kan man - så vidt jeg har forstået ikke bruge "WHERE"...? F. eks.:

$sql = mysql_query("REPLACE INTO my-table (EventId, EventYear, EventMonth,
o.s.v....) VALUES ('$id', '$year', '$month', o.s.v....") WHERE
EventId='$_GET[EventId]'")...

Og hvis jeg forstår dit forslag korrekt, så tjekker det først, om der er
noget i databasen "if($numrows == 0) {", hvis ikke det er tilfældet,
indsætter den en ny event "$sql = mysql_query("INSERT INTO...."))", ellers
opdaterer det den gamle event "} else { $sql =
mysql_query("UPDATE..."); }"....??

Har jeg forstået det korrekt?

Hvis ja, så mangler jeg bare at få "skåret ud i pap", hvor jeg skal indsætte
dit forslag - jeg spørger meget, så jeg ikke laver for meget "ged" i det...

Mange tak for dit svar!


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www.mundings-memorial.dk/
http://www.cantica.dk/



Martin (12-05-2005)
Kommentar
Fra : Martin


Dato : 12-05-05 12:29

Dennis Munding wrote:
> Og her bliver jeg så nødt til at spørge, om ID-nøglen bliver hentet
> automatisk?
> I stedet for at bruge "UPDATE" vil jeg nemlig gerne bruge "REPLACE", og der
> kan man - så vidt jeg har forstået ikke bruge "WHERE"...? F. eks.:
>
> $sql = mysql_query("REPLACE INTO my-table (EventId, EventYear, EventMonth,
> o.s.v....) VALUES ('$id', '$year', '$month', o.s.v....") WHERE
> EventId='$_GET[EventId]'")...
>
> Og hvis jeg forstår dit forslag korrekt, så tjekker det først, om der er
> noget i databasen "if($numrows == 0) {", hvis ikke det er tilfældet,
> indsætter den en ny event "$sql = mysql_query("INSERT INTO...."))", ellers
> opdaterer det den gamle event "} else { $sql =
> mysql_query("UPDATE..."); }"....??
>
> Har jeg forstået det korrekt?

Jeps :)

Indsætte data: <http://www.webcafe.dk/artikler/sql/indsaetogfjerndata/>
Opdater data: <http://www.webcafe.dk/artikler/sql/opdatertabel/>

>
> Hvis ja, så mangler jeg bare at få "skåret ud i pap", hvor jeg skal indsætte
> dit forslag - jeg spørger meget, så jeg ikke laver for meget "ged" i det...

Det skal stå istedet for din if($result=mysql_query......
Linje 19

>
> Mange tak for dit svar!
>
>
> Med venlig hilsen

Dennis Munding (12-05-2005)
Kommentar
Fra : Dennis Munding


Dato : 12-05-05 17:05

Hej Martin!
"Martin" <news@natten-i.dk> skrev i en meddelelse
news:42833dfc$0$708$edfadb0f@dread16.news.tele.dk...
> Indsætte data: <http://www.webcafe.dk/artikler/sql/indsaetogfjerndata/>
> Opdater data: <http://www.webcafe.dk/artikler/sql/opdatertabel/>

Nu "snakker" vi jo forbi hinanden, for jeg vil gerne vide noget mere om
funktionen "REPLACE", men du forklarer om "INSERT" - som jeg ikke har
problemer med - og "UPDATE", som jeg ikke havde tænkt mig at bruge...

Jeg har læst begge artikler tidligere, men da jeg ikke fik svar på det, jeg
søgte, lånte jeg en bog om PHP og MySQL, men den har heller ikke noget
fyldestgørende svar om "REPLACE", hvorfor jeg så henvender mig her...
Hvis bare mit engelske havde været bedre... :-/

> Det skal stå istedet for din if($result=mysql_query......
> Linje 19

Det har jeg så prøvet nu.... Men!
Det eneste jeg får ud af det, er enten en blank side eller samme resultat,
som jeg har opnået hidtil: Der bliver indsat en ny event i stedet for, at
den gamle event bliver erstattet af en ny...??

Jeg er ikke helt sikker på, om jeg gør det rigtige m.h.t. placeringen af
"header("Location: my-file.php")"...

if($numrows == 0) {
$sql = mysql_query("INSERT INTO drenge_events (EventYear, EventMonth,
EventDay, EventTime, Event) VALUES ('$year', '$month', '$day', '$time',
'$event')");
header("Location: DKal-indhold.php");
} else {
$sql = mysql_query("UPDATE drenge_events SET EventYear='$year',
EventMonth='$month', EventDay='$day', EventTime='$time', Event='$event'
WHERE EventId='$_GET[EventId]'");
header("Location: DKal-indhold.php");
}
?>

Ovenstående sender brugeren - som ønsket! - tilbage til kalender-oversigten,
men desværre indsætter det, som nævnt, en ny event i stedet for at
erstatte...

Men jeg har en mistanke om, at det allerede er i en af de 2 andre filer, at
det går galt...
Men da jeg som sagt er newbie, ved jeg det ikke - jeg har ikke helt styr på
alle udtrykkene i php.

Alle 3 filer (med undtagelse af den sidste ændring!) ligger samlet på
pastebin.dk:

http://www.pastebin.dk/index.php?show=557

Hvis det kan hjælpe til at hjælpe mig, har jeg oprettet en profil på en
testside:

http://www.cantica.dk/Includes/Drenge.php --> klik på "Admin[login]" -->
Brugernavn: Test --> Password: lukmigind ("stjålet" fra Erik Ginnerskov
(Gnæk! Gnæk!))

Jeg har tjekket i kildekoden, at Id'et bliver ført videre, og det gør det,
men alligevel er der noget, som ikke "funker"...


Endnu en gang tak for din hjælp til nu!


Med venlig hilsen
--
Dennis Munding
Web-master
http://www.skovaa-munding.dk/
http://www.mundings-memorial.dk/
http://www.cantica.dk/




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste