Avatar billede Bjarne Novice
28. oktober 2005 - 21:47 Der er 13 kommentarer og
1 løsning

Opdatering af skema, problemer

Jeg er i gang med at lave et ugeskema, hvor nogle informationer hentes ind. Disse info kan i midlertid ændre sig. Derfor har jeg lavet, så det er muligt at opdatere info:

$count = mysql_num_rows(mysql_query("SELECT id FROM importedweeks WHERE userid = '".$_SESSION['id']."'AND week = '".$_GET['week']."' AND year = '".$_GET['year']."'"));
$time = time();
if($count == 1) @mysql_query("DELETE FROM lessons WHERE userid = '".$userid."' AND week = '".$week."' AND year = '".$year."'");
for($i = 1; $i < 6; $i++) { //indeholder ugedage 1 for mandag - 5 for fredag
for($u = 0; $u < 9; $u++ ) { //indeholder modulerne på de enkelte dage
$module = $u+1;
@mysql_query("INSERT INTO lessons(id, userid, username, lesson, teacher, room, module, day, week, year) VALUES('', '".$userid."', '".$username."', '".$skema[$i][$u]."', '".$laerer[$i][$u]."', '".$lokale[$i][$u]."', '".$module."', '".$i."', '".$week."', '".$year."')");

}
}
if($count == 1) @mysql_query("DELETE FROM importedweeks WHERE userid = '".$userid."' AND week = '".$week."' AND year = '".$year."'"); //importedweeks bruges til at holde styr over, hvilke uger de forskellige brugere har hentet.
@mysql_query("INSERT INTO importedweeks(id, userid, username, week, year, timestamp) VALUES('', '".$userid."', '".$username."', '".$week."', '".$year."', '".$time."')");

Men samtidig kan informationerne også være forkerte eller mangelfulde. Derfor skal der laves mulighed for at ændre info manuelt. Fint nok. Problemet opstår når man har indtastet noget info manuelt, og derefter opdaterer skemaet. Så forsvinder de ting man manuelt har indtastet. Og eftersom informationerne ændres ofte, er det irriterende at skulle indtaste disse forskeliige ting manuelt, hver gang man har opdateret.

Hvordan får jeg lavet så manuelle info gemmes mens de hentede bliver opdateret?
Avatar billede jakobdo Ekspert
28. oktober 2005 - 22:16 #1
Kender du SQL kommandoen: UPDATE?
Avatar billede Bjarne Novice
28. oktober 2005 - 22:27 #2
ja det gør jeg da.. Jeg lavet en del forsøg med den, men det kan jeg heller ikke få til at virke.. Jeg kan lige prøve at genskabe et eksempel på det jeg har prøvet.. Det kunne jo være jeg laver en helt grundlæggende fejl:)
Avatar billede Bjarne Novice
28. oktober 2005 - 22:44 #3
$count = mysql_num_rows(mysql_query("SELECT id FROM importedweeks WHERE userid = '".$_SESSION['id']."'AND week = '".$_GET['week']."' AND year = '".$_GET['year']."'"));
$time = time();

for($i = 1; $i < 6; $i++) {
for($u = 0; $u < 9; $u++ ) {
$module = $u+1;
if($count == 0) {
@mysql_query("INSERT INTO lessons(id, userid, username, lesson, teacher, room, module, day, week, year) VALUES('', '".$userid."', '".$username."', '".$skema[$i][$u]."', '".$laerer[$i][$u]."', '".$lokale[$i][$u]."', '".$module."', '".$i."', '".$week."', '".$year."')");
} elseif($count == 1) {
@mysql_query("UPDATE lessons SET lesson = '".$skema[$i][$u]."', teacher = '".$laerer[$i][$u]."', room = '".$lokale[$i][$u]."' WHERE userid = '".$userid."' AND week = '".$week."' AND year = '".$year."' AND module = '".$u."' AND day = '".$i."'");
}
}
}


if($count == 0) @mysql_query("INSERT INTO importedweeks(id, userid, username, week, year, timestamp) VALUES('', '".$userid."', '".$username."', '".$week."', '".$year."', '".$time."')");

if($count == 1) @mysql_query("UPDATE importedweeks SET timestamp = '".$time."' WHERE userid = '".$userid."' AND week = '".$week."' AND year = '".$year."'");

Det virker fint at hente skemaet første gang. Så laver jeg en manuel ændring (fx ændre modul 3). Opdaterer igen, nu er modul 2 pludselig slettet, og modul 4-5-6-7-8-9 har forrykket sig til 3-4-5-6-7-8.
Avatar billede jakobdo Ekspert
28. oktober 2005 - 22:46 #4
Det jeg ville gøre var følgende:

lave et udtræk:

$week = mysql_escape_string($_GET["week"]);
$year = mysql_escape_string($_GET["year"]);
$query = mysql_query("SELECT * FROM importedweeks WHERE userid = '".$_SESSION['id']."' AND week = '".$week."' AND year = '".$year."' LIMIT 1");
if(mysql_num_rows($query)>0)
{
//Her skal vi så printe en masse input felter.
//Og også et felt med row-id (evt i hidden field)
}

Når brugeren så trykker REDIGER/OPDATER, smider vi alle data tilbage og bruger UPDATE importedweeks SET data1 = $data1, data2 = $data2 osv... WHERE ID = $hiddenID

Kan du følge mig?
Avatar billede jakobdo Ekspert
28. oktober 2005 - 22:46 #5
Hvorfor har du 2 for() løkker?
Avatar billede Bjarne Novice
28. oktober 2005 - 23:00 #6
for($i = 1; $i < 6; $i++) styrer dagene - fra mandag 1 til fredag 5
for($u = 0; $u < 9; $u++) styrer modulerne - modul 1 til modul 8
Avatar billede Bjarne Novice
28. oktober 2005 - 23:02 #7
Det er sikkert lettere at overskue, hvis du ved hvordan tabellerne ser ud:

CREATE TABLE `lessons` (
  `id` int(11) NOT NULL auto_increment,
  `userid` int(11) NOT NULL default '0',
  `username` varchar(20) NOT NULL default '',
  `lesson` varchar(10) NOT NULL default '',
  `teacher` varchar(10) NOT NULL default '',
  `room` varchar(10) NOT NULL default '',
  `module` int(11) NOT NULL default '0',
  `day` int(11) NOT NULL default '0',
  `week` int(11) NOT NULL default '0',
  `year` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
)

CREATE TABLE `importedweeks` (
  `id` int(11) NOT NULL auto_increment,
  `userid` int(11) NOT NULL default '0',
  `username` varchar(20) NOT NULL default '',
  `week` int(11) NOT NULL default '0',
  `year` int(11) NOT NULL default '0',
  `timestamp` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
)

Må indrømme, at jeg ikke helt kan følge dit eksempel. Studerer det lige lidt nærmere
Avatar billede jakobdo Ekspert
28. oktober 2005 - 23:03 #8
Jeg tror måske jeg har lidt svært ved helt at forstå hvad du forsøger!
Henter du 5*8 rækker ud fra en DB? (altså 40 rækker)
Og dem skal du kunne redigere?
Avatar billede jakobdo Ekspert
28. oktober 2005 - 23:06 #9
Måske spørger jeg dumt og gr min og måske og din forvirring større, men hvorfor gemmer du: week, year, userid, username i begge tabeller?
Avatar billede Bjarne Novice
28. oktober 2005 - 23:13 #10
Det første er rigtigt. Der er 5 dage med faktisk 9 moduler (min fejl). Jeg bruger importedweeks til at holde styr på, hvilke uger de enkelte brugere har hentet og hvornår. I lessons gemmes selve værdierne. Men har du et bedre forslag til hvordan man kan opbygge en fornuftig database struktur, er jeg også frisk på det:)
Avatar billede jakobdo Ekspert
28. oktober 2005 - 23:16 #11
Ikke lige i dag!
Jeg må kigge videre på det i morgen!
Måske vi kan tage det via msn: jakobdo (at) hotmail (dot) com
Ville gerne prøve at se lidt live data, det får nogle gange 5-øren til at falde! :o)
Sengetid.
Avatar billede Bjarne Novice
28. oktober 2005 - 23:20 #12
jeg føjer dig lige til msn. Helt enig i med sengetiden... Så må vi lige se en gang i morgen, tak fordi du gider hjælpe:)
Avatar billede jakobdo Ekspert
30. oktober 2005 - 21:52 #13
Et svar!
Avatar billede jakobdo Ekspert
31. oktober 2005 - 08:00 #14
Takker for point!
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