webForumDet fria alternativet

ta bort en viss bit ur en rad?

5 svar · 331 visningar · startad av rms

rmsMedlem sedan mars 200216 inlägg
#1

nedan kan du se hur jag hade tänkt bygga upp mitt nya system för min counter-strike klan där man ska kunna lägga till/ta bort matcher, och sedan lägga till/ta bort spelare därifrån. och till slut lägga till resultat.

jag har har en databas till allting som heter "dbmatch" och en tabell som heter "tbmatch".
sedan har jag kolumnerna "id" "matchtype" "date" "time" "versus" "team". när jag addar matcher ska "id" skrivas in i databasen automatiskt (från 1 och uppåt) och "matchtype" väljes i en select-lista.. "date" skriver man själv.. "time" skriver man själv och "versus" skriver man själv.
"team" däremot ska inte skrivas in nu utan där ska klanmedlemmarna kunna gå in och lägga till efter matchen är tillagd.
nu till problemet.. när jag vill ta bort en match tar jag ju bort hela raden (bara? :P) men när jag vill ta bort en viss spelare, hur gör jag detta? när man skriver in sig hamnar man ju i kolumnen team men alla som skriver in sig kommer ju där.. och nu vill jag då ta bort precis denna biten..

fråga på om jag har skrivit så ni inte förstår, jag är nybörjare på detta men vill börja göra något avancerat direkt. förstår ni, så kanske ni vet ett bättre sätt att lösa detta på?
en negativ grej till är att när någon addar sig på team så måste jag ändra variabeln så det blir mellanrum efter så de som skriver in sig inte står ihop.

tack på förhand!

/rms

*******
add.php
*******

add match
|
- - - id
|
- - - matchtype
|
- - - date
|
- - - time
|
- - - versus

add player to match
|
- - - team

add result
|
- - - result

**********
delete.php
**********

delete match
|
- - - id
|
- - - matchtype
|
- - - date
|
- - - time
|
- - - versus

delete player from match
|
- - - team ()

*********
show.php
*********

show matches
|
- - - 1
|
- - - 2

...

|
- - - 998
|
- - - 999

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Välkommen till webForum

Dina problem beror på att du har en felaktig databasdesign. Du skall aldrig lagra flera värden i samma kolumn.

Det man gör är att man skapar en tabell som innehåller en post för varje spelare/match. Du får lägga en relation mellan dessa tabeller. *

Om du vill ta bort en spelare så är det bara att ta bort en rad i den tabellen.

*Mysql är kasst på sådant om man inte har InnoDB som tabelltyp.

rmsMedlem sedan mars 200216 inlägg
#3

tack så mycket :)

"Det man gör är att man skapar en tabell som innehåller en post för varje spelare/match. Du får lägga en relation mellan dessa tabeller. *"

++ Ok eftersom jag är ny på detta kan du förklara det lätt eller finns det en guide nånstans? Jag använder phpMyAdmin för att skapa databaser/tabeller men att göra en relation mellan dem? Hur?:)
Och för att vara på den säkra sidan, är det såhär jag ska göra:
En databas, dbmatch, och sedan en ny tabell för varje match? Så jag måste i min php-kod skapa en ny tabell varje gång jag lägger in en ny match? Ok lite flummigt kanske:)

"*Mysql är kasst på sådant om man inte har InnoDB som tabelltyp."

++ Ok men då använder jag väl bara InnoDB som tabelltyp? Eller vad är det?

Tacksam för svar :)

/rms

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Nej, inte en ny tabell för varje match. (Det är nästan ett ännu värre fel ;) .)

I matchtabellen så har du något värde som är unikt, till exempel en kolumn med attributet auto_increment. (Den kan heta match_id t.ex.)

I spelartabellen så har du (minst) två kolumner dels match_id och dels spelarNamn. När man skapar spelartabellen så säger man att match_id skall vara en foreign key till matchtabellen. Det är det som utgör en relation mellan tabellerna.

Nu vet jag inte hur det ser ut i PhpMyAdmin, bara hur man gör det i SQL.

När du lägger till nya spelare till en match så måste du ha tillgång till id för den matchen så att du kan lagra det i spelartabellen.

För att få fram alla spelare så måste du göra en join mellan tabellerna

 select * from dbmatch as m inner join spelare as s on m.match_id = s.match_id

red: Inkonsistens med kolumnnamn.

rmsMedlem sedan mars 200216 inlägg
#5

oj!

Ok nu förstår jag upplägget i alla fall, det var nästan det värsta problemet, jag kunde ju inte göra så mycket:). Tack!

Jag har hittat hur man länkar de två tabellerna i phpMyAdmin också. Men nu om jag vill ta bort en viss match eller en viss spelare. Hur kan jag göra så den hittar rätt match_id? Jag vet hur jag gör det i phpMyAdmin men jag skulle vilja ha en sida som alla i laget kan förstå :)

red: lol på mig :)

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Ja det beror på hur du lägger upp det. Jag förmodar att du har någon administrationssida där man kan lägga till matcher och användare.

Ett sätt är att du hämtar alla matcher och sedan har du knappar/länkar för att redigera en match. Det man kan göra är att skicka match_id som value för knappen eller så skickar man det med querystring om man har en länk. Det går också att använda fält av typen hidden.

På redigeringssidan så kan man vissa alla spelare med hjälp av den joinfråga jag skrev.
Sen så kan man lägga en delete-knapp vid varje spelare som innebär att man skickar match_id och spelarnamn till en delete-sida.

Som sagt, det beror på hur du vill att det skall se ut, men man får skicka med match_id på något av ovanstående sätt.

134 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)