Alleen een bepaald gedeelte van database opvragen

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Hoi, ik zal jullie eerst het hele idee eventjes uitleggen. Ik wil graag dat gebruikers op mijn website downloads toe kunnen voegen, of in ieder geval dat ik het gemakkelijker kan doen dan handmatig de .php bestandjes aan te passen. Ik heb de volgende bestanden gemaakt:

posten
PHP:
<?php

///////////////////////////////////DATABASE GEGEVENS///////////////////////////////////

// Database gegevens hier

///////////////////////////////////END DB GEGEVENS///////////////////////////////////

  echo'
  <html>
   <head><title>dimitri-korsakov.com</title></head>
   <body>
    <form action="verwerkimage.php" method="POST">

     Title:<br><input type="text" name="name" /><br>

     DVD Cover:<br><input type="text" name="cover" /><br>

     Downloadlinks:<br><input type="text" name="links" /><br>

     Thumbnail 1:<br><input type="text" name="thumbnail1" /><br>
     Thumbnail 2:<br><input type="text" name="thumbnail2" /><br>
     Thumbnail 3:<br><input type="text" name="thumbnail3" /><br>
     Thumbnail 4:<br><input type="text" name="thumbnail4" /><br>

     INFO:<br><input type="text" name="nfo" /><br>

     <br />
     <input type="submit" value="Verzenden" name="submit" /><br /><br />
    </form>';
  

?>

verwerken
PHP:
<?php

///////////////////////////////////DATABASE GEGEVENS///////////////////////////////////

// Database gegevens hier

///////////////////////////////////END DB GEGEVENS///////////////////////////////////

// Deze if statement controleert of er wel op de knop is gedruk en
// of er wel een waarde is ingevoerd.
if(isset($_POST['submit']) && isset($_POST['cover']))
{

  $invoegQuery = "INSERT INTO images SET id = '', name='".$_POST[name]."', cover='".$_POST[cover]."', links='".$_POST['links']."', thumbnail1='".$_POST['thumbnail1']."', thumbnail2='".$_POST['thumbnail2']."', thumbnail3='".$_POST['thumbnail3']."', thumbnail4='".$_POST['thumbnail4']."', NFO='".$_POST['nfo']."'";
  $invoegResult = mysql_query($invoegQuery) or die (mysql_error());
  echo "Success!</b><br /><br />
            Click <a href='index.php' >here</a> to return.";
}
else
{
  echo "<b>ERROR</b>";
}
?>

tonen
PHP:
<?php

///////////////////////////////////DATABASE GEGEVENS///////////////////////////////////

// Database gegevens hier.

///////////////////////////////////END DB GEGEVENS///////////////////////////////////


mysql_connect($host, $gebruikersnaam, $wachtwoord) or die (mysql_error()); 
$result = mysql_db_query($database, "SELECT * FROM images ORDER BY id desc") or die (mysql_error()); 

if (mysql_num_rows($result)) { 
   echo ""; 
   while ($qry = mysql_fetch_array($result)) { 
      echo "

<h2>$qry[name]</h2>

<ul><img src=$qry[cover] width=648 height=436></ul><br>

<ul>$qry[links]</ul><br>

<ul>$qry[thumbnail1]$qry[thumbnail2]$qry[thumbnail3]$qry[thumbnail4]</ul><br>

<ul>$qry[nfo]</ul>

"; 
   } 
}

?>

Laat de bestandsnamen jullie niet misleiden, het gaat hier om meer dan alleen images.

Wat ik allereerst graag wil is alleen deze gegevens van een bepaalde ''id'' opvragen. Als ik bijvoorbeeld een download toevoeg die de id 4 krijgt toegeschreven, terwijl er al 3 andere downloads in de database staan, dan wil ik alleen de 4de opvragen.

Bedankt voor het lezen en voor eventuele tips ;)
 
Ik neem aan dat je telkens de laatst toegevoegde download wilt tonen?
PHP:
//Coded by Tha Devil @ http://www.helpmij.nl
$nieuwsteQuery = "SELECT * FROM images ORDER BY id DESC LIMIT 1";
$nieuwsteResult = mysql_query($nieuwsteQuery) or die (mysql_error());
while($nieuwsteRow = mysql_fetch_array($nieuwsteResult))
{
  extract($nieuwsteRow); 
  echo '<h2>'. $name .'</h2>
         <ul><img src="'. $cover .'" width="648" height="436"></ul>
         <ul>'. $links .'</ul>
         <ul>'. $thumbnail1 .''. $thumbnail2 .''. $thumbnail3 .''. $thumbnail4 .'</ul>
         <ul>'. $nfo .'</ul>';
}
 
Laatst bewerkt:
Hmmm nou, wat ik echt zou willen is het volgende:

Op het moment heb ik alle downloads handmatig met PHP code toegevoegd, elke download heeft een eigen bestand dat wordt geinclude in de lay-out van de website op de volgende manier:

dl.php
PHP:
<?php include("header.php"); ?>

<table border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td valign="top">
    <table border="0" cellpadding="0" cellspacing="0">
<?php include("leftmenu.php"); ?>
<?php include("search.php"); ?>
<?php include("affiliates.php"); ?>
  <td width="18"></td>
  <td valign="top">
    <table border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td><img src="img/header_main.jpg" height="31"></td>
      </tr>
      <tr>
        <td valign="top" class="borderA" width="730">

<?php
$username = $_COOKIE['loggedin'];
if (!isset($_COOKIE['loggedin'])) die("You are not logged in, <a href=login.php>click here</a> to login or create an account.");
?>

<?PHP
         
                // Define our array of allowed $_GET values 
                $pass = array('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','27','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50'); 
             
                // If the page is allowed, include it: 
                if (in_array($_GET['id'], $pass)) { 
                include ($_SERVER['DOCUMENT_ROOT'] . '/dl/' . $_GET['id'] . '.php');  
            }  
                // If there is no $_GET['id'] defined, then serve the homepage: 
                elseif (!isset($_GET['id'])) { 
                include ($_SERVER['DOCUMENT_ROOT'] . '/downloadlist.php');  
            } 


?>

        </td>
      </tr>
    </table>
    </td>
  </tr>
</table>

<?php include("footer.php"); ?>

En dan staan alle downloads dus in apparte bestanden in de folder ''dl''. Hier is een voorbeeld van zo'n bestand:

5.php
PHP:
<h1>// NAAM HIER</h1>
<ul><img src=// LINK DVD HOES HIER width="648" height="436"></ul>
<h2>Download links</h2>

<ul>
// DOWNLOADLINKS HIER
</ul>

<h2>Screens</h2>

<ul>// THUMBNAILS HIER</ul>

<h2>NFO</h2>

<ul>// INFO HIER</ul>

Nu wil ik dit dus graag op dezelfde manier doen, maar dan via een MYSQL database zodat ik alleen de velden hoef in te vullen en de rest automatisch gaat. Ik hoop dat dit uberhaubt te verwezenlijken is :rolleyes:
 
Laatst bewerkt:
Moet volgens mij werken:

downloadlijst.php
PHP:
<?
//************************************************//
// Coded by Tha Devil @ http://www.helpmij.nl     //
// Description: Generate list of downloads        //
//              and get detail description        //
//************************************************//

// Als je zoveel script gaat maken is het makkelijker
// om in 1 bestand de configuratie te hebben
// in config.php staan de database gegevens
include("config.php");
////////////////////////////////////DB  STRUCTURE////////////////////////////////////
//
// Tabelnaam: downloads
// downloadID - INT - NOT NULL - auto_increment - Primary Key
// naam - VARCHAR - 100 - NOT NULL
// afbeelding - VARCHAR - 100 - NOT NULL
// link - VARCHAR - 255 - NOT NULL
// thumb1 - VARCHAR - 100 - NOT NULL
// thumb2 - VARCHAR - 100 - NULL
// thumb3 - VARCHAR - 100 - NULL
// omschrijving - VARCHAR - 255 - NOT NULL
////////////////////////////////////END STRUCTURE////////////////////////////////////
if(isset($_GET['id']) && is_numeric($_GET['id']))
{
  // Download details
  $detailQuery = "SELECT * FROM downloads WHERE downloadID='$_GET[id]'";
  $detailResult = mysql_query($detailQuery) or die (mysql_error());
  if(mysql_num_rows($detailResult) == 0)
  {
	  //Foutmelding bij een ingevoerde ID die niet bestaat
    echo "Geen resultaten gevonden.";
  }
  else
  {
    while($detailRow = mysql_fetch_array($detailResult))
    {
      extract($detailRow); 
      echo '<h2>'. $naam .'</h2>
           <ul><img src="'. $afbeelding .'" width="648" height="436"></ul>
           <ul>'. $link .'</ul>
           <ul>'. $thumb1 .''. $thumb2 .''. $thumb3 .''. $thumb4 .'</ul>
           <ul>'. $omschrijving .'</ul>';
    }
  }
}
else
{
  // Laatst toegevoegde download weergeven
  $nieuwsteQuery = "SELECT downloadID, naam FROM downloads 
                    ORDER BY downloadID DESC LIMIT 1";
  $nieuwsteResult = mysql_query($nieuwsteQuery) or die (mysql_error());
  while($nieuwsteRow = mysql_fetch_array($nieuwsteResult))
  {
    echo 'Laatst toegevoegde download: <a href="?id='. $nieuwsteRow['downloadID'] .'">
         '. $nieuwsteRow['naam'] .'</a><br /><br />';
  }
  //Volledige lijst weergeven
  $lijstQuery = "SELECT downloadID, naam FROM downloads
                 ORDER BY naam ASC";
  $lijstResult = mysql_query($lijstQuery) or die (mysql_error());
  while($lijstRow = mysql_fetch_array($lijstResult))
  {
    echo '<a href="?id='. $lijstRow['downloadID'] .'">'. $lijstRow['naam'] .'</a><br />';
  }
}
?>

edit: extra = in IF statement
 
Laatst bewerkt:
Ik heb bovenstaand script aangepast zodat hij zou moeten kloppen (ik test hem lokaal) maar ik krijg de volgende error als ik het bestand open:

Fatal error: Can't use function return value in write context in C:\Program
Files\xampp\htdocs\downloadlijst.php on line 29
 
Even een extra = bij de if statement zetten, het is nu een toewijzing maar het moet juist een vergelijking zijn...

PHP:
  if(mysql_num_rows($detailResult) == 0)
  {
      //Foutmelding bij een ingevoerde ID die niet bestaat
    echo "Geen resultaten gevonden.";
  }
 
Geweldig.. deze werkt zo te zien helemaal top, thx! :D :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan