Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MYSQL - Usuniecie fragmentu z bazy oraz licznik znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
dram
Witam.
1. Pytanie to:
Wiem że można dodawać dany ciąg znaków do danego rekordu i kolumny ale jak usunąć fragment?

Zakładamy ,że mam Tabele która ma rekordy i 2 kolumny("ID","COS")
Zawartość rekordu
1,"BLA"
2,"blabla"

Teraz chciałbym z rekordu 1-wszego z kolumny "COS" usunąć fraze "LA" czyli w kolumnie COS pozostanie wtedy "B".

PYTANIE 2:

Mam taką samą tabele jak wyżej ("ID","COS")
REKORDY:
1,"BLAA"

W rekordzie 1-wszym w kolumnie "COS" chciałbym zliczyć ilość liter A, (zwroci 2);
Tu od razu proszę o przykład bo kombinuje i nie wychodzi
Pozdrawiam.
Fifi209
REPLACE
dram
Jeszcze mam jedno pytanko poza konkursem.

Jak wygląda znak entera w MYSQL?
w niektórych językach jest to <br> bądź ^n a w HTML?
Fifi209
Wiesz co, zależy co później robisz z danymi. Jeżeli wyświetlasz na stronie to zapisujesz <br/> jeżeli w pliku to odpowiednio dla systemu: \n \r\n \r
dram
Najpierw zapisuje dane za pomocą ^n i wygląda to tak
bb
bc
bd

A następnie funkcją replace chce zabrać bc i razem z bc usunąć linijke aby nie została pusta

//
próbuje każdą znaną mi metodą to cały czas zostaje ten wiersz pusty sad.gif

edit 2:
Pytanie z poza konkursu jakoś poszło dało rade z \n
Natomiast pozostaje jedynie:
PYTANIE 2:

Mam taką samą tabele jak wyżej ("ID","COS")
REKORDY:
1,"BLAA"

W rekordzie 1-wszym w kolumnie "COS" chciałbym zliczyć ilość liter A, (zwroci 2);

I jeszcze jedno..
Chciałbym przepisać dane z tabeli do tabeli + dodać pare nowych danych NP.

1 tabela :
ID,COS
2 tabela:
ID,COS,BLA

teraz chciałbym przepisać dane z tabeli 1 do tabeli 2 wpisując w kolumne "BLA" tekst "123"
Fifi209
insert + select
croc
Cytat(Fifi209 @ 15.10.2011, 22:34:36 ) *
Jeżeli wyświetlasz na stronie to zapisujesz <br/>

O co chodzi z <br/>? HTML ma <br>, a XHTML ma <br /> - skąd się wziął pomysł na <br/>? Wielu tak zapisuje, ale czy to jest prawidłowo zapisany?
dram
insert + select
prosiłbym o przykład takiego zapytania jakie chciałem uzyskać post wcześniej. Próbuje próbuje i nic nie wychodzi sad.gif

Wykombinowałem takie zapytanie:
INSERT INTO `gangi_arch` VALUES(NULL,nazwa_gangu,poziom_gangu,doswiadczenie_gangu,nazwa_graczy,nazwa_ocze
kujacych_graczy,ilosc_zabojstw,status_oczekujacy,data_utworzenia,'DJ.Dr@M | ToMeK-rozwiazanie','16-10-2011-21-39-7') SELECT * from `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'

Nie śmiga:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * from `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'' at line 1
croc
Bo jest zepsute.

  1. INSERT INTO `gangi_arch` (pole1, pole2, pole3...) SELECT pole1, pole2, pole3 FROM `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'


Usuń VALUES i masz coś z tymi polami nie tak. I unikaj raczej * w INSERT SELECT.
dram
INSERT INTO `gangi_arch` (NULL,nazwa_gangu,poziom_gangu,doswiadczenie_gangu,nazwa_graczy,nazwa_oczekujacy
ch_graczy,ilosc_zabojstw,status_oczekujacy,data_utworzenia,'DJ.Dr@M | ToMeK-rozwiazanie','16-10-2011-21-39-7') SELECT nazwa_gangu,poziom_gangu,doswiadczenie_gangu,nazwa_graczy,nazwa_oczekujacych_gra
czy,ilosc_zabojstw,status_oczekujacy,data_utworzenia from `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'

Niestety nadal nic:
Tutaj tabele podaje dokładniej
"gangi"


"gangi_arch"




Nazwy pól niczym się nie różnią, nie mam pojecia co jest grane ,a nie chce robić to w bezmyślny sposób tj. najpierw wczytywać a potem znów kolejne zapytanie z wysyłaniem danych.
croc
Cytat(dram @ 16.10.2011, 22:40:10 ) *
Nazwy pól niczym się nie różnią, nie mam pojecia co jest grane

Ja widzę coś innego. Zobacz jakie bzdury masz wypisane w nazwach pól w INSERT.
dram
Racja była literówka jedna nie zauważyłem.. Jednak nie zmienia to faktu że występuje błąd w 2 linii w zapytaniu:
Kod
INSERT INTO `gangi_arch`
(NULL, // 2 linia
nazwa_gangu,
poziom_gangu,
doswiadczenie_gangu,
nazwa_graczy,
nazwy_oczekujacych_graczy,
ilosc_zabojstw,
status_oczekujacy,
data_utworzenia,
'DJ.Dr@M | ToMeK-rozwiazanie',
'16-10-2011-21-39-7')
SELECT nazwa_gangu,
poziom_gangu,
doswiadczenie_gangu,
nazwa_graczy,
nazwy_oczekujacych_graczy,
ilosc_zabojstw,
status_oczekujacy,
data_utworzenia
FROM `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'



Przecież nie jestem w stanie przypisywać określonego ID musi tu byc null aby auto increment zrobił swoje
croc
Nie, nie i jeszcze raz nie, kolego. Pisząc bzdury miałem na myśli NULL i wartości tekstowe. Nie możesz wstawić wartości do wartości smile.gif Zaznaczę Ci na czerwono to co masz źle. Aby wartość auto increment zrobiła swoje, po prostu ją pomijasz. Żeby natomiast wstawić konkretną wartość przy INSERT SELECT, wrzuć ją do SELECT. Czyli np. SELECT pole1, pole2, 'wartość', pole3 itd.

INSERT INTO `gangi_arch`
(NULL, // 2 linia
nazwa_gangu,
poziom_gangu,
doswiadczenie_gangu,
nazwa_graczy,
nazwy_oczekujacych_graczy,
ilosc_zabojstw,
status_oczekujacy,
data_utworzenia,
'DJ.Dr@M | ToMeK-rozwiazanie',
'16-10-2011-21-39-7')
SELECT nazwa_gangu,
poziom_gangu,
doswiadczenie_gangu,
nazwa_graczy,
nazwy_oczekujacych_graczy,
ilosc_zabojstw,
status_oczekujacy,
data_utworzenia
FROM `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'
dram
DZięki stary jestem na prawde amatorem ;P

Wykombinowałem coś takiego:
  1. INSERT INTO `gangi_arch`
  2. (nazwa_gangu,
  3. poziom_gangu,
  4. doswiadczenie_gangu,
  5. nazwa_graczy,
  6. nazwa_oczekujacych_graczy,
  7. ilosc_zabojstw,
  8. status_oczekujacy,
  9. data_utworzenia
  10. )
  11. SELECT
  12. nazwa_gangu,
  13. poziom_gangu,
  14. doswiadczenie_gangu,
  15. nazwa_graczy,
  16. nazwa_oczekujacych_graczy,
  17. ilosc_zabojstw,
  18. status_oczekujacy,
  19. data_utworzenia,
  20. 'DJ.Dr@M | ToMeK-rozwiazanie',
  21. '16-10-2011-21-39-7'
  22. FROM `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'

Oczywiście to nie może działać z przyczyny
1. Nie zgadza się ilość kolumn w insercie

To teraz jak tą wartość przepisać do insertu?

Pozdrawiam

/// EDIT
Haha! niesamowite.. Zrobiłem

Kod
INSERT INTO `gangi_arch`
(nazwa_gangu,
poziom_gangu,
doswiadczenie_gangu,
nazwa_graczy,
nazwa_oczekujacych_graczy,
ilosc_zabojstw,
status_oczekujacy,
data_utworzenia,
odrzucajacy,
data_usuniecia
)
SELECT
nazwa_gangu,
poziom_gangu,
doswiadczenie_gangu,
nazwa_graczy,
nazwa_oczekujacych_graczy,
ilosc_zabojstw,
status_oczekujacy,
data_utworzenia,
'DJ.Dr@M | ToMeK-rozwiazanie',
'16-10-2011-21-39-7'
FROM `gangi` WHERE `nazwa_gangu` = 'Dram TEAM'


Czy to tak powinno wyglądać?
croc
Dokładnie tak, brawo Lkingsmiley.png

EDIT
Tylko data jakoś dziwnie sformułowana tongue.gif Jaki jest format pola data_usuniecia? Bo jeśli datetime, to pamiętaj o formacie RRRR-MM-DD GG:MM:SS.
dram
Cytat(croc @ 18.10.2011, 00:45:49 ) *
Dokładnie tak, brawo Lkingsmiley.png

EDIT
Tylko data jakoś dziwnie sformułowana tongue.gif Jaki jest format pola data_usuniecia? Bo jeśli datetime, to pamiętaj o formacie RRRR-MM-DD GG:MM:SS.


Obydwa pola mają takąsamą formułe dzien,miesiac,rok,godzina,minuta,sekunda

Wszystko odzielone myślnikami
croc
Lepiej skorzystaj z pola datetime - nie ma sensu przechowywać daty jako tekst z co najmniej dwóch powodów:
  1. Twój string zajmuje od 14 do 19 bajtów (w zależności od tego czy dana wartość jest jedno- czy dwucyfrowa), a pole datetime zajmuje 8 bajtów.
  2. Datetime umożliwia łatwe sortowanie wg dat. z Twoim formatem tego nie wykonasz.
dram
Wybacz ,że tak piszę, ale w jaki sposób aktualnie mógłbym przekonwertować te daty na format datetime oraz jak na przyszłość wykonywać zapytania tak aby były zapisane w tym formacie?
croc
Polem datetime posługujesz się tak jak zwykłym stringiem. Inny jest sposób zapisu daty - myślę, że sobie poradzisz.
dram
Chyba mi się udało korzystając z waszej(jak narazie twojej) pomocy zadam jeszcze jedno pytanie:

Zdarza się czasami że do bazy dodam nową kolumne i niestety ale w tym przypadku:
  1. while($ilosc_rekordow = mysql_fetch_row($zapytanie_1_w)){

$ilosc_rekordow[ktory] - bedzie wskazywać nieprawidłowo.

Przewertowalem dokumentacje w poszukiwaniu czegoś al'a FIELD to num jednak nie znalazłem tj. chodzi mi aby po nazwie kolumny zwrócić jej numer aby można było robić operacje kodem wyżej.


Pozdrawiam
croc
Lepiej zapomnij o mysql_fetch_row i przerzuć się na mysql_fetch_assoc lub jeśli masz się czuć pewniej - mysql_fetch_array. Poczytaj o tych funkcjach.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.