Ben temelde bir film veritabanı ve sorgular bir çift için ben seçildi kaç satır bilmeniz gereken üniversite için bu projeyi yapıyorum. Şimdi, ben bu ihtiyacı 2 durumlar var:
- Bir single movie bilgilerini görüntüler. Ben veritabanı kullanıcı tarafından seçilen filmi içeriyorsa seçilen satır sayısı bilmek istiyorum. Or is there a better solution for this?
- Bu seçilen film türleri vardır, ben dize sonuna bir ekleme olmadan
|
ayrılmış türler ile bir dize oluşturmak böylece kaç bilmek gerekir.
MySQL ile bu çok kolaydır, sadece veritabanını sorgulamak ve mysql_num_rows()
kullanabilirsiniz ama oci_num_rows()
SELECT deyimi için oldukça aynı çalışmıyor.
Ben OCI / PHP ile bulunan tek çözüm şudur:
if(is_numeric($mid) && $mid > 0) {
$stid = oci_parse($db,
'SELECT COUNT(*) AS NUM_ROWS
FROM movies
WHERE mid = '.$mid
);
oci_define_by_name($stid, 'NUM_ROWS', $num_rows);
oci_execute($stid);
oci_fetch($stid);
if($num_rows > 0) {
$stid = oci_parse($db,
'SELECT title, year, synopsis, poster_url
FROM movies
WHERE mid = '.$mid
);
oci_execute($stid);
$info = oci_fetch_assoc($stid);
$stid = oci_parse($db,
'SELECT COUNT(*) AS NUM_ROWS
FROM genres g, movies_genres mg
WHERE mg.mid = '.$mid.' AND g.gid = mg.gid'
);
oci_define_by_name($stid, 'NUM_ROWS', $num_rows);
oci_execute($stid);
oci_fetch($stid);
$stid = oci_parse($db,
'SELECT g.name AS genre
FROM genres g, movies_genres mg
WHERE mg.mid = '.$mid.' AND g.gid = mg.gid');
oci_execute($stid);
$genres_list = null;
while($row = oci_fetch_assoc($stid)) {
$genres_list .= $row['GENRE'];
if($num_rows > 1) {
$genres_list .= ' | ';
$num_rows--;
}
}
$Template->assignReferences(array(
'Index:LinkURI' => $link_uri,
'Movie:Title' => $info['TITLE'],
'Movie:Year' => $info['YEAR'],
'Movie:GenresList' => $genres_list,
'Movie:Synopsis' => $info['SYNOPSIS'],
'Movie:PosterURL' => $info['POSTER_URL'] // FIX: Handle empty poster link
));
$Template->renderTemplate('movieinfo');
} else {
// TODO: How to handle this error?
}
} else {
// TODO: How to handle this error?
}
Ama ben bunu sevmiyorum. Ben her zaman satırları saymak ve sonra gerçek verileri seçmek için 2 sorguları yapmak gerekir ve sadece satırları saymak için kod çok satır var.
Bu kod göstermek değil (ben daha iyi bir çözüm arıyorum nedeni henüz yapmadıysanız) ama ben de film yönetmenleri / yazarlar için aynı yapmanız gerekir.
Bunu gerçekleştirmek için daha iyi ve simpler çözüm var mı yoksa bu tek yoldur?
Ben bitene kadar getirme döngü ayırıcılar eklemek ve sonra dizesinden son ayırıcı kırpmak için PHP fonksiyonları kullanabilirsiniz, ancak bu proje için ben Diziler, GÖRÜŞLERİ, fonksiyonlar, prosedürler ve TETİKLEMELER kullanmak zorunda değilim ki. Bu yardım benim herhangi bir problem çözme musunuz?
Ben zaten onları kullanıyorum ne DİZİLER biliyorum ama ben nasıl yardımcı olabiliriz görmüyorum.
GÖRÜNÜMLERDE için, muhtemelen kodu basitleştirmek bu kadar (it's basically a stored query right?). Olmaz Fonksiyonlar, prosedürler ve tetikleyiciler için, bildiğim kadarıyla, onları anlamak, nasıl onlar da herhangi bir yardım olabilir göremiyorum.
Çözümler?