Zawarcie sql w PHP

0

Witam Serdecznie,

Tworzę system aukcji w którym po miniętym wcześniej określonym czasie dana aukcja staje się "unpublished"

Wygląda to w ten sposób

<?php
$a = $row->extra1;
$uy = $row->extra4;
$yu = $row->extra5;
$y = date('Y');
$m = date('m');
$d = date('d');
$h = date('H');
$i = date('i');
$difference = mktime($uy-1, $yu, 10, $m, $a, $y, 0) - time(); 

if ($difference < 0) $time = -$difference; else $time = $difference; 

$days = floor($time/86400); 
$hours = floor(($time-($days*86400))/3600); 
$mins = floor (($time-($days*86400)-($hours*3600))/60); 
$secs = floor ($time-($days*86400)-($hours*3600)-($mins*60)); 

if ($difference <= 0) { 
  echo 'Od zakończenia upłyneło ';


} else {
	echo $row->published;
  echo 'Do końca zostało ';

}
echo $days . ' dni ' . $hours . ' godzin ' .  $mins . ' minut ' . $secs . ' sekund'; // echowanie wartości.
echo '<br> Data zakoczenia: ';
echo   $uy-1 . ':' . $yu . ' ' . $a . '.' . $m . '.' . $y  ;
?>

Generalnie wszystko fajnie, pokazuje ile do końca oraz ile po zakończeniu.

W miejsce tam gdzie jest "od zakończenia upłyneło" chciałbym całkowicie to wywalić a wstawić formułę która zmieni w kolumnie tabeli published z "1" na "0" (ta operacja sprawi, że już ta aukcja nie będzie widoczna" ( w sql by to wyglądało CHYBA tak UPDATE nazwa_tabeli SET published=0

Nie wiem natomiast jak się do tego zabrać,

Uprzejmie proszę o pomoc lub wskazówkę

Pozdrawiam

1

Wykonaj podany kod sql i tyle?

Swoją drogą operacje liczenia daty można dużo szybciej i prościej wykonać przez obiekt dateTime, ewentualnie bibliotekę carbon.

0

Próbuję pod linijką "od zakończenia upłynęło" wstawić dodatkowe 3 linijki

$sql = "SELECT published FROM nazwa_tabeli";
mysql_query($sql);
echo $sql;

Oczywiście te linijki są w celu walidacji, czy to działa

Niestety nie dostaję żadnego odzewu,

Czym to może być spowodowane ??

0

Na pewno przestarzałą biblioteką do SQLa. Nie słyszałeś nigdy o gotowych funkcjach które można używać i nie pisać nadmiarowego własnego kodu, o tablicach czy o bibliotece choćby PDO do łączenia z bazą danych? Nie mówiąc już o obiektowym PHP skoro ma być to system aukcji

0

Hmm, operuję na cms joomla, to jest zaledwie jedna z modyfikacji

0

Oho to jak Joomla to dobrze się zaczyna :P jak wstawiasz kod w tym Twoim warunku to być może warunek nie jest spełniony. Zacznij od tego, od najprostszych przyczyn. Potem kop głębiej

0

Dziękuję za zainteresowanie @hapertown

Teraz sprawdzam i warunek zostaje spełniony, gdy minie czas wyświetla się echo " od czasu zakończenia minęło", natomiast gdy nie mija wykonuje się reszta czyli "do zakończenia pozostało"

0

To teraz proponuje wyrzucić tego IFa na chwilę i sprawdzić poprawność zapytania SQL i wykonania funkcji która to zapytanie realizuje. Jak zapytania i warunki będą ok to musi działać

0

Czy jeżeli stosuję taki kod i wywołuję go tak jak niżej "echo $sql" to powinno mi wypisywać już rekordy ? Bo obecnie na stronie echo przepisuje mi polecenie i wyrzuca " SELECT published from tabela"

<?php
if ($row->published = 1){
$sql = "SELECT published FROM tabela";
mysql_query($sql);
echo $sql;
}
?>

Ewentualnie inne narzędzie niż mysql_query wchodzi w grę?

0

Czyli działa jak powinno bo wypisujesz na ekran zmienną. Żeby pobrać wyniki z zapytania musisz posłużyć się mniej więcej czymś takim https://stackoverflow.com/a/7519684

0

No i prawidłowo, bo zwracasz kod wykonywalny. Pobierz rekordy jeszcze i dopiero zwróć je przez echo.

http://php.net/manual/pl/function.mysql-fetch-row.php

p.s mysql jest skasowane w php 7 jak by coś.

0

Chcąc pobrać dane dzięki podesłanym przez Was Panowie sposobom chyba odkryłem problem...

echo 'Nie można uruchomić zapytania: ' . mysql_error();

stwierdził, że : Nie można uruchomić zapytania: Access denied for user 'UNKNOWN_USER'@'localhost' (using password: NO),

Tak więc obstawiam, że to jest problem dlaczego te polecenia nie chcą działać :(

1

No jest, bo nie masz połączenia z bazą danych. Nieprawidłowe dane.

0

Natomiast dzięki $row->published mogę wyświetlić zawartość tabeli, czyli to oznacza że połączenie jest jakoś przekierowywane ?

0

Czekaj - to masz poprawne połączenie z bazą czy nie? Możesz pobrać wszystkie dane z tabeli i je wylistować?

0

Gdy chcę pobrać dane z tabeli używając Przykład 1 z :
https://secure.php.net/manual/pl/function.mysql-fetch-row.php
To wyskakuje mi błąd połączenia z bazą danych - więc tym sposobem pobrać danych nie mogę,
Natomiast gdy stosuję $row->published...$row->id i tak dalej... to wyświetla mi dane.

I tego w zasadzie nie rozumiem

0

Cały kod please

0

A czy istnieje możliwość by odwieść OP całkowicie od pomysłu i jakichkolwiek prób wykonania czegoś za pomocą funkcji mysql_* ? Użyj PDO. Przecież to nie trudne.

0

Biorąc pod uwagę to:

kvbala111 napisał(a):

Hmm, operuję na cms joomla, to jest zaledwie jedna z modyfikacji

...będzie ciężko :)

0

Wrzuć cały kod, bo też się pogubiłem już.

0

Ja już wiem w czym rzecz - sprawa dotyczy Joomli i nie ma zdefiniowanego wcześniej połączenia z bazą używając (deprecated) mysql_query. Trzeba użyć Joomlowych narzędzi (via JFactory) i całego mechanizmu obsługi baz danych via Joomla i będzie po problemie.

0

@Pabloss: @hapertown - Uprzejmie dziękuję za zainteresowanie - daliście mi wiele wskazówek - ostatecznie użyłem metody @hapertown i wszystko działa prawidłowo :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1