konto usunięte

Temat: I need help!!

$edit = mysql_query("UPDATE `baza firmy` SET `NR` = '$_POST[NR]', `Mod`='$_POST[Mod]',`Typ`='$_POST[Typ]',`Kol`='$_POST[Kol]',`Nr VIN`='$_POST[Nr VIN]',`Dostawa`='$_POST[Dostawa]',`Wydanie 1`='$_POST[Wydanie 1]',`Zal`='$_POST[Zal]',`Wpłaty`='$_POST[Wpłaty]',`Cena kl`='$_POST[Cena kl]',`Wpłaty suma`='$_POST[Wpłaty suma]',`Nr fak`='$_POST[Nr fak]',`Cena RP`='$_POST[Cena RP]',`Korekta RP`='$_POST[Korekta RP]',`Nr fak RP`='$_POST[Nr fak RP]',`Data kompozycji`='$_POST[Data kompozycji]',`Nr kompozycji`='$_POST[Nr kompozycji]',`Data przelewu`='$_POST[Data przelewu]',`SEDRE`='$_POST[SEDRE]',`Trafic`='$_POST[Trafic]',`Akcja`='$_POST[Akcja]',`Data 10`='$_POST[Data 10]',`Data 32`='$_POST[Data 32]',`Data 45`='$_POST[Data 45]',`Kto`='$_POST[Kto]',`Opcje`='$_POST[Opcje]',`ORDRE`='$_POST[ORDRE]',`Od`='$_POST[Od]',`T_P`='$_POST[T_P]',`Nr umkli`='$_POST[Nr umkli]',`Data F`='$_POST[Data F]',`K1`='$_POST[K1]',`K2`='$_POST[K2]',`Data Zamówienia`='$_POST[Data Zamówienia]',`Nr Rej`='$_POST[Nr Rej]',`Gratisy`='$_POST[Gratisy]',`Gdzie`='$_POST[Gdzie]',`Cena kat`='$_POST[Cena kat]' WHERE `NR`='".$_POST['NR']."'");


Objaśniać działania chyba nie muszę. Walczę z tym od paru godzin. Identycznie mam załatwioną sprawę klientów. Zmieniły się tylko nazwy kolumn w tabeli gdzie są przechowywane dane. Przy próbie aktualizacji jestem częstowany takim komunikatem:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ']' in /www/test/sites/raporty/update.php  on line 18


Proszę. Pomóżcie.
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: I need help!!

Błąd jest w nazwie klucza tablicy asocjacyjnej

http://ideone.com/V1tU52Wu

Zobacz manual http://php.net/manual/en/reserved.variables.post.phpŁukasz Schabek edytował(a) ten post dnia 13.03.10 o godzinie 09:14
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: I need help!!

Raczej w tym, że tablice w stringach bierzemy w {}

$edit = mysql_query("UPDATE `baza firmy` SET `NR` = '{$_POST['NR']'}, `Mod`='{$_POST['Mod']}',...


to powinno rozwiązać ten konkretny problem.

[dodane]

Spacje z nazwach zmiennych post zamieniane są na podkreślenia _

[/dodane]

Osobnym problemem jest wstawianie wartości z tablicy $_POST bezpośrednio do zapytania.

http://xkcd.com/327/

Przepuść je najpierw przez mysql_real_escape_string() lub w jakiś inny sposób przefiltruj.Michał Jarosz edytował(a) ten post dnia 13.03.10 o godzinie 12:49

konto usunięte

Temat: I need help!!

Zaraz się zacznie kłótnia o bindowanie i sql injection ;)
Marcin: Przecież dostałeś 2 miesiące temu gotowy przykład na tym forum i jeżeli masz taki błąd, to z tego nie korzystasz :>

konto usunięte

Temat: I need help!!

Wiem, że pytałem o różne rzeczy. Wydawało mi się, że potrafię napisać zapytanie do bazy bez zaglądania ale widać poległem. Ale już się podnoszę i sprawdzę.
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: I need help!!

Michał Jarosz:
Raczej w tym, że tablice w stringach bierzemy w {}

Klamry nic nie dadzą, jeśli odwołanie sformułujesz w ten sposób

$_POST[Cena kat];

Taki zapis w PHP jest niepoprawny składniowo ;]
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: I need help!!

ALe bez klamer jest równie niepoprawny ;)

konto usunięte

Temat: I need help!!

Odświeżam.

Probuję zmusić szukajkę do działania. Ma w sumie 2 kryteria wyszukiwania: według nazwy miasta i kategorii.

Zmontowałem jedną wersję opartą na if'ach. Ale warunki się nakładają.

Dostałem od znajomego szablon selecta, który miał mi zastąpić If'y ale nie chce za bardzo trybić.

$result = mysql_query("SELECT * FROM test WHERE (('" . ($_POST['miasto']!="")? `miasto` = \"$_POST['miasto']!\"" : ") AND ('" . ($_POST['kategoria']!="")? `kategoria` = \"$_POST['kategoria']!\"" : ")");


Błąd odnosi się do znaku =. Coś tu musiałem nieźle pokręcić. Czy pomoże mi ktoś to wyprostować ?
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: I need help!!

Pokręciłeś, kod jest mega nieczytelny; jeśli nie robisz do tego dokumentacji, to po kilku tygodniach nie rozpoznasz własnego kodu ;)

Znajomy podesłał Ci działanie na operatorze trójargumentowym, który w tej postaci jest chyba nadużyciem.

Zapodaj tą wersję na ifach + zapytanie bez wstawionych zmiennych PHP, najlepiej takie które uruchamia się na bazie danych bez błędów.

konto usunięte

Temat: I need help!!

No ok.
Ale załóżmy:

1 if: wyszukaj według miasta
2 if: wyszukaj według kategorii
3 if: wyszukaj według godzin otwarcia
a następne if to byłaby kombinacja wyżej wymienionych.
czy dobrze rozumuję ?

konto usunięte

Temat: I need help!!

Zerknij na fulltext.. bo twoja wyszukiwarka nawet w salonie Ery nie zdziała poprawnie przy takim podejściu. ;)
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: I need help!!

Marcin P.:
czy dobrze rozumuję ?

Tak, lecz prościej będzie łączyć, czy jak kto woli konkatenować, poszczególne części zapytania ;)


$query = "SELECT * FROM foo WHERE 1 = 1 ";

if(!empty($_POST['miasto'])) {
$query .= "AND `miasto` = '" . $_POST['miasto'] . "' "; // zwróć uwagę na kropkę przy znaku równości
}
if(!empty($_POST['kategoria'])) {
$query .= "AND `kategoria` = '" . $_POST['kategoria'] . "'";
}
// itd.
Łukasz Schabek edytował(a) ten post dnia 17.03.10 o godzinie 21:40

konto usunięte

Temat: I need help!!

while($row = mysql_fetch_array($query))
{
echo "<tr>";
echo "<td>" . $row['nazwa'] . "</td>";
echo "<td>" . $row['miasto'] . "</td>";
echo "<td>" . $row['godziny_otwarcia'] . "</td>";
echo "<td>" . $row['kategoria'] . "</td>";
echo "</tr>";
}


a konkretniej na while się wykrzacza
mysql_fetch_array(): supplied argument is not a valid MySQL result resource


ja pierdziele. chyba dam se spokój z tym, bo już mnie szlag trafia.
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: I need help!!

Nie wykrzacza się na while, w komunikacie błędu nie ma nic o while, jest wyraźne info że chodzi o funkcję mysql_fetch_array();

Czytałeś manual dla tej funkcji?
Jaki parametr przyjmuje?Łukasz Schabek edytował(a) ten post dnia 18.03.10 o godzinie 16:09

konto usunięte

Temat: I need help!!

Marcin P.:

a konkretniej na while się wykrzacza
mysql_fetch_array(): supplied argument is not a valid MySQL result resource


ja pierdziele. chyba dam se spokój z tym, bo już mnie szlag trafia.
Pewnie masz błędne zapytanie SQL, które nie zwraca wyniku i prze to pętla po "false" nie chce przejść ;) Zacznij od zrzucenia zapytania do stringa i przepuszczenia go przez MySQL Workbench'a, jak będziesz pewny, że zwraca wynik to szukaj dalej.
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: I need help!!

Stawiam na to, ze kolega ominął funkcję mysql_query() i próbuje wykonać mysql_fetch_array("select * from");Łukasz Schabek edytował(a) ten post dnia 18.03.10 o godzinie 16:36

Następna dyskusja:

mssql - replace na ntext ?...




Wyślij zaproszenie do