Avatar billede baitianlong Nybegynder
06. juni 2004 - 19:04 Der er 14 kommentarer og
2 løsninger

interessant problem vedr. selector og tabulator

Hejsa.

Jeg har en database med felterne: name, org, email

Jeg vil have vist indholdet i en <selector> , men der er lige det med formatteringen. Felterne skal jo helst stå under hinanden i selectoren... Jeg havde håbet på at man kunne "snyde" med \T , men det virker ikke. Skal jeg virkelig til at kode noget med length på de forskellige poster, og fylde ud med det manglende antal "      mellemrum      " ?? Eller kan mySql måske gøre det for mig ??

Hvad gør jeg ? Min nuværende kode er denne:

<select size="20" name="email">
<option value="">- - - - - - - - - - - - - - - - - - -</option>
<?php
mysql_connect("localhost", "xxxxxxxxx", "xxxxxx");
mysql_select_db("legende_dk");
$result = mysql_query("SELECT * FROM newsemail ORDER by email ASC");
while($row = mysql_fetch_array($result)) {
  $option = $row['name']."\T".$row['org']."\T".$row['email'];
  print "<option value=\"".$row['email']."\">".$option."</option>";
}
?>
</select>
Avatar billede baitianlong Nybegynder
06. juni 2004 - 19:09 #1
For at forklare lidt mere, ikke at jeg håber det er nødvendigt, men så skal det helst se ud lign. dette i Selectoren

Jesper Blixenkrone-Møller          Legende.dk          email@email.dk
Hans Olsen                        Olsen inc.          olsen@olsen.dk
Ham der den anden der              Ham Der a/s        ham@der.as

Nu håber jeg det kommer til at se nogenlunde ud her : ))
Avatar billede baitianlong Nybegynder
06. juni 2004 - 19:10 #2
...det gjorde det ikke, men i ved hvad jeg mener : )
Avatar billede jakoba Nybegynder
06. juni 2004 - 19:19 #3
brug en html tabel med 3 kolonner og een række for hvert felt
<tr><td>Jesper Blixenkrone-Møller</td>
    <td>Legende.dk</td>
    <td>email@email.dk</td>
</tr>
<tr><td>Hans Olsen</td>
    <td>Olsen inc.</td>
    <td>olsen@olsen.dk</td>
</tr>
<tr><td>Ham der den anden der</td>
    <td>Ham Der a/s</td>
    <td>ham@der.as</td>
</tr>

osv
Avatar billede jakoba Nybegynder
06. juni 2004 - 19:21 #4
Ups. sorry. Det svar duer ikke indeni en select boks
Avatar billede baitianlong Nybegynder
06. juni 2004 - 19:22 #5
Det skal ind i en selector, så man kan markere een, og slette den, eller ændre den... og man kan jo ikke putte en tabel ind i en selector...
Jeg har lige forsøgt dette... Men det virker af en eller anden årsag ikke ?! Ideen var ellers god nok : ))

$result = mysql_query("SELECT * FROM newsemail ORDER by email ASC");
while($row = mysql_fetch_array($result)) {
  $tempnavn = $row['name'];
  $temporg = $row['org'];
  while(strlen($tempnavn) < 50) {
      $tempnavn = $tempnavn." ";
  }
  while(strlen($temporg) < 50) {
      $temporg = $temporg." ";
  }
  $option = $tempnavn.$temporg.$row['email'];
  print "<option value=\"".$row['email']."\">".$option."</option>";
}
Avatar billede roenving Novice
06. juni 2004 - 19:26 #6
Det nærmeste du kan komme er at bruge en monospaced font med mellemrum til at udfylde ...
Avatar billede baitianlong Nybegynder
06. juni 2004 - 19:34 #7
Åh ja.. Nu kan enhver jo se at jeg i sidstnævnte kodestump, jo rent faktisk prøver at putte mellemrum ind, men det virker ikke. Du har dog ret i at fonten i selectoren ikke er monospaced, og det er jo noget L...  - Bliver jeg så nødt til at lave tre selectors ved siden af hinanden... Det er jo ikke så smukt : )

-Og jeg vil stadig gerne have at vide hvorfor min sidstnævnte kode ikke virker. Den putter kun et melemrum ind :(
Avatar billede baitianlong Nybegynder
06. juni 2004 - 19:37 #8
Jeg kan se i "view source" for siden, når den genereres, at den rent faktisk putter mellemrum ind, men selectoren er ligeglad... ÆV !!

Nå, men så må det blive tre selectors.
Kan jeg gøre sådan at der bliver markeret en post i de to andre, når man markerer een i den ene ??    : ))
Avatar billede whatever Nybegynder
06. juni 2004 - 19:43 #9
Prøv dette;

$tempnavn = $tempnavn."&nbsp;";

$temporg = $temporg."&nbsp;";
Avatar billede roenving Novice
06. juni 2004 - 19:43 #10
Lidt javascript onchange kan gøre det:

<select name="sel1" onchange="syncSels(this)">
...

<select name="sel2" onchange="syncSels(this)">
...

<select name="sel3" onchange="syncSels(this)">
...

<script type="text/javascript">
var sels = ['sel1','sel2','sel3'];
function syncSels(sel){
  f = sel.form;
  for(i=0;sels.length>i;i++){
    if(sels[i]!=sel.name)
      f.elements[sels[i]].selectedIndex = sel.selectedIndex;
  }
}
</script>
Avatar billede baitianlong Nybegynder
06. juni 2004 - 20:05 #11
whatever -> Dit foreslag gjorde ingen ændring, men tak alligevel : ))

roenving -> Det lyder smukt, men er lidt mere kompliceret end det, tror jeg...

min kode nu er denne:

<td align="center">
<?php
mysql_connect("localhost", "xxxxxxxx", "xxxxxxxx");
mysql_select_db("legende_dk");
$result = mysql_query("SELECT * FROM newsemail ORDER by email ASC");
print "<select name=\"email\" size=\"20\">";
while($row = mysql_fetch_array($result)) {
    $tempmail = $row['email'];
    print "<option value=\"".$row['email']."\">".$tempmail."</option>";
}
print "</select>";
$result = mysql_query("SELECT * FROM newsemail ORDER by email ASC");
print "<select name=\"name\" size=\"20\">";
while($row = mysql_fetch_array($result)) {
    $tempnavn = $row['name'];
    print "<option value=\"".$row['email']."\">".$tempnavn."</option>";
}
print "</select>";
$result = mysql_query("SELECT * FROM newsemail ORDER by email ASC");
print "<select name=\"email\" size=\"20\">";
while($row = mysql_fetch_array($result)) {
    $temporg = $row['org'];
    print "<option value=\"".$row['email']."\">".$temporg."</option>";
}
print "</select>";
mysql_close();
?>
</td>

Hvordan fåe jeg det med markeringerne til at passe ind ?? Det er en lidt bøvlet måde, jeg laver det på (tror jeg), men value er den samme i de tre selectors (nemlig email adressen) uanset hvilken man roder i, så dit script burde egentlig virke. JEg kan bare ikke implementere det :)
Avatar billede roenving Novice
06. juni 2004 - 20:18 #12
-- det skal lige nævnes, at jeg ikke kan en ½ meter php, men algoritmerne kan jeg sagtens forholde mig til:

<td align="center">
<?php
mysql_connect("localhost", "xxxxxxxx", "xxxxxxxx");
mysql_select_db("legende_dk");
$result = mysql_query("SELECT * FROM newsemail ORDER by email ASC");
$selmail = "<select name=\"email\" size=\"20\" onchange=\"syncSels(this)\">
<option>Vælg mail</option>";
$selname = "<select name=\"name\" size=\"20\" onchange=\"syncSels(this)\">
<option>Vælg navn</option>";
$selorg = "<select name=\"org\" size=\"20\" onchange=\"syncSels(this)\">
<option>Vælg organisation</option>";
while($row = mysql_fetch_array($result)) {
    $selmail .= "<option value=\"".$row['email']."\">".$row['email']."</option>";
    $selname .= "<option value=\"".$row['email']."\">".$row['name']."</option>";
    $selorg .= "<option value=\"".$row['email']."\">".$row['org']."</option>";
}
print $selmail."</select>";
print $selname."</select>";
print $selorg."</select>";
mysql_close();
?>
</td>

-- og så et eller andet sted i din kode:

<script type="text/javascript">
var sels = ['email','name','org'];
function syncSels(sel){
  f = sel.form;
  for(i=0;sels.length>i;i++){
    if(sels[i]!=sel.name)
      f.elements[sels[i]].selectedIndex = sel.selectedIndex;
  }
}
</script>

Metoden forudsætter at du har dine selects inde i en form, men det har du vel i forvejen !-)
Avatar billede baitianlong Nybegynder
06. juni 2004 - 20:51 #13
Hvor er du dog smuk... 1000 gange tak for hjælpen - det virker perfekt : )))))

Det er sgu sejt !

Husk lige at svare, Roenving
Avatar billede roenving Novice
06. juni 2004 - 21:03 #14
Velbekomme '-)

-- men behold lige de fleste point selv, for det er for vildt at sætte så mange point på sådan et problem !-)
Avatar billede baitianlong Nybegynder
06. juni 2004 - 22:08 #15
ok
Avatar billede roenving Novice
06. juni 2004 - 23:24 #16
-- og tak for point ;~}
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