1

MySQL データベースに保存されている画像が取り込まれているリストに 8 つの製品画像がある製品ページがあります。すべての画像には ID が関連付けられており、価格、製品名、および説明も同じ ID に関連付けられています。

私がやろうとしていることの背後にある考え方は次のとおりです。ユーザーが 8 つの製品画像の 1 つをクリックすると、同じ画像と、その ID でデータベースに保存されているすべての情報を表示する「チェックアウト」ページにリダイレクトされます。

現時点では、画像の ID (url.com/checkout.php?id=1) を含むチェックアウト ページの URL があり、その ID の下に保存されているすべての情報を URL に取得する方法を見つけたいと考えていました。ページ上の呼び出された場所に表示されます。

製品ページのリストに画像を表示する私のphpコードは次のとおりです。

    // Grab the data from our template table 
            $sql = "select * from templates"; 
            $result = mysql_query($sql) or die ("Could not access DB: " . mysql_error()); 
            while ($row = mysql_fetch_assoc($result)) 
            { 
                echo "<li>"; 
                echo "<a class=\"caption\" href=\"purchase.php?id=\"" . $row['id'] . ">"; 
                // Note that we are building our src string using the ID from the database 
                echo "<img src=\"http://URL-REMOVED.com/file_display.php?id=" . $row['id'] . "\" />"; 
                echo "<span>"; 
                echo "<big>" . $row['name'] . "</big>"; 
                echo $row['description']; 
                echo "</span>"; 
                echo "</a>"; 
                echo "</li>"; 

            }  

クリックされた製品の情報を収集するはずのphpコードを次に示します(収集しません)。

    if (isset($_GET['id'])) 
        $id=$_GET['id']; 
    else 
         $id=1; 

    if (isset($_GET['action'])) 
        $action=$_GET['action']; 
     else 
        $action="empty"; 


    switch($action){ 

        case "add": 

        if($_SESSION['cart'][$id]) 
           $_SESSION['cart'][$id]++; 
        else 
            $_SESSION['cart'][$id]=1; 

         break;     

        case "remove": 

        if($_SESSION['cart'][$id]) 
       { 
           $_SESSION['cart'][$id]--; 

           if($_SESSION['cart'][$id]==0) 
    unset($_SESSION['cart'][$id]); 
           } 

          break;     

          case "empty": 
         unset($_SESSION['cart']); 

         break;     
         } 

 //Display Cart 

      if(isset($_SESSION['cart'])) { 

            $total=0; 
            foreach($_SESSION['cart'] as $id => $x) { 
            $result=mysql_query("select image,name,price,description from templates WHERE id=$id"); 
            $myrow=mysql_fetch_array($result); 
            $image=$myrow['image']; 
            $name=$myrow['name']; 
            $price=$myrow['price']; 
            $description=$myrow['description']; 

      }  
    }

そして、ここに情報が表示されるはずの実際の HTML/PHP があります。

  <a class="caption" href="checkout.php"> 
            <img src="http://URL-REMOVED.com/file_display.php?id=<?php $myrow['id'] ?>"/> 
            <span> 
                <big> 
                    <strong><?php $myrow['name'] ?></strong> 
                </big> 

                <div class="price"><?php $myrow['price'] ?></div> 
            </span> 
        </a> 
    </div> 
    <div id="info_form_container"> 
    <div class="product_info"> 
        <div class="control-group"> 
            <strong>Template Name:</strong>  
            <?php $myrow['name'] ?> 
        </div> 

        <div class="control-group"> 
            <strong>Template Description:</strong> 
            <?php $myrow['description'] ?> 
        </div> 

        <div class="control-group"> 
            <strong>Template Price: </strong> 
            <?php $myrow['price'] ?> 
        </div> 
    </div>

これが最善の方法であるかどうかは本当にわかりませんか?しかし、私は間違いなく画像をデータベースに保存したいと思っており、IDを使用してそれらを呼び出したいと思っています...

どうすればこれを達成できますか?コードのどこが間違っていますか?

4

1 に答える 1

0

編集:あなたの質問を初めて理解したとは思いません。これを使用して製品のリストを生成し、接続情報を更新してみてください。これが機能する場合は、以下の方法を使用して変数をサニタイズし、接続情報を別の場所に保存します

<?php
    $mysqli_connection = new mysqli("localhost", "username", "password", "database");
    $sql = "SELECT * FROM templates"; 
    $result = $mysqli_connection->query($sql);
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 

        $id = $row['id'];
        $name = $row['name'];
        $description = $row['description'];

        echo '<li>'; 
        echo '<a href="purchase.php?id='.$id.'" class="caption">'; 
        echo '<img src="http://URL-REMOVED.com/file_display.php?id='.$id.'" />'; 
        echo '<span>'; 
        echo '<big>'.$name.'</big>'; 
        echo $description; 
        echo '</span>'; 
        echo '</a>'; 
        echo '</li>';
    }
?>

OG 回答:

あなたがしていることは問題ないと思います..それは私が使用する方法です(私の方法は少しきれいに見えますが)。PHP 関数を実行して、取得した ID を使用して MySQL データベースにクエリを実行し、取得した情報をサイトにダンプし始めます。読みやすさを向上させ、スペルの混乱を減らすために、結果を変数に割り当ててエコーアウトすると役立つ場合があります$myrow['whatever']が、それは私にとって何よりも表面的なものです。

MySQL を修正して mysqli を使用するには、次のことを試してください。

$sql = "SELECT * FROM templates"; 
$result = $mysqli_connection->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 
    echo "<li>"; 
    echo "<a class=\"caption\" href=\"purchase.php?id=\"" . $row['id'] . ">"; 
    // Note that we are building our src string using the ID from the database 
    echo "<img src=\"http://URL-REMOVED.com/file_display.php?id=" . $row['id'] . "\" />"; 
    echo "<span>"; 
    echo "<big>" . $row['name'] . "</big>"; 
    echo $row['description']; 
    echo "</span>"; 
    echo "</a>"; 
    echo "</li>";
}  

そして、以下を使用して情報をサニタイズしてください。

$my_stuff = mysqli_connection->real_escape_string($row['that_stuff']);

また、必要に応じて、echo ステートメントを一重引用符 ('') で囲むこともできます。すべての二重引用符をエスケープする方が簡単になる場合があります..

したがって、これはおそらく私が行うことの大まかな例ですが、関数に分割して、いくつかのグローバル変数 (接続自体など) を作成することもできます。

<?php


    $mysqli_connection = new mysqli("localhost", "username", "password", "database");
    $sql = "SELECT * FROM templates WHERE id=$id"; 
    $result = $mysqli_connection->query($sql);
    // I'm assuming there is only one entry, so no while loop for me
    $row = $result->fetch_array(MYSQLI_ASSOC);

    $your_title = $mysqli_connection->real_escape_string($row['title']);
    $path_to_image = $mysqli_connection->real_escape_string($row['image']);
    $description = $mysqli_connection->real_escape_string($row['description']);
    $price = $mysqli_connection->real_escape_string($row['price']);

?>

<html>
    <head></head>
    <body>
        <h3><?php echo $your_title; ?></h3>
        <img src="<?php echo $path_to_image; ?>" />
        <ul>
            <li>Description: <?php echo $description; ?></li>
            <li>Price: <?php echo $price; ?></li>
            <!-- etc..-->
于 2012-08-23T18:14:23.313 に答える