Avatar billede svjensen Nybegynder
12. februar 2004 - 22:26 Der er 1 løsning

Find automatisk værdien fra feltet der er primary key.

Ved hjælp af nedenstående, som jeg tidligere har fået hjælp til, viser jeg indholdet af et vilkårligt SQL kald. Det har jeg udbygget for at få fundet primary key, som jeg ønsker at bruge i forbindelse med at kunne redigere eller slette de enkelte rækker.
Så langt så godt.

Men jeg er endnu ikke velbevandret nok udi php, til at kunne gennemskue, hvordan jeg lige skal gøre. Mit problem opstår i den nederste del, hvor jeg i mit link skriver ...&row=... Her skulle row gerne være lig med indholdet i det felt der er tabellens primary key.

************SCRIPT***********
function ShowSQL($sqlstreng, $table){
  $res = mysql_query($sqlstreng) or die(mysql_error()." ".$sqlstreng);

$pri_found = false;
$res_key = mysql_query("EXPLAIN $table") or die(mysql_error()." EXPLAIN $table");
while ($row_key = mysql_fetch_assoc($res_key)) {
  if ($row_key['Key'] == 'PRI'){
    $pri_found = true;
    $pri_key = $row_key['Field'];
  }
}

if ($pri_found){
  echo 'Primary key is '.$pri_key;
}else{
  echo "<a href='dbadmin.php?action=create_key&table=$table'>You may not edit the content since there is no Primary key. Click here to create one.</a><br><br>";
}

if (mysql_num_rows($res)) {
  $first = true;
  echo "<table align=center border=1>";

  while ($row = mysql_fetch_assoc($res)) {
    if ($first){
      echo "<tr><td></td>\n";
      while (list($key, $val) = each($row)) echo "<th>".$key."</th>\n";
        echo "<td></td></tr>\n\n";
        reset($row);
        $first = false;
      }

      if ($pri_found){
        echo "<tr><td class=\"TDCenter\"><a href=\"dbadmin.php?action=edit_row&table=$table&row=&key=$pri_key\"><img src=\"images/blyant.gif\" border=0></a></td>\n";
      }else{
        echo "<tr><td></td>\n";
      }

      while (list($key, $val) = each($row)) echo "<td class=\"TDLeft\">".$val."</td>\n";
        if ($pri_found){
          echo "<td><a href=\"dbadmin.php?action=delete_row&table=$table&row=&key=$pri_key\" OnClick=\"return confirm('Are you sure you want to delete?');\"><img src=\"images/trashcan.gif\" border=0></a></td></tr>\n\n";
        }else{
          echo "<td></td></tr>\n\n";
        }
      }
      echo "</table>";
    }
}
Avatar billede fangel Nybegynder
12. februar 2004 - 23:06 #1
har engang lavet denne funktion:

---
/*
* Function:    findIndexKey
* Param:    string $database
* Param    string $table
* Returns    If there is a unique key:    array containing key and assoc value of the index key
*        Else:                boolean false
*/
function findIndexKey($database, $table){
  $key_resource = mysql_query("SHOW INDEX FROM " . $database . "." . $table);
  $key_data =    mysql_fetch_assoc($key_resource);
  if($key_data['Non_unique'] == 0 AND !empty($key_data['Column_name'])){
    /*
    * The table has a unique column - MySQL supplies the name so loop through fields to find the key for the field.
    */
    global $Fields;
    $assoc    = $key_data['Column_name'];
    for($i=0; $i<count($Fields); $i++)
      if($Fields[$i] == $assoc) break;
    $key = $i;
    return array('key' => $key, 'assoc' => $assoc);
  }
  else{
    /*
    * No unique column ! return false
    * :WARNING: it is always advised to have a unique key - The scripts "pretendst" so know what to do - but
    *          actually just takes the first field !
    */
    return FALSE;
  }
}
---

den kan du nok bruge ;)

Morten
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

IT-JOB