problem med gui design i javascript och php

PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
smallbit



Medlem i: 2508 dagar

Status: Offline



#742490
Inlägg Skrivet: 2019-02-27 19:16      Ämne: problem med gui design i javascript och php Citera

Hej, forumet!

Jag har kört fast ordentligt i ett php projekt jag bygger. Det är en filmdatabas. Problemet har att göra med designen. I användarläget har jag ett stort formulär med en dropdown meny med attributet multiple. Ovanför denna lista har jag ett textfält med etiketten "Namn" och till höger om listan har jag två knappar, "Lägg till" och "Ta bort". Dessa komponenter ingår i ett fieldset i formuläret kallat "Skådespelare". Användaren skriver in namn på skådespelare som medverkar i aktuell film i textfältet och lägger till dessa i listan genom att klicka på "Lägg till"-knappen. Värdena i listan kan tas bort med "Ta bort"-knappen. Allt går till i javascript.

Min databas har en many<>many struktur. Jag har en tabell i vilken jag lagrar namnen på skådespelarna och en annan där jag länkar samman namnen med ID värdet för aktuell titel. Så här ser en funktion ut i php när jag spar namn och ID värdet på skådespelarna i aktuella tabeller.

KOD:
1:
 
2:
 
3:
private function insertActors($link, $actorList) {
4:
            
5:
         $actorSql = 'INSERT INTO TBL_ACTOR (NAME) VALUES (:NAME);';   
6:
         $castSql = 'INSERT INTO TBL_FILMCAST (ACTOR_ID,FILM_ID) VALUES (:ACTOR_ID,:FILM_ID);';
7:
         
8:
         $actorStmt = $link->prepare($actorSql);
9:
         $castStmt = $link->prepare($castSql);
10:
         
11:
         foreach ($actorList as $actor){
12:
            
13:
            if (!$this->actorExists($link, $actor)) {
14:
                        
15:
               $actorParams = array(':NAME'=>$actor);
16:
               $actorStmt->execute($actorParams);
17:
               
18:
            }
19:
            
20:
            $idSql = "SELECT ID FROM TBL_ACTOR WHERE NAME LIKE '" . $actor . "'";
21:
            $result = $link->query($idSql);
22:
            
23:
            foreach ($result as $cast) {
24:
            
25:
               $castParams = array(':ACTOR_ID'=>$cast['ID'],
26:
               ':FILM_ID'=>$this->filmId);
27:
               
28:
               $castStmt->execute($castParams);
29:
            
30:
            }                        
31:
         }
32:
      }
33:
 
34:
 


I redigeringsläget visar jag namn på de skådespelare användaren lagrat i aktuella tabeller med nedanstående php-kod:

KOD:
1:
 
2:
 
3:
public function populateActorList() {
4:
      
5:
         $link = $this->conn->getConnection();
6:
         
7:
         $id = isset($_GET['filmId']) ? $_GET['filmId'] : "";
8:
         
9:
         $sql = "SELECT TBL_ACTOR.NAME,TBL_ACTOR.ID FROM TBL_ACTOR JOIN TBL_FILMCAST ON " .
10:
         "TBL_ACTOR.ID=TBL_FILMCAST.ACTOR_ID WHERE TBL_FILMCAST.FILM_ID LIKE " . $id;         
11:
         
12:
         foreach ($link->query($sql) as $row) {
13:
            
14:
            echo '<option value="' . trim($row['ID'])  . '">'
15:
            . trim($row['NAME']) . '</option>' . "\n";
16:
         
17:
         }
18:
      
19:
         $this->conn->close();
20:
         $link = NULL;
21:
      
22:
      }
23:
   }
24:
 
25:
 


Så långt så gott. Det verkliga problemet jag möter är i redigeringsläget. Jag önskar låta användaren redigera namnen på skådespelarna jag fyllt aktuell lista med. Med javascript har jag ändrat texten i options taggarna till önskat värde men det är här jag kör fast. Så här ser javascript funktionen ut jag använder för att ändra textvärdet på options-taggarna:

KOD:
1:
 
2:
 
3:
function editItem(listName) {
4:
      
5:
      var list = document.getElementById(listName);
6:
      var data = window.prompt("Redigera", "Nytt namn");
7:
      
8:
      if (data != null) {
9:
      
10:
         var index = list.selectedIndex;
11:
         if (index == -1) return;
12:
         
13:
         list.options[index].text = data;
14:
      
15:
      }
16:
   }
17:
 
18:
 


Jag vet inte hur jag ska gå vidare i nästa steg som blir att fånga upp de ändrade options-värdena och uppdatera dessa i tabellerna "TBL_ACTORS" och "TBL_FILMCAST" Jag kanske inte borde använda mig av en dropdown-meny vid detta tillfälle för att lista och försöka redigera namn på skådespelare. Jag kanske använder mig av fel komponent.

Hur skulle andra gjort i detta fall? Det hela verkar nästan omöjligt i detta läge så jag är väldigt tacksam för tips, idéer och förslag kring detta problem.

Väl mött!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic