Avatar billede farhang Nybegynder
22. august 2007 - 16:12 Der er 8 kommentarer

Udskrive arrays gemt i mysql i en multiple menu/list formular

Hej,

Jeg har nogle arrays i mysql, som jeg gerne udskrive i en multiple menu/list formular (dvs. at en til flere af de valgte arrays skal vedblive markeret og resten af de ikke valgte arrays muligheder umarkeret).

Min insert ser sådan ud:

<?
@$userID = $_POST['userID'];
@$jobtypeID = '*'.implode('*',$_POST['jobtypeID']).'*';
if($_POST[action] =="add")
{
        mysql_query("INSERT jobbase SET userID ='$userID', jobtypeID ='$jobtypeID'") or die(mysql_error());
}
?>

Jeg vil hente dataene således:

<?php

  $jobtypesql = "SELECT * FROM jobtype ORDER BY sortering";
 
  $result = mysql_query($jobtypesql)
    or die("Invalid query: " . mysql_error());
  while ($row = mysql_fetch_array($result)) {
    $jobtype[$row['jobtypeID']] = $row['jobtypeNavn'];
  }

  switch ($_GET['action']) {
    case "edit":
      $usersql = "SELECT * FROM jobbase";
      $result = mysql_query($usersql)
        or die("Invalid query: " . mysql_error());
      $row = mysql_fetch_array($result);
      $jobtypeID = $row['jobtypeNavn'];
      break;
     
    default:
      $jobtypeID = "";
      break;
  }
?>
<select name="jobtypeID[]" multiple="multiple">
<option value="<?php echo $jobtypeID; ?>" selected>Vælg jobtype</option>
  <?php
  foreach ($jobtype as $jobtypeID => $jobtypeNavn) {
    if ($jobtypeID == $jobtypeNavn) {
      $selected = "$jobtypeID";
    } else {
      $selected = "";
    }
?>
<option name="jobtypeID" value="<?php echo $jobtypeID; ?>"<?php
        echo $selected; ?>><?php echo $jobtypeNavn; ?></option>
  <?php
  }
?>
</select>
Avatar billede jakobdo Ekspert
22. august 2007 - 17:00 #1
Du skulle meget gerne have flere inserts i din tabel.
Så en option kan bygges sådan op.

$query = mysql_query("SELECT * FROM jobtype ORDER BY sortering");
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query))
{
echo '<option value="'.$row['jobtypeID'].'">'.$row['jobtypeNavn'].'</option>';
}
}
Avatar billede farhang Nybegynder
22. august 2007 - 17:34 #2
Hej,

Jamen, jeg switcher to tabeller sammen nemlig jobbase og jobtype. Så henter jeg jobtypeID fra jobtype tabellen ind i jobbase tabellen.

Mine jobtypeID's i jobbase tabellen ser pt. sådan ud:

*2*3*4*5*

Hvad gør man i min tilfælde?
Avatar billede jakobdo Ekspert
22. august 2007 - 20:39 #3
Den forklaring forstod jeg ikke! :o)
Avatar billede dkfire Nybegynder
22. august 2007 - 21:03 #4
Det er rigtig rigtig dårligt og forkert at have flere værdi'er som referere til en anden tabel stående i en celle.
Det er ikke godt sql have værdier som står *2*3*4*5* i en række.
Du bliver nød til kun at have en værdi for hver række.
Avatar billede farhang Nybegynder
22. august 2007 - 21:27 #5
Må jeg spørge, hvorfor det er en dårlig idé?
Avatar billede jakobdo Ekspert
22. august 2007 - 21:33 #6
Fordi det ikke er sådan en database er tiltænkt.
Forstil dig du skal finde noget med jobtypeID = 3
Så skal du først alle rækkerne igennem og herefter ligger i tekst-strengen *2*3*4*5* osv..
Hvis du har et felt med:
jobtypeid = 3
userid = 1

jobtypeid = 2
userid = 1

Kan man nøjes med at tage alle rækker hvor jobtypeid = 3.

Du bør måske lære lidt om hvad en database er, og hvad ideen er med en database, det vil nok give dig en bedre forståelse, når du udvikler applikationer. :o)
Avatar billede farhang Nybegynder
22. august 2007 - 21:47 #7
Ja, tak.

Jeg lære ved at prøve mig frem. ;-) Det er fordi jeg har en omfattende tabel jobbase med mine brugeres profiler. og tabellen jobtype, som indeholder de jobtyper der nu findes og som kommer flere af med tiden. For at undgår besvær i fremtiden, hvis jobtyperne skulle ændres lavede jeg to tabeller.

Hvad vil du råde mig til?

Forresten kan jeg ikke gør sådan:

$str = explode(", ",$jobtypeID);
$numOpts = count($str);
echo $numOpts;
for($i = 0; $i < count($str); $i++){
    echo "$i = $str[$i] <br />";
}
?
Avatar billede jakobdo Ekspert
23. august 2007 - 07:49 #8
Jeg ville råde dig til at lave:

Tabel: brugere
Felter:
user_id
navn
osv...

Tabel: JobType
Felter:
jobtype_id
navn
osv...

Tabel: user_jobtype
Felter:
user_id
jobtype_id

Sådan ville den "rigtige" måde være at lave det på.
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