Bir php fonksiyonu mysql komutları içerir nasıl yapılır

7 Cevap php

Ben örnek get_menu() onu aramak basit bir menü fonksiyonu oluşturmak istiyorum

İşte benim geçerli kod.

<?php 
$select = 'SELECT * FROM pages';
$query  = $db->rq($select);
while ($page = $db->fetch($query)) { 
$id = $page['id'];
$title = $page['title'];
?>
<a href="page.php?id=<?php echo $id; ?>" title="<?php echo $title; ?>"><?php echo $title; ?></a>
<?php } ?>

Bu yapmak nasıl?

function get_menu() {
}

Bana haber ver.

7 Cevap

İşte bunun için işlevi:

function get_menu(&$db)
{
    $select = 'SELECT * FROM pages';
    $query  = $db->rq($select);
    $menu = '';

    while ($page = $db->fetch($query)) { 
    $id = $page['id'];
    $title = $page['title'];

    $menu .= '<a href="page.php?id=' . $id . '" &title="' . $title .'></a>'
    }

    return $menu;
}

.

Some Quick Corrections In Your Script:

  • Sen = sonra eksik id
  • Sen & sonra eksik title

Suggestion:

Eğer menü menü ihtiyaçlarınıza göre bir sınıf ve stil linkler verebilir :)

get_menu() $db nasılsa başvuru almak zorundadır. Muhtemelen en iyi ve en kolay yolu parametresi olarak bu başvuru geçmektir:

function get_menu(MyDatabaseHandler $db) {
  // code proposed by Sarfraz here
}

şimdi burada zaten bir hata var:

<a href="page.php?id=<?php echo $id; ?>" title="<?php echo $title; ?>"><?php echo $title; ?></a>

fark = sonra, id

çok dikkatli olamaz

İlk olarak, bir şey yapıyoruz kısmını ayırmak ve bir şeyleri göstermek için kullanılır.

İkincisi, alternative syntax görüntü bölümü için iyi görünüyor.

<?php
function get_menu(){
  $items = array();
  $select = 'SELECT * FROM pages';
  $query  = $db->rq($select);
  while ($page = $db->fetch($query)) { 
    $items[] = $page['id'];
  }
  return $items;
}

$menuItems = get_menu();
?>
<ul>
<?php foreach($menuItems as $item): ?>
  <li><a href="page.php?id=<?php echo $item['id']; ?>" title="<?php echo $item['title']; ?>"><?php echo $item['title']; ?></a></li>
<?php endforeach;?>
</ul>

Sarfraz yayınlanmıştır kodu geçersiz etiketleri çapa (yani bağlantılar) oluşturmak için gidiyor. Onlar da adları eksik olacak. Burada kısa / hızlı bir versiyonu:

function get_menu($db)
{
    $result = $db->rq('SELECT id,title FROM pages');
    $menu = '';

    while ($page = $db->fetch($result))
    { 
        $id = $page['id'];
        $title = $page['title'];

        $menu .= "<a href='page.php?id={$id}&title={$title}'>{$title}</a>\n";
    }

    return $menu;
}

Bunu yapmak kullanmak için:

echo get_menu($db);

Eğer elde edildi hata büyük olasılıkla işlevi veritabanı bağlantısı geçirerek değil kaynaklanan edildi.

NOT: Bu güvenlik çıkarına kullanıcıya veritabanı kimlik numaralarını göstermek için genellikle iyi bir fikir değildir; salyangozlar sayfaları tanımlamak için çok daha iyi ve SEO dostu vardır. Eğer kimliği var eğer alabilirsiniz çünkü Ayrıca, page.php dosyasında sayfa başlığını geçmek için herhangi bir ihtiyaç olmaması gerektiğini size veritabanından ihtiyacınız olduğunda. İşte bu düşünce ile kod:

function get_menu($db)
{
    $result = $db->rq('SELECT id,title FROM pages');
    $menu = '';

    while ($page = $db->fetch($result))
    { 
        $menu .= "<a href='page.php?id={$page['id']}'>{$page['title']}</a>\n";
    }

    return $menu;
}

sadece function get_menu() { sizin kod üzerinde ve } altına koymak

ya da bunun gibi?

function get_menu( $title, $id ) {
    $menu = '';

    $menu .= '<a href="page.php?id' . $id . '" title="' . $title .'></a>'

    echo $menu;
}
------------------------
   $select = 'SELECT * FROM pages';
    $query  = $db->rq($select);
    while ($page = $db->fetch($query)) { 
        $id = $page['id'];
        $title = $page['title'];

        get_menu($title, $id );
    }