Php içinde Php nasıl kullanılır?

4 Cevap php

Can someone tell/show me how to use PHP inside PHP. I'm trying to make the URL of an image change depending on what value is in a MySQL database. Here's an example of what I'm trying to do. Bear in mind that $idx already has a value from the URL of the page.

<?php
$query  = "SELECT * FROM comment WHERE uname='$idx'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "<img src='' name='comm' width='75px' height='60px' id='mainimage' />";
}
?>

Nasıl kaynak değeri, görüntü için, farklı bir tablo geliyor yapmak istiyorsunuz?

4 Cevap

Sen while döngü içinde başka bir SQL sorgusu yapardım. Ben bunu koymak nasıl severim, "Php içeride Php", yani hemen hemen size ne var.

while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
  $image_query = "SELECT image_url FROM your_table";
  $image_result = mysql_query($image_query);
  $image = mysql_fetch_assoc($image_result);

  echo "<img src='" . $image['image_url'] . "' name='comm' width='75px' height='60px' id='mainimage' />";
}

Hala özgün sorgudan döngünün her tekrarında $result değişkeni kullanarak konum çünkü sorgu ve sonuç için değişken adları, özgün sorgudan farklı olduğundan emin olun. Yani burada ben "image_" ile öneki ettik.

Tek bir SQL sorgusu birden çok tablodan veri katılabilirsiniz. Bkz: http://www.w3schools.com/sql/sql_join.asp

Örnek:

SELECT column_name(s)
FROM table_name1
JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Diğer tablo accounts, denir ve uname birincil anahtar olabileceğini rastgele bir tahmin de varsayarak, bir JOIN verileri kapmak için ne yapabilirim birinde hem tablolar gidin. Genellikle satır başına ekstra sorgu yaparken çok daha hızlı olan tek bir sorguda yapmak istediğiniz ne sığabilecek

<?php
    $result = mysql_query(
        "SELECT comment.*, account.url AS imgurl ".
        "FROM comment JOIN account ON comment.uname=account.uname ".
        "WHERE comment.uname='".mysql_real_escape_string($idx)."'"
    );
?>
<?php while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { ?>
    <img src="<?php echo htmlspecialchars($row['imgurl']) ?>" alt="" class="mainimage" />
<?php } ?>

Notlar:

  • Eğer SQL sorgusunun içine eklemek metin kaçmak gerekir, yoksa ciddi güvenlik sorunları olsun ettik. mysql_real_escape_string kullanın veya Parametrelenmiş sorguları halledeyim;

  • bir HTML dizesi metin koyarak benzer, htmlspecialchars tabi veya diğer (daha az ciddi, ama yine de iyi değil) var güvenlik sorunları var;

  • Eğer (bu bir döngü içinde, olacak olan) birden fazla kez bir öğe üzerinde aynı id kullanmanız gerekir. Eğer gerçekten hiç img name kullanmak isterdim orada küçük bir sebep olsa da aynı, name <img> üzerine gider;

  • width="75px" px-birimi ölçümleri CSS değil HTML olarak bir öznitelik çalışmaz. Birimi, ya da, daha iyisi, CSS bir kural kümesi atlarsanız (.mainimage { width: 75px; height: 60px; }) hepsini tek seferde yapmak.

Nasıl kaynak değeri, görüntü için, farklı bir tablo geliyor yapmak istiyorsunuz?

Sadece farklı bir tablo sormak zorunda. Sen alt sorgu oluşturarak sormak (veya katılmak) veya döngü içinde ikinci bir sorgu oluşturabilirsiniz.