Avatar billede farhang Nybegynder
05. oktober 2006 - 13:56 Der er 5 kommentarer og
1 løsning

Relation mellem to tabeller

Kan man ikke skrive relation mellem to tabeller images og products, således:

<?
$sql = "SELECT * images.image_id, products.products_thumbnailimageurl from images, products WHERE products.products_thumbnailimageurl=images.image_id";
  $result = mysql_query($sql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result));
 
    echo "select name=\"products_thumbnailimageurl\" size=\"45\" /><option>";
    echo $row['images.id'] . "</option></select>";
      ?>
Avatar billede kinderaeg Nybegynder
05. oktober 2006 - 15:45 #1
Tjoh, relationen i sig selv kan godt anvendes, du skal bare lige af med stjernen, eller i det mindste sætte ',' efter den, når du vil udtrække flere felter.
Jeg ville dog nok vælge en join, i stedet for at samle tabellerne som du gør:

$sql = "SELECT * FROM products LEFT JOIN images ON products.products_thumbnailimageurl=images.image_id";
Avatar billede farhang Nybegynder
05. oktober 2006 - 15:58 #2
Kan jeg så putte image_id i min formular?
Avatar billede kinderaeg Nybegynder
05. oktober 2006 - 16:15 #3
Ja ja, hvis du bruger * henter du alle felter fra de to tabeller ud.

Jeg ved ikke om det er images_id du vil ha i din option, men du har skrevet images.id, og det kan man ikke.

Hvis du er i tvivl om, hvordan dit array ($row) ser ud, kan du skrive strukturen ud med:

print_r($row);

Så kan du evt se, hvad feltet du søger hedder.
Avatar billede farhang Nybegynder
05. oktober 2006 - 17:19 #4
er det forkert at skrive:

<?
$sql = "SELECT * FROM images LEFT JOIN products ON images.image_id=products.products_thumbnailimageurl";
  $result = mysql_query($sql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result));
 
?>
        <select name="products_thumbnailimageurl" size="1">
          <option value="<?php echo $image_id; ?>" selected="test"<?php
        echo $selected; ?>><?php echo $image_id; ?></option>
                </select>     

Jeg vil kun have image_id i min option?
Avatar billede farhang Nybegynder
05. oktober 2006 - 17:24 #5
Kan jeg ikke bruge foreach functionen?

<?php
  $link = mysql_connect("xxxxx", "xxxxx", "xxxxx")
    or die("Could not connect: " . mysql_error());
  mysql_select_db('xxxxx', $link)
    or die ( mysql_error());
  $imagessql = "SELECT * FROM images";
 
  $result = mysql_query($imagessql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result)) {
    $images[$row['image_id']] = $row['image_caption'];
  }

  switch ($_GET['action']) {
    case "edit":
      $productssql = "SELECT * FROM products
                  WHERE products_prodnum = '" . $_GET['id'] . "'";
      $result = mysql_query($productssql)
        or die("Invalid query: " . mysql_error());
      $row = mysql_fetch_array($result);
      $products_thumbnailimageurl = $row['products_thumbnailimageurl'];
      break;
     
    default:
      $products_thumbnailimageurl = "";
      break;
  }
?>
          <select name="products_thumbnailimageurl" size="1">
            <option value="<?php echo $products_thumbnailimageurl; ?>" selected>Select an actor...</option>
            <?php
  foreach ($images as $image_id => $image_caption) {
    if ($image_id == $products_thumbnailimageurl) {
      $selected = " selected";
    } else {
      $selected = "";
    }
?>
            <option value="<?php echo $image_id; ?>"<?php
        echo $selected; ?>>../images/<?php echo $image_id; ?>.jpg</option>
            <?php
  }
?>
        </select>
Avatar billede farhang Nybegynder
05. oktober 2006 - 17:53 #6
du får pointene, for det virker nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester