Avatar billede KFJ1972 Juniormester
09. august 2016 - 21:02 Der er 4 kommentarer og
1 løsning

Komma

Hejsa,

Jeg har et problem med et komma i følgende:

if($fc_conn) {
  $i = 1;
  while($fc_data = dbarray($fc_result)) {
  $fc_user = dbarray(dbquery("SELECT user_name FROM ".DB_USERS." WHERE user_id=" . $fc_data['userid']));
 
  if ($i != $fc_conn) { echo "<font color=black><a href='".BASEDIR."profile.php?lookup=".$fc_data['userid']."' class='side'>".$fc_user['user_name']."</a>,\n</font>"; }

  else if ($fc_conn > ($fc_conn-1)) { echo "<font color=black> og <a href='".BASEDIR."profile.php?lookup=".$fc_data['userid']."' class='side'>".$fc_user['user_name']."</a>\n</font>"; }

  else { echo "<a href='".BASEDIR."profile.php?lookup=".$fc_data['userid']."' class='side'>".$fc_user['user_name']."</a> \n"; }

  $i++;
  }
}

Resultatet bliver:
Navn1, Navn2, og Navn3 deltager i chatten lige nu

Jeg ville gerne slippe for , (komma) efter Navn2.

Nogle gode idéer til hvordan jeg kommer udenom dette komma?

På forhånd mange tak.
Avatar billede olsensweb.dk Ekspert
09. august 2016 - 21:33 #1
hvis du istedet for at udskrive direkte, men lagde dem i en string, kunne du fjerne den sidste charakter med substr

substr($str, 0, -1);

(utested)

if($fc_conn) {
  $i = 1;
  $str="";
  while($fc_data = dbarray($fc_result)) {
  $fc_user = dbarray(dbquery("SELECT user_name FROM ".DB_USERS." WHERE user_id=" . $fc_data['userid']));
 
  if ($i != $fc_conn) { $str .= "<font color=black><a href='".BASEDIR."profile.php?lookup=".$fc_data['userid']."' class='side'>".$fc_user['user_name']."</a>,\n</font>"; }

  else if ($fc_conn > ($fc_conn-1)) {
    $str = substr($str, 0, -1);   
    $str .= "<font color=black> og <a href='".BASEDIR."profile.php?lookup=".$fc_data['userid']."' class='side'>".$fc_user['user_name']."</a>\n</font>"; }

  else { $str .=  "<a href='".BASEDIR."profile.php?lookup=".$fc_data['userid']."' class='side'>".$fc_user['user_name']."</a> \n"; }

  $i++;
  }
  echo $str;
}
Avatar billede arne_v Ekspert
10. august 2016 - 00:28 #2
Der er flere mystiske ting i den her kode.

Eksempel:

if ($fc_conn > ($fc_conn-1))

Det test vil altid vaere sandt!?!?
Avatar billede arne_v Ekspert
10. august 2016 - 02:29 #3
I det hele taget synes jeg at koden er svaer at laese.

Eksempel paa andet approach:


<?php
define('BASEDIR', '');

function get_users_from_database() {
    // dummy implementation - replace with real database code:
    return array(array('user_id' => 1, 'user_name' => 'Navn1'),
                array('user_id' => 2, 'user_name' => 'Navn2'),
                array('user_id' => 3, 'user_name' => 'Navn3'));
}

function build_user_url($user_id) {
    return BASEDIR . "profile.php?lookup=$user_id";   
}

function build_user_link($user_id, $user_name) {
    $url = build_user_url($user_id);
    return "<font color='black'><a href='$url'>$user_name</a></font>";
}

function human_language_implode($glue, $lastglue, $a) {
    if(count($a) == 0) {
        return '';
    } else if(count($a) == 1) {
        return $a[0];
    } else {
        return implode($glue, array_slice($a, 0, count($a) - 1)) . $lastglue . $a[count($a) - 1];
    }
   
}

function build_user_list($all_users) {
    $user_list_array = array_map(function($user) { return build_user_link($user['user_id'], $user['user_name']); }, $all_users);
    return human_language_implode(",\r\n", " og\r\n", $user_list_array);   
}

$all_users = get_users_from_database();
$user_list = build_user_list($all_users);
echo $user_list;
?>


Output:

<font color='black'><a href='profile.php?lookup=1'>Navn1</a></font>,
<font color='black'><a href='profile.php?lookup=2'>Navn2</a></font> og
<font color='black'><a href='profile.php?lookup=3'>Navn3</a></font>
Avatar billede KFJ1972 Juniormester
10. august 2016 - 22:18 #4
Hejsa,

Jeg har nu fået rodet med det hele dagen. Og det endte desværre ikke med at blive helt så "avanceret" som jeg gerne ville have haft det - mine evner rakte simpelthen ikke dertil.

Jeg har været gennem begge jeres eksempler mange gange og det hjalp mig en del, men opgav som sagt til sidst og lavede en noget mere enkel løsning (ja ved godt at det er venstrehåndsarbejde for jer, men svært for mig :-)).

Takker jer begge for at I ville hjælpe mig.
Fortsat god dag :-)
Avatar billede arne_v Ekspert
03. september 2016 - 13:47 #5
KFJ1972>

For en god orden skyld boer du nok lukke spoergsmaalet ved at acceptere et eller flere svar (du kan ogsaa selv ligge et hvis noedvendigt).
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

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