konto usunięte

Temat: problem ze spacjami

Od razu zaznaczę że nigdy nie miałem nic do czynienia z PHP :)

Mam następujący problem,

w bazie danych mam wpisane adresy email. Niektóre z nich są
wprowadzone z białymi znakami (jedna, dwie , trzy
spacje).

na formularzu: http://www.e-camping.net/pl/suggest/12106.html
pobiera mi adres email ze spacją (czyli tak jak zostało wprowadzone) -
"i...@nieuw-kempink.nl "

Jak będę chciał zaakceptować formularz, to skrypt tego nie zrobi bowiem widzi spację na końcu. W jaki sposób mogę ją automatycznie usunąć ?

Mój skrypt wygląda tak:

<div class="input">
<label><?php echo __('E-mail'); ?>:</label>
<?php echo object_input_tag($hotel, 'getEmail'); ?>
</div>

Próbowałem wstawić tam funkcję trim, ale nie działało - albo ją źle wstawiałem

Pozdrawiam

konto usunięte

Temat: problem ze spacjami

Jak dla mnie, to nie w tym miejscu powinnaś użyć trim() :P
Funkcja działa na łańcuchu znaków, a ten otrzymasz dopiero po wysłaniu formularza, czyli musisz jej uzyć w kodzie obsługującym odbiór danych.Sebastian Zaborowski edytował(a) ten post dnia 01.09.10 o godzinie 16:02

konto usunięte

Temat: problem ze spacjami

Innymi słowy musisz dać trim($_POST['email']) przed walidacją formularrza.

konto usunięte

Temat: problem ze spacjami

Funkcji trim nie wstawia się do elementu HTML. Zanim dane trafią do bazy to trzeba wywalić niepotrzebne spacje (no i przeprowadzić walidację, bo adres e-mail ze spacjami jest niezgodny ze specyfikacją).

Należy więc poszukać fragmentu kodu, w którym dokonywana jest walidacja danych wejściowych i tam dodać trim (który wywali tylko spacje z początku i końca) lub zastosować wyrażenie regularne do wywalenia spacji w całym ciągu:

preg_replace("/\s/g", "", $string)
Kamil Brenk edytował(a) ten post dnia 01.09.10 o godzinie 16:05

konto usunięte

Temat: problem ze spacjami

a jest jakiś magiczny sposób abym pozbył się tych spacji z bazy danych ? Oczywiście nie chciałbym wchodzić do 10.000 komórek i ręcznie wywalał wszystko

konto usunięte

Temat: problem ze spacjami

trim usuwa tylko spacje z początku i końca łańcucha,
ze środka to musisz użyć to co Kamil podał.

konto usunięte

Temat: problem ze spacjami

Dzięki za odpowiedź. Podsumowując je - funkcją trim - mogę się zabezpieczyć w przyszłości przed tymi spacjami.
Natomiast co mam zrobić z danymi które już spację posiadają? Jak to zmienić bezpośrednio w bazie ? Tzn chodzi mi o jakiś automatyczny sposób. Jeżeli nie, to czeka mnie nocka przed bazą ;)

konto usunięte

Temat: problem ze spacjami

Robert Karpiński:
Natomiast co mam zrobić z danymi które już spację posiadają? Jak to zmienić bezpośrednio w bazie ? Tzn chodzi mi o jakiś automatyczny sposób. Jeżeli nie, to czeka mnie nocka przed bazą ;)
Użyj tego samego wyrażenia regularnego co powyżej + regułka REGEXP dla SQL: http://dev.mysql.com/doc/refman/5.0/en/regexp.html#ope...

Jeśli to jednorazowa operacja to nic się nie stanie.

konto usunięte

Temat: problem ze spacjami

:) otwieram link i widzę coś czego nie rozumiem :)

spróbuje do tego podejść od d..y strony.
Jestem w bazie danych, filtruje sobie bazę

SELECT url
FROM `hotel`
WHERE `url` LIKE ' %'
LIMIT 0 , 30

Pokazuje mi interesujące mnie komórki. DAję zaznacz wszystkie i edycja. Niestety po kliknięciu w edycji otwiera mi już wszystkie komórki co wiąże się z zacięciem się kompa ....

Czy da się jakoś edytować te dane ręcznie ale żeby pokazywał mi np 30 rekordów tylko interesującej mnie komórki ?
Tomasz Zadora

Tomasz Zadora programuję

Temat: problem ze spacjami

Zrób prosty skrypt w PHP: zapytanie mysql do tabeli hotel, przejście przez każdy rekord (iteracja), likwidacja białych znaków w emailu, aktualizacja rekordu w bazie.

Nie jest to może optymalne wydajnościowo, ale w tym przypadku nie ma to dużego znaczenia, bo to jest path który ma być uruchomiony tylko raz...

Zakładając, że w tabeli "hotel" jest kolumna id będąca kluczem podstawowym to coś w rodzaju:


set_time_limit(0);
$res = mysqli_query("SELECT id, email FROM hotel");
while ($row = mysqli_fetch_assoc($res))
{
$row['email'] = preg_replace("/\s/", "", $row['email']);
mysqli_query("UPDATE hotel SET email = '".mysqli_escape_string($row['email')."' WHERE id = '".$row['id']."'");
}
Tomasz Zadora edytował(a) ten post dnia 01.09.10 o godzinie 19:19

konto usunięte

Temat: problem ze spacjami

Wystarczy zapodać te 3 zapytania SQLowe:

RENAME hotel TO hotel2;

CREATE TABLE hotel
SELECT id, REPLACE(url, ' ', '') AS url,[TUTAJ_WPISZ_WSZYSTKIE_TWOJE_POZOSTAŁE_KOLUMNY_OPRÓCZ_ID_URL_TABELI_HOTEL2]
FROM hotel2;

DROP TABLE hotel2;Paweł Jędrasiewicz edytował(a) ten post dnia 01.09.10 o godzinie 20:22

konto usunięte

Temat: problem ze spacjami

nie wystarczy zrobic update (sql) na wartosciach tabeli gdzie nalezy obciac te spacje ?
no i dodac trim (php) przed zapisem ?

pzdr

konto usunięte

Temat: problem ze spacjami

Paweł Jędrasiewicz:
Wystarczy zapodać te 3 zapytania SQLowe:

RENAME hotel TO hotel2;

CREATE TABLE hotel
SELECT id, REPLACE(url, ' ', '') AS url,[TUTAJ_WPISZ_WSZYSTKIE_TWOJE_POZOSTAŁE_KOLUMNY_OPRÓCZ_ID_URL_TABELI_HOTEL2]
FROM hotel2;

DROP TABLE hotel2;

To troche za skomplikowane dzialanie jak na taka prosta czynnosc. wystarczy zwykly Update. Nie widze absolutnie sensu w tworzeniu dodatkowych tabel etc etc.Tomasz Grzechowski edytował(a) ten post dnia 01.09.10 o godzinie 20:41
Marek H.

Marek H. Web developer

Temat: problem ze spacjami

Paweł Jędrasiewicz:
Wystarczy zapodać te 3 zapytania SQLowe:

RENAME hotel TO hotel2;

CREATE TABLE hotel
SELECT id, REPLACE(url, ' ', '') AS url,[TUTAJ_WPISZ_WSZYSTKIE_TWOJE_POZOSTAŁE_KOLUMNY_OPRÓCZ_ID_URL_TABELI_HOTEL2]
FROM hotel2;

DROP TABLE hotel2;Paweł Jędrasiewicz edytował(a) ten post dnia 01.09.10 o godzinie 20:22

A nie prościej tak:

UPDATE TABLE hotel SET url = REPLACE(url, ' ', '') WHERE url LIKE '% %'


Warunek WHERE można sobie darować, ale powinien nieco przyspieszyć operację.

konto usunięte

Temat: problem ze spacjami

Marek H.:
A nie prościej tak:

UPDATE TABLE hotel SET url = REPLACE(url, ' ', '') WHERE url LIKE '% %'


Warunek WHERE można sobie darować, ale powinien nieco przyspieszyć operację.

hehe ... dokladnie o to mi chodzilo ... mam wrazenie ze zbyt precyzyjnie nie ma sie co wypowiadac, niech ktos looknie do manuala i nauczy sie konstrukcji update.

pzdr

konto usunięte

Temat: problem ze spacjami

proponuje zrobić to propelem albo doctrine :)
Artur Świerc

Artur Świerc Programista PHP/Java

Temat: problem ze spacjami


UPDATE TABLE hotel SET url = TRIM(urL)


http://dev.mysql.com/doc/refman/5.1/en/string-function...

konto usunięte

Temat: problem ze spacjami

Tomasz Grzechowski:
Paweł Jędrasiewicz:
Wystarczy zapodać te 3 zapytania SQLowe:

RENAME hotel TO hotel2;

CREATE TABLE hotel
SELECT id, REPLACE(url, ' ', '') AS url,[TUTAJ_WPISZ_WSZYSTKIE_TWOJE_POZOSTAŁE_KOLUMNY_OPRÓCZ_ID_URL_TABELI_HOTEL2]
FROM hotel2;

DROP TABLE hotel2;

To troche za skomplikowane dzialanie jak na taka prosta czynnosc. wystarczy zwykly Update. Nie widze absolutnie sensu w tworzeniu dodatkowych tabel etc etc.Tomasz Grzechowski edytował(a) ten post dnia 01.09.10 o godzinie 20:41

IMHO Jeżeli tabela jest duża to update może okazać się wolniejsze niż utworzenie pomocniczej tabeli.

konto usunięte

Temat: problem ze spacjami

Paweł Jędrasiewicz:
IMHO Jeżeli tabela jest duża to update może okazać się wolniejsze niż utworzenie pomocniczej tabeli.

to zależy od silnika, indeksów, tego czy po operacji robisz delete / insert i wielu innych czynników

konto usunięte

Temat: problem ze spacjami

Przemysław R.:
Paweł Jędrasiewicz:
IMHO Jeżeli tabela jest duża to update może okazać się wolniejsze niż utworzenie pomocniczej tabeli.

to zależy od ...

Jak wszystko w IT. Nie ma uniwersalnej drogi.

Następna dyskusja:

Problem z php i excelem




Wyślij zaproszenie do