Avatar billede mrfunder Nybegynder
12. april 2004 - 12:20 Der er 46 kommentarer og
1 løsning

Hvor mange gange kan jeg bruge "else"?

Hejsa.. Jeg har denne dejlige vidunderlige kode *S*
Jeg har lavet et "bot-system" på en meget NEM måde..

Jeg har lavet det sådan at den tjekker nogle ord hvis de ikke er rigtige bruger den "else" og hvis de ER rigtige laver den en funktion som siger dem..

Men mit problem er at man skal kunne sige flere forskellige ting til min bot og han skal svare forskelligt.. så ville det være næmest at bruge nogle flere "else" - Men kan man det??

Min kode sådan som jeg har lavet den nu er:



if($action=="send") {
$select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
$row_info = mysql_fetch_array($select_info);


$select_userroom = mysql_query("SELECT rum FROM users WHERE(username='$username')");
$row_userroom = mysql_fetch_array($select_userroom);

$respondTo = array();
$respondTo[] = 'hej piccolo';
$respondTo[] = 'davs piccolo';
$respondTo[] = 'dav piccolo';
$respondTo[] = 'hejsa piccolo';
$respondTo[] = 'hejza piccolo';
$respondTo[] = 'davz piccolo';
$respondTo[] = 'hey piccolo';


if($row_userroom[rum] == 1 AND in_array(strtolower($mes),$respondTo)) {

$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");
mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('Hej $username','Piccolo','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";

print "<script>
parent.document.beskedform.mes.value='';
parent.say('Piccolo','Hej $username');
</script>";

} else {

$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','".time()."','$row_info[rum]','$row_info[vaerelse]')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";
}
Avatar billede mrfunder Nybegynder
12. april 2004 - 12:20 #1
Kan jeg bruger "else" flere gange fordi jeg skal jo lave flere bots :)

Forstår i?
Avatar billede fcknet Nybegynder
12. april 2004 - 12:22 #2
du skal bruge elseif
Avatar billede fcknet Nybegynder
12. april 2004 - 12:22 #3
Avatar billede mrfunder Nybegynder
12. april 2004 - 12:24 #4
Hehe.. Kan du give mig et lille eksempel.?
Altså lige nu bruger jeg:

if($action=="send") {
FUNKTION - Her tjekker den ord om det er til en bot

} else {

Og her skriver jeg normalt ud.. Men jeg ville gerne oprette noget mere hvor den tjekker ord INDEN den går ned til normal..:?

Forstår i?
Avatar billede mrfunder Nybegynder
12. april 2004 - 12:24 #5
Kan jeg bruge else if så mange gange som jeg vil?
Avatar billede taskmgr Nybegynder
12. april 2004 - 12:27 #6
Nemlig, du kan bruge elseif...

Men måske skulle du overveje at bruge en switch i stedet.

// ved brug af if og elseif:
if($i == 1){
    echo "i er lig med 1";
}elseif($i == 2){
    echo "i er lig med 2";
}elseif($i == 3){
    echo "i er lig med 3";
}

// ved brug af switch:
switch($i){
case 1:
    echo "i er lig med 1";
    break;
case 2:
    echo "i er lig med 2";
    break;
case 3:
    echo "i er lig med 3";
    break;
}

Statements i en switch-sætning bliver kun udført hvis der findes en 'case' der passer til det angivne udtryk ($i her). Altså - hvis du i ovenstående sætter $i til f.eks. 4, vil ingen af dem udføres. Hvis der derimod findes en case som passer til $i, så fortsætter PHP med at eksekvere statements indtil slutningen af switch-sætningen, eller indtil den møder et 'break' statement. Hvis man derfor ikke tilføjer et break statement i slutningen af en case, så bliver de eventuelle efterfølgende cases også udført.
Avatar billede mrfunder Nybegynder
12. april 2004 - 12:28 #7
Altså..

Jeg starter med at lave en "if"

Efter det kan jeg bruge "elseif" ligesom mange gange jeg vil bare jeg slutter af med en alm. "else"

Korrekt??
Avatar billede taskmgr Nybegynder
12. april 2004 - 12:28 #8
Du kan bruge elseif så mange gange det passer dig, men overvej som sagt at bruge en switch :)
Avatar billede mrfunder Nybegynder
12. april 2004 - 12:29 #9
Prøver jeg lige så..
Avatar billede hmortensen Nybegynder
12. april 2004 - 12:29 #10
If ($var == '1') {
gør noget
} elseif ($var == '2') {
gør noget andet
} elseif ($var == '3') {
gør noget tredje
}

Du kan lave lige så mange du vil, men hvis det er samme variable der skal tjekkes på bør du overveje at bruge switch:
http://dk2.php.net/manual/en/control-structures.switch.php
da mange if'er er 'langsomt'
Avatar billede mrfunder Nybegynder
12. april 2004 - 12:34 #11
Nu kommer der en lang kode.. Men hvad har jeg gjort galt i mine "else og elseif"'er her???





if($action=="send") {
$select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
$row_info = mysql_fetch_array($select_info);


$select_userroom = mysql_query("SELECT rum FROM users WHERE(username='$username')");
$row_userroom = mysql_fetch_array($select_userroom);

$respondTo = array();
$respondTo[] = 'hej piccolo';
$respondTo[] = 'davs piccolo';
$respondTo[] = 'dav piccolo';
$respondTo[] = 'hejsa piccolo';
$respondTo[] = 'hejza piccolo';
$respondTo[] = 'davz piccolo';
$respondTo[] = 'hey piccolo';


if($row_userroom[rum] == 1 AND in_array(strtolower($mes),$respondTo)) {

$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");
mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('Hej $username','Piccolo','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";

print "<script>
parent.document.beskedform.mes.value='';
parent.say('Piccolo','Hej $username');
</script>";



} elseif {




$select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
$row_info = mysql_fetch_array($select_info);


$select_userroom = mysql_query("SELECT rum FROM users WHERE(username='$username')");
$row_userroom = mysql_fetch_array($select_userroom);

$respondTo = array();
$respondTo[] = 'hvem ejer chatten?';
$respondTo[] = 'hvem er ejer af chatten';
$respondTo[] = 'hvem ejer chatten';


if($row_userroom[rum] == 1 AND in_array(strtolower($mes),$respondTo)) {

$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");
mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('Chatten er ejet af direktøren','Piccolo','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";

print "<script>
parent.document.beskedform.mes.value='';
parent.say('Piccolo','Chatten er ejet af direktøren');
</script>";

} else {

$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','".time()."','$row_info[rum]','$row_info[vaerelse]')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";
}
Avatar billede hmortensen Nybegynder
12. april 2004 - 12:36 #12
Der mangler et kriterie:
} elseif {
} elseif ($action == 'et eller andet') {
Avatar billede taskmgr Nybegynder
12. april 2004 - 12:38 #13
Du har vist misforstået syntaksen:

1. Du kan ikke lave flere if's efter hinanden (se mit eksempel)
2. Du kan ikke lave en elseif uden at tjekke et udtryk, ligesom du ikke kan lave en if uden at tjekke et udtryk.

Det kan måske forklares bedre sådan her:

//eksempel 1
if (expr) {
    statement
}

//eksempel 2
if (expr) {
    statement
} else {
    statement
}

//eksempel 3
if (expr1) {
    statement
} elseif (expr2) {
    statement
} else {
    statement
}

De tre ovenstående eksempler er herunder beskrevet med en abstraktion på godt dansk:

//eksempel 1
hvis (dette udtryk er sandt) {
    ... så udfør dette
}

//eksempel 2
hvis (dette udtryk er sandt) {
    ... så udfør dette
} ellers {
    ... så udfør dette
}

//eksempel 3
hvis (dette udtryk er sandt) {
    ... så udfør dette
} ellers hvis (dette udtryk er sandt)
    ... så udfør dette
} ellers {
    ... så udfør dette
}
Avatar billede dennismp Nybegynder
12. april 2004 - 12:39 #14
Du skal have din robot til at gør noget andet end kun at reagerer på hej?
Avatar billede taskmgr Nybegynder
12. april 2004 - 12:40 #15
} ellers hvis (dette udtryk er sandt) {

Sådan må det være ;)
Avatar billede dennismp Nybegynder
12. april 2004 - 12:44 #16
I så fald ville jeg nok gøre

define(BOT_GREETING, 0);
define(BOT_OWNER, 1);
$respondTo = array();
$respondTo[BOT_GREETING][] = 'hej piccolo';
$respondTo[BOT_GREETING][] = 'davs piccolo';
$respondTo[BOT_GREETING][] = 'dav piccolo';
$respondTo[BOT_GREETING][] = 'hejsa piccolo';
$respondTo[BOT_GREETING][] = 'hejza piccolo';
$respondTo[BOT_GREETING][] = 'davz piccolo';
$respondTo[BOT_GREETING][] = 'hey piccolo';
$respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
$respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
$respondTo[BOT_OWNER][] = 'hvem ejer chatten';

og så:

$found = null;
for($i=0;($i< count($respondTo)) && ($found === null);$i++) {
  if( in_array($mes,$respondTo[$i]) )
    $found = $i;
}

switch($found) {
  case BOT_GREETING:
          gør noget;
          break;
  case BOT_OWNER:
          gør noget andet;
          break;
}

(utestet)
Avatar billede dennismp Nybegynder
12. april 2004 - 12:49 #17
evt.

switch($found) {
  case BOT_GREETING:
          gør noget;
          break;
  case BOT_OWNER:
          gør noget andet;
          break;

  default: // Er null
          print "Jeg fatter ikke hvad du siger";
}
Avatar billede mrfunder Nybegynder
12. april 2004 - 12:52 #18
dvs.  default: // Er null
          print "Jeg fatter ikke hvad du siger";

Det kunne jeg egentlig godt putte min del af koden ind.. (Altså den hvor han IKKE går efter hvad man siger til bot'en.. Altså hvis ingen af ordene matcher mine $respondTo[BOT_GREETING][] osv?
Avatar billede dennismp Nybegynder
12. april 2004 - 12:56 #19
Ja.

Du kunne også lave en funktion der bliver kaldt pr. type af besked..

witch($found) {
  case BOT_GREETING:
          handleGreeting(..);
          break;
  case BOT_OWNER:
          handleOwner(..);
          break;
  default: // Er null
          handleUnknown(..);
}

og så have

function handleGreeting() {
  et eller andet her..
}

Så får du delt den kode lidt op.
Avatar billede mrfunder Nybegynder
12. april 2004 - 13:00 #20
> Dennismp, nu går det lidt for stærkt ;) Er lidt lost...
Man kan da "snakke" men den går ikke helt efter kommandoerne... Hvis jeg fkes bare skriver "test" så skriver den "hej kasper" selvom den bare skulle skrive "test" fordi test ikke er nogen "kommando"

Og nu til min laaaaange kode: :P








if($action=="send") {
$select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
$row_info = mysql_fetch_array($select_info);


$select_userroom = mysql_query("SELECT rum FROM users WHERE(username='$username')");
$row_userroom = mysql_fetch_array($select_userroom);

define(BOT_GREETING, 0);
define(BOT_OWNER, 1);
$respondTo = array();
$respondTo[BOT_GREETING][] = 'hej piccolo';
$respondTo[BOT_GREETING][] = 'davs piccolo';
$respondTo[BOT_GREETING][] = 'dav piccolo';
$respondTo[BOT_GREETING][] = 'hejsa piccolo';
$respondTo[BOT_GREETING][] = 'hejza piccolo';
$respondTo[BOT_GREETING][] = 'davz piccolo';
$respondTo[BOT_GREETING][] = 'hey piccolo';
$respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
$respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
$respondTo[BOT_OWNER][] = 'hvem ejer chatten';


$found = null;
for($i=0;($i< count($respondTo)) && ($found === null);$i++) {
  if( in_array($mes,$respondTo[$i]) )
    $found = $i;
}

switch($found) {
  case BOT_GREETING:



$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");
mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('Hej $username','Piccolo','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";

print "<script>
parent.document.beskedform.mes.value='';
parent.say('Piccolo','Hej $username');
</script>";



break;
case BOT_OWNER:




$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");
mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('Det gør direktøren','Piccolo','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";

print "<script>
parent.document.beskedform.mes.value='';
parent.say('Piccolo','Det gør direktøren');
</script>";



break;



$mes = htmlspecialchars($mes);
$mes = str_replace("'","&#039",$mes);

mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','".time()."','$row_info[rum]','$row_info[vaerelse]')");

print "<script>
parent.document.beskedform.mes.value='';
parent.say('$username','$mes');
</script>";
}
Avatar billede mrfunder Nybegynder
12. april 2004 - 13:04 #21
> Dennismp.. Det her vil jeg sgu gerne give 200 p for hvis det kommer til at virke :)
Avatar billede dennismp Nybegynder
12. april 2004 - 13:12 #22
Her et et forslag til hvordan du kan bygge det op..
http://dennis.moellegaard.dk/v4/php/488352.php?source=1
Avatar billede mrfunder Nybegynder
12. april 2004 - 13:14 #23
Skal jeg bare smide koden ind??

Kan jeg få det uden "linje-numre" på :)?
Avatar billede dennismp Nybegynder
12. april 2004 - 13:26 #24
Avatar billede dennismp Nybegynder
12. april 2004 - 13:27 #25
(skulle lige lave det) ..

Det burde være til at sætte ind, ellers må du kaste fejlene efter mig.
Avatar billede mrfunder Nybegynder
12. april 2004 - 13:34 #26
Koden er hermed smidt ind og den første fejl er konstateret ;D

Når jeg fkes. skriver: "Hvem ejer chatten" så svare botten korrekt nok.. Men hvis jeg bare skriver "test" som IKKE er nogen kommando den burde reagere på..  (dvs. ganske alm chat hvor bot'en bare skal holde mund" så skriver den: 'Hej $username'

Den skal kun skrive "'Hej $username'" Hvis jeg siger hej til den.. Så hvis jeg skriver "test" eller "letmælk" skal jeg SELV skrive teksten det skal bot´'en ike gøre en pind ved... det skal den faktisk bare ignorere hvis det ikke er nogle af de "magiske ord"





if($action=="send") {
    $select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
    $row_info = mysql_fetch_array($select_info);


    $select_userroom = mysql_query("SELECT rum FROM users WHERE(username='$username')");
    $row_userroom = mysql_fetch_array($select_userroom);

    // Initial work - common for all
    $mes = htmlspecialchars($mes);
    $mes = str_replace("'","&#039",$mes);

    // Print incoming message
    mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','".time()."','$row_info[rum]','$row_info[vaerelse]')");

    print "<script>
    parent.document.beskedform.mes.value='';
    parent.say('$username','$mes');
    </script>";

    // Disse linjer kunne evt smides over i en anden fil, som du include()'er.
    define(BOT_GREETING, 0);
    define(BOT_OWNER, 1);
    $respondTo = array();
    $respondTo[BOT_GREETING][] = 'hej piccolo';
    $respondTo[BOT_GREETING][] = 'davs piccolo';
    $respondTo[BOT_GREETING][] = 'dav piccolo';
    $respondTo[BOT_GREETING][] = 'hejsa piccolo';
    $respondTo[BOT_GREETING][] = 'hejza piccolo';
    $respondTo[BOT_GREETING][] = 'davz piccolo';
    $respondTo[BOT_GREETING][] = 'hey piccolo';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
    $respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten';

    $found = null;
    for($i=0;($i< count($respondTo)) && ($found === null);$i++) {
      if( in_array($mes,$respondTo[$i]) )
        $found = $i;
    }

    switch($found) {
        case BOT_GREETING:
            $reply = "Hej $username";
            break;

        case BOT_OWNER:
            $reply = 'Det gør direktøren';
            break;

        default:
            $reply = 'Jeg forstår dig ikke: ' .  $mes;
            break;
    }

    // Reply
    $reply = addslashes($reply);

    mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$reply','$username','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");

    print "<script>
    parent.document.beskedform.mes.value='';
    parent.say('Piccolo','$reply');
    </script>";
}
Avatar billede dennismp Nybegynder
12. april 2004 - 13:36 #27
erstate
    define(BOT_GREETING, 0);
    define(BOT_OWNER, 1);

med

    define(BOT_GREETING, 1);
    define(BOT_OWNER, 2);

og se om det hjælper
Avatar billede dennismp Nybegynder
12. april 2004 - 13:37 #28
Skal nok forklare hvorfor, hvis det altså hjælper :)
Avatar billede mrfunder Nybegynder
12. april 2004 - 13:40 #29
Nu kan jeg ikke skrive: "Hvem ejer chatten" så siger den bare hele tiden: Jeg forstår dig ikke

Det samme hvis jeg skriver "test" eller for den sags skld "mælk" så skriver den bare: Jeg forstår dig ikke?


> Den skal kun svare på mine spg når jeg skriver noget der er i "boksne" "altså mine gyldne ord" Ellers skal den bare holde bøtte :)
Avatar billede mrfunder Nybegynder
12. april 2004 - 13:41 #30
Forøvrigt skelner den ikke mere mellem stor og små i mine "gyldne spørgsmål" jeg skal skrive det direkte som det står i "boksne" $respondTo[BOT_GREETING][]
Avatar billede dennismp Nybegynder
12. april 2004 - 13:45 #31
erstat:
if( in_array($mes,$respondTo[$i]) )
med:
if( in_array(strtolower($mes),$respondTo[$i]) )

så burde du kunne gøre som inat.

Hvis den bare skal holde mund, når den ikke genkender din tekst, så har jeg opdateret mit link fra før, så den er mindre snaksagelig :).
Avatar billede mrfunder Nybegynder
12. april 2004 - 13:50 #32
Så fint så godt *S* :)
Den reagere på stort og småt.. Den svare når man spørger om ejer og siger hej til den.. Men så er der lige en ting mere.. Hvis man skriver "mælk" "ost" eller andet chat som botten ikke skal blande sig i er den rapkæftet ;)

"Hej Kasper" Hej Kasper.. Og sådan bliver den ved hvergang jeg siger noget :(
Avatar billede dennismp Nybegynder
12. april 2004 - 13:56 #33
Dvs den gentager hvad du siger?
http://dennis.moellegaard.dk/v4/php/488352.php?source=1

kig på linjerne 14-20 - der skriver den hvad der kommer ind (både via javascript og indsætter i databasen). Det kan være du skal fjerne noget af det (enten javascript eller database, eller begge) - jeg kender ikke dit system godt nok til at kunne sige hvad der er rigtigt..
Avatar billede mrfunder Nybegynder
12. april 2004 - 14:00 #34
14-20 - Der uploader den det i databasen jeg SELV Siger som bruger..

Nej den gentager ikke det jeg siger! Altså hvis jeg skriver fkes: "dennis er vist rå til php" Så svare den mig: "Hej $Username" Selvom at: "dennis er vist rå til php slet ikke er nogen kommando den skulle reagere på... Altså hvis teksten ikke står i $respondTo, så er det at jeg bare vil have bot'en til at holde mund
Avatar billede mrfunder Nybegynder
12. april 2004 - 14:00 #35
ang. 14-20 igen.. Den sætter sætningen ind i databasen sådan andre kan se den.. nr 2 den opdatere er min taleboble..
Avatar billede mrfunder Nybegynder
12. april 2004 - 14:06 #36
Kan du sige mig hvorfor den ikke holder bøtte når jeg skriver noget tilfældigt altså en IKKE KOMMANDO?

Det skulle vist være det sidste :-)
Avatar billede dennismp Nybegynder
12. april 2004 - 14:07 #37
og du har ændret:
define(BOT_GREETING, 1);
define(BOT_OWNER, 2);

?
Avatar billede mrfunder Nybegynder
12. april 2004 - 14:12 #38
Havde jeg glemt.. Det har jeg gjort nu.. MEEEN! (Lykken er ikke kommet endnu)

Når jeg spørger den om
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
    $respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten';


Så svarer den overhovedet ikke.. Kun det jeg spørger om der kommer frem..
Men jeg kan godt sige hej til den hvor den svarer og jeg kan godt chatte alm. uden at den siger hej nu.. Bare lige hvorfor den ikke svare på:

    $respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
    $respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten';
Avatar billede mrfunder Nybegynder
12. april 2004 - 14:15 #39
Min kode er forøvrigt, (Hvis det kan hjælpe):





if($action=="send") {
    $select_info = mysql_query("SELECT rum,status,vaerelse FROM users WHERE(username='$username')");
    $row_info = mysql_fetch_array($select_info);


    $select_userroom = mysql_query("SELECT rum FROM users WHERE(username='$username')");
    $row_userroom = mysql_fetch_array($select_userroom);

    // Initial work - common for all
    $mes = htmlspecialchars($mes);
    $mes = str_replace("'","&#039",$mes);

    // Print incoming message
    mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$mes','$username','$til','".time()."','$row_info[rum]','$row_info[vaerelse]')");

    print "<script>
    parent.document.beskedform.mes.value='';
    parent.say('$username','$mes');
    </script>";

    // Disse linjer kunne evt smides over i en anden fil, som du include()'er.
    define(BOT_GREETING, 1);
    define(BOT_OWNER, 2);
    $respondTo = array();
    $respondTo[BOT_GREETING][] = 'hej piccolo';
    $respondTo[BOT_GREETING][] = 'davs piccolo';
    $respondTo[BOT_GREETING][] = 'dav piccolo';
    $respondTo[BOT_GREETING][] = 'hejsa piccolo';
    $respondTo[BOT_GREETING][] = 'hejza piccolo';
    $respondTo[BOT_GREETING][] = 'davz piccolo';
    $respondTo[BOT_GREETING][] = 'hey piccolo';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
    $respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten';

    $found = null;
    for($i=0;($i< count($respondTo)) && ($found === null);$i++) {
      if( in_array(strtolower($mes),$respondTo[$i]) )
        $found = $i;
    }

    $reply = '';
    switch($found) {
        case BOT_GREETING:
            $reply = "Hej $username";
            break;

        case BOT_OWNER:
            $reply = 'Det gør Cortz, Magger og Proff';
            break;
    }

    // Reply
    if(! empty($reply) ) {
        $reply = addslashes($reply);

        mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('$reply','Piccolo','$til','time()','{$row_info['rum']}','{$row_info['vaerelse']}')");

        print "<script>
        parent.document.beskedform.mes.value='';
        parent.say('Piccolo','$reply');
        </script>";
    }
Avatar billede dennismp Nybegynder
12. april 2004 - 14:22 #40
Ah, jeg var lidt hurtigt.

BOT_GREETING er 1 og BOT_OWNER er 2.
se på denne linje;
for($i=0;($i< count($respondTo)) && ($found === null);$i++) {
Der bruger den 0 og  1. så derfor få den aldrig set på den sidste i array'et.

Hurtig løsning ville være at tilføje:
$respondTo[0][] = '';

ellers skal for-løkken laves om
Avatar billede mrfunder Nybegynder
12. april 2004 - 14:30 #41
Det forstod jeg ikke lige.. Kan du give mig et eksempel :)?

$respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
    $respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten';
Avatar billede dennismp Nybegynder
12. april 2004 - 14:32 #42
Tilføj linjen med NY NY NY NY :-)

    define(BOT_GREETING, 1);
    define(BOT_OWNER, 2);
    $respondTo = array();
    $respondTo[0][] = ''; // NY NY NY NY NY
    $respondTo[BOT_GREETING][] = 'hej piccolo';
    $respondTo[BOT_GREETING][] = 'davs piccolo';
    $respondTo[BOT_GREETING][] = 'dav piccolo';
    $respondTo[BOT_GREETING][] = 'hejsa piccolo';
    $respondTo[BOT_GREETING][] = 'hejza piccolo';
    $respondTo[BOT_GREETING][] = 'davz piccolo';
    $respondTo[BOT_GREETING][] = 'hey piccolo';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten?';
    $respondTo[BOT_OWNER][] = 'hvem er ejer af chatten';
    $respondTo[BOT_OWNER][] = 'hvem ejer chatten';
Avatar billede mrfunder Nybegynder
12. april 2004 - 15:01 #43
Før svarede bot'en ikke hvis ikke man var i rum med den? Det gør den nu????
if($row_userroom[rum] == 1
Avatar billede mrfunder Nybegynder
12. april 2004 - 15:02 #44
Det er mit allersidste spg.. PROMISE!! :)
Avatar billede dennismp Nybegynder
12. april 2004 - 15:33 #45
prøv:
..
$found = null;
if( $row_userroom['rum'] == 1 ) {
    for($i=0;($i< count($respondTo)) && ($found === null);$i++) {
      if( in_array(strtolower($mes),$respondTo[$i]) )
        $found = $i;
    }
}
Avatar billede mrfunder Nybegynder
12. april 2004 - 15:45 #46
Tak... Nu virker det jo bare super.. Nu er der en ting galt for at det er perfekt.. Men det er noget jeg selv tror jeg kan klare :)

Smid et svar
Avatar billede dennismp Nybegynder
12. april 2004 - 15:54 #47
Ellers prøver vi igen :)
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