PHP + mysql problem

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Luzak
Posty: 4
Rejestracja: wt kwie 12, 2005 2:15 pm

PHP + mysql problem

Post autor: Luzak »

Mam problem
[php]<?php
if( tep_db_fetch_array( $statusbirthday_query ) == null )
{
echo 'Nie wysłane';

}
else
{
$message = '';

while ( $statusbirthday = tep_db_fetch_array( $statusbirthday_query ))
{
echo 'cze';
if( $geburtstag['customers_id'] == $statusbirthday['customer_id'])
{

if($statusbirthday['used_time'] == date("Y-m-d H:i",time()) || $statusbirthday['birthday_status'] == 1)
{
$message = 'Wysłane';
$sendbirthday = true;
break;
}
else
{
$message = 'Nie wysłane';
break;
}
}
}
echo $message ;
}

?>
/php]

tak wyglada zapytanie :
[php]<?php
$statusbirthday_query = tep_db_query("SELECT customers_id , used_time , birthday_status FROM customers_birthday");

?>[/php]

Problem tkwi w tym ze jeśli dodaje recznie jeden rekord do bazy customers_birthday to funckcja while nie wykrywa żadnego rekordu poprostu nie działa , ale gdy dołoże jeszcze jeden rekord wtedy widzi ten nowo dodany a tego pierwszego nie widzi , w czym tkwi problem ??[/img]
adax2000
Nowy
Nowy
Posty: 31
Rejestracja: ndz kwie 24, 2005 10:11 pm

Re: PHP + mysql problem

Post autor: adax2000 »

instrukcja

Kod: Zaznacz cały

if( tep_db_fetch_array( $statusbirthday_query ) == null )
pobiera ci już pierwszy rekord z tabeli więc while pobiera drugi w kolejności (a gdy jest tylko jedna w tabeli to nic).

masz dwie opcje: najszybciej ulepszyć warunek if i zmienić while na do while
[php]<?php
if( !($statusbirthday = tep_db_fetch_array( $statusbirthday_query )) )
{ echo 'Nie wysłane'; } else {
$message = '';
do { echo 'cze';
if ($geburtstag['customers_id'] == $statusbirthday['customer_id'])
{ if($statusbirthday['used_time'] == date("Y-m-d H:i",time()) || $statusbirthday['birthday_status'] == 1)
{$message = 'Wysłane'; $sendbirthday = true; break; }
else { $message = 'Nie wysłane'; break; }
}
} while ( $statusbirthday = tep_db_fetch_array( $statusbirthday_query ));
echo $message ;
}
?>[/php]

albo lepiej od razu zamienić ten if na while

[php]<?php
while ( $statusbirthday = tep_db_fetch_array( $statusbirthday_query )) {
$message = '';
echo 'cze';
if ($geburtstag['customers_id'] == $statusbirthday['customer_id'])
{ if($statusbirthday['used_time'] == date("Y-m-d H:i",time()) || $statusbirthday['birthday_status'] == 1)
{$message = 'Wysłane'; $sendbirthday = true; break; }
else { $message = 'Nie wysłane'; break; }
}
echo $message ;
} ?>[/php]
[/code]
ODPOWIEDZ