Avatar billede mrfunder Nybegynder
12. april 2004 - 00:25 Der er 51 kommentarer og
1 løsning

If funktion hvordan laver jeg det?

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

if($mes == 'Hej Piccolo') {

OG HER KOMMER FUNKTIONEN Så....



} else {

OG HER KOMMER MIN ANDEN FUNKTION DEN UDFØRER HVIS IKKE DEN SKAL UDFØRE MIN FUNKTION NR 1!!





Jeg har min: "if($mes == 'Hej Piccolo') {" og der vil jeg have den til at tjekke både om man er i $row_info[rum] 1 og samtidig tjekke om $mes er "Hej Piccolo" Hvis ikke den er begge dele så gør den videre til min "} else {"


Altså.. hvordan laver jeg en dobbelt funktion der tjekker begge dele??
Avatar billede mrfunder Nybegynder
12. april 2004 - 00:26 #1
Nogen der kan fixe den for mig :)? *S*
Avatar billede dennismp Nybegynder
12. april 2004 - 00:28 #2
if( $mes == 'Hej Piccolo' AND  $row_info['rum'] == 1 ) { ..
Avatar billede mrfunder Nybegynder
12. april 2004 - 00:36 #3
Har jeg nu prøvet Dennismp spurgte dig jo i det andet spg.. Men tror dog ikke jeg lige kan lave den med  $row_info['rum'] finder lige ud af noget andet..
Avatar billede mrfunder Nybegynder
12. april 2004 - 00:41 #4
$select_rumnr = mysql_query("SELECT íd FROM rum WHERE(username='$username')");
$row_rumnr = mysql_fetch_array($select_rumnr);

if( $mes == 'Hej Piccolo' AND  $row_rumnr['id'] == 1) {

Mit problem er bare at det stadig ikke virker.. altså man skal være i rummet med id nr 1 for at den kører funktionen.. Ellers skal den bare gå videre til else
Avatar billede dennismp Nybegynder
12. april 2004 - 00:41 #5
Prøv at beskrive hvad du vil, så kan det være jeg kan hjælpe dig..
Avatar billede dennismp Nybegynder
12. april 2004 - 00:43 #6
kan det være fordi at din mysql ikke virker?

i'et i "SELECT id" ser forkert ud. Ellers prøv at tilføj fejl-tjek:
$select_rumnr = mysql_query("SELECT íd FROM rum WHERE(username='$username')") or die(mysql_error());
Avatar billede mrfunder Nybegynder
12. april 2004 - 00:43 #7
$select_rumnr = mysql_query("SELECT id FROM rum WHERE(username='$username')"); - Der var lige en lille "bug" der..
Avatar billede mrfunder Nybegynder
12. april 2004 - 00:46 #8
Min kode 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_rumnr = mysql_query("SELECT id FROM rum WHERE(username='$username')");
$row_rumnr = mysql_fetch_array($select_rumnr);

if($mes == 'Hej Piccolo' OR $mes == 'hej piccolo' OR $mes == 'davs piccolo' OR $mes == 'hej igen piccolo' OR $mes == 'hejsa piccolo' OR $mes == 'Hejsa Piccolo' OR $mes == 'Dav Piccolo' OR $mes == 'dav piccolo' OR $mes == 'hey piccolo' OR $mes == 'Hey Piccolo' AND  $row_rumnr['id'] == 1) {


Ved du hvad fejlen er? Altså den skriver beskeden (GÅR IKKE VIDERE TIL ELS SOM DEN SKAL) Selvom den IKKE er i rummet med id 1 den er i rummet med id 2.. men den skriver stadig beskeden.. altså den skal vælge els hvis beskeden ikke er korrekt og den ikke er i rummet med id 1?
Avatar billede dennismp Nybegynder
12. april 2004 - 00:51 #9
Prøv:

if(($mes == 'Hej Piccolo' OR $mes == 'hej piccolo' OR $mes == 'davs piccolo' OR $mes == 'hej igen piccolo' OR $mes == 'hejsa piccolo' OR $mes == 'Hejsa Piccolo' OR $mes == 'Dav Piccolo' OR $mes == 'dav piccolo' OR $mes == 'hey piccolo' OR $mes == 'Hey Piccolo') AND  $row_rumnr['id'] == 1) {
..
Avatar billede mrfunder Nybegynder
12. april 2004 - 00:54 #10
Har forøvrigt ændret $select_rumnr = mysql_query("SELECT id FROM rum WHERE(rum='$rum')"); - pga. den er mere korrekt :)

Prøver det lige, er det meningen at det skal være if "((" 2?
Avatar billede dennismp Nybegynder
12. april 2004 - 00:54 #11
Man kan også skrive det som

$respondTo = array();
$respondTo[] = 'hej piccolo'; //Alt i lowercase, så du ikke behøver at tænke på store og små bogstaver
$respondTo[] = 'davs piccolo';
// etc..

if( $row_rumnr['id'] == 1 AND in_array(strtolower($msg),$respondTo)) {
..
}

Gør koden lidt nemmere at læse syntes jeg :).
Avatar billede mrfunder Nybegynder
12. april 2004 - 00:56 #12
Gør koden MEGET nemmeer.. Fixer det lige om så :)

Back in 2 min, forøvrigt virkede det andet ikke
Avatar billede dennismp Nybegynder
12. april 2004 - 00:57 #13
Ja, der skal være to (( .. den ene slutter lige før AND og den anden efter 1'tallet. Det er gruppering.. Alle ORs står i parantesen, så een af disse skal være sandt OG $row_rumnr['id'] == 1..

Forstil dig.

if( $a == 1 AND $b == 1 OR $b == 2 )

betyder det så, at $a og $b skal være 1, eller er det nok at $b er 2.
Eller betyder det at $a er 1 og $b skal være 1 eller 2.

Derfor bruger man parantes, så man kan se hvad der skal grupperes sammen, da parantesen evalueres først.
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:02 #14
Har nu denne kode:



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


$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_rumnr['id'] == 1 AND in_array(strtolower($msg),$respondTo)) {


Forøvrigt $respondTo[] = 'hej piccolo'; den tager dem kun med lille som de står.. Virker ikke hvis de er med stor :P

Og den udskriver stadig svaret fra piccoloen i rum med id 2 fkes.. Men prøver lige selv at finde ud af noget med rum id.. Kan man gøre sådan at den ignorere at det er store eller små bogstaver??
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:04 #15
if( $row_rumnr['id'] == 1 AND in_array(strtolower($msg),$respondTo)) {

Skal det ikke være:???

if( $row_rumnr['id'] == 1 AND in_array(strtolower($mes),$respondTo)) {
Avatar billede dennismp Nybegynder
12. april 2004 - 01:06 #16
Jo, self. Det gik lidt hurtigt (jeg plejer at brug $msg for message :))..

Prøv evt at skrive $row_rumnr['id'] ud på skærmen, så du kan se om det ser fornuftigt ud.
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:08 #17
Okay.. Prøver lige.. *G* En anden ting? Kan du sige mig hvorfor den ikke tager "kommandoerne" hvor der er "Z" i?
$respondTo[] = 'hejza piccolo';
$respondTo[] = 'davz piccolo';

Og kan jeg på en eller anden måde gøre sådan at dne ignorere om det er med stort eller småt?
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:14 #18
Det virker helt fint med min $row_rumnr['id'], Den printer skam det rigtige ud :)

Kan du sige mig det med stort og småt? Så skulle dette spg. da ellers være lukket..
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:16 #19
Er du der?
Avatar billede dennismp Nybegynder
12. april 2004 - 01:17 #20
Det burde nu virker allerede da strtolower returnerer lowercase af $mes.
Prøv evt at tilføje
print strtolower($mes) og se om det ikke bliver lower-caset.
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:20 #21
Naa... Hvis jeg skriver det med stor tager den bare else funktionen..

Så skal skrive det præcist som det står i mine $respondTo[] bokse..
Avatar billede dennismp Nybegynder
12. april 2004 - 01:25 #22
virker fint her:
http://dennis.moellegaard.dk/v4/php/488287.php?msg=heJsA%20pIcColO&source=1

Prøv at poste hele sourcen, det kan være at det er noget andet.
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:27 #23
lol.. Sidder med 2 forskellige filer *GGGGGGGG* 2 sek
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:31 #24
Tja okay.. Nu er der et lidt andet problem. Ved ikke lige hvor fejlen ligger men du får lige hele min kode (Forhøjer også lige Points!)

Problemet er at den bruger "else" hele tiden.. Hvis jeg skriver "hej piccolo" skriver den det bare uden den gør noget.. Også selvom jeg er i rummet med iD nr 1 hvor den normalt SKAL skrive det.. Så altså den bruger else..




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


$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_rumnr['id'] == 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 dennismp Nybegynder
12. april 2004 - 01:39 #25
if( $row_rumnr['id'] == 1 AND in_array(strtolower($mes),$respondTo)) {
prøv istedet:
if( ($row_rumnr['id'] == 1) AND in_array(strtolower($mes),$respondTo)) {
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:39 #26
Er du der? Forstår du mit spg??
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:42 #27
Den skriver stadig ikke mine sætninger... Altså den skriver ordet! Men ikke det han skal sige.. dvs, den benytter sig af else ;)
Avatar billede dennismp Nybegynder
12. april 2004 - 01:42 #28
Jo, jeg er her skam. Er bare igang med at implementerer min magic() method i mit cms system.. Det kræver lidt fokus :)
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:44 #29
Hehe.. Må sige, det er sgu dejligt du gider hjælpe :)
Ved ikke hvad jeg skulle gøre uden dig, alle mine venner er gået i seng *G*

Well.. Den skriver ikke det der er i boksne.. Den benytter sig af "else" nogen idé?
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:45 #30
boksne even = $respondTo[] = 'hey piccolo';
"Ved sgu ikke helt hvor meget boks der er i dem ;)?"
Avatar billede dennismp Nybegynder
12. april 2004 - 01:46 #31
ok, prøv at erstatte:
if( $row_rumnr['id'] == 1 AND in_array(strtolower($mes),$respondTo)) {
else
if(( $row_rumnr['id'] == 1) AND (strtolower($mes) == $respondTo[0])) {

og så taste det første du har i arrayet (hej piccolo - så vidt jeg kan se..)

virker det?
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:49 #32
Det virker heller ikke nej :(
Avatar billede dennismp Nybegynder
12. april 2004 - 01:50 #33
erstat den med:
if( 1 ) {

... virker det?
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:52 #34
okay.. Fjernede der hvor den tjekker rum sådan jeg nu har denne kode:

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

if(in_array(strtolower($mes),$respondTo)) {




Nu virker det med stort og småt :)
Men det kunne da været dejligt med rum også .. man skal jo ikke stå i sin lejlighed og skrive hej piccolo hvor han så derefter svarer og han faktisk står i et andet rum eller sådan noget ;)
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:54 #35
Nogen idé?? Eller vil du gerne droppe ud nu *S*
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:54 #36
Eller ikke droppe ud.. "AFSLUTTE!"
Avatar billede dennismp Nybegynder
12. april 2004 - 01:56 #37
Så må det være din $row_rumnr['id'] der ikke er 1. Prøv at printe den ud før din if-sætning.

Kald piccolo for gud, så giver det da mening? :)
Avatar billede mrfunder Nybegynder
12. april 2004 - 01:57 #38
Har printet den ud FØR min ip-sætning og der virker den fint.. Og det er det korrekte nummer..
Avatar billede dennismp Nybegynder
12. april 2004 - 02:04 #39
Jeg har ikke lige nogen idéer pt. Men har lige et par kommentarer til resten af din kode:

i din queries, så kan du bare bruge now() (som er en mysql-funktion) istedet for time().. Og så bør du putte {} rundt om dine arrays for at undgå at php parser den forkert..

Således:

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

PHP fejler ikke (der kan dog ske følgefejl), hvis der sker en SQL fejl. Derfor kan det være nemmere hvis man laver

mysql_query("SQL...") or die(mysql_error());

så får du en fejlbesked der hvor fejlen sker.
Avatar billede mrfunder Nybegynder
12. april 2004 - 02:10 #40
Så siger jeg tak ihvertifalde :)
Avatar billede dennismp Nybegynder
12. april 2004 - 02:12 #41
Det var da ganske hyggeligt. Jeg smutter iseng - så forsat god arbejdslyst og held og lykke med projektet.
Avatar billede mrfunder Nybegynder
12. april 2004 - 10:42 #42
Tjaa.. Er sgu egentlig nået meget langt men vil viderudvikle min bot :)
Tak for hjælpen...
Avatar billede mrfunder Nybegynder
12. april 2004 - 10:45 #43
Tænkte på... (Ved godt at spørgsmålet er lukket men)
Er det muligt at sætte den der "if( $row_rumnr['id'] == 1" på min ene "mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('Hej $username','Piccolo','$til',now(),'{$row_info['rum']}','{$row_info['vaerelse']}')");"?

Kan jeg det?? Sådan den kun opdatere den hvis man er i rum1?
Avatar billede mrfunder Nybegynder
12. april 2004 - 10:45 #44
Altså i stedet for at sætte den på beskeden??
Avatar billede mrfunder Nybegynder
12. april 2004 - 10:46 #45
Hvis man kan det opretter jeg gerne lige et spg med nogle flere points :)

Og til hjælp er her hele min kode:



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

$select_rumnr = mysql_query("SELECT id FROM rum WHERE(id='$rum')") or die(mysql_error());
$row_rumnr = mysql_fetch_array($select_rumnr);


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

if(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',now(),'{$row_info['rum']}','{$row_info['vaerelse']}')");
mysql_query("INSERT INTO chat (mes,fra,til,time,rum,vaerelse) VALUES('Hej $username','Piccolo','$til',now(),'{$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 dennismp Nybegynder
12. april 2004 - 11:07 #46
Så insert kun udføres hvis der man er i rum 1 ?
Avatar billede mrfunder Nybegynder
12. april 2004 - 11:12 #47
Hehe.. Nej har sgu da fundet ud af hvad der er galt.. Igår da jeg skulle tjecke om den virkelig printede det rigtige rum id ud.. Der var jeg inde på en anden side hvor der lå noget andet "kode"

Men mit prob er nu..



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

$select_rum = mysql_query("SELECT id FROM rum WHERE(id='$rum')");
$row_rum = mysql_fetch_array($select_rum);


I min sætning nr 2 tager den "(id='$rum')" og $rum' skal så være det den henter i min sætning nr 1!! Det er der hele fejlen har ligget.. (dvs. min min side :)
Kan du sige mig hvordan jeg "hægter dem sammen"?
Avatar billede mrfunder Nybegynder
12. april 2004 - 11:12 #48
En variabel af en art?
Ved bare ikke hvordan jeg skal lave den *S*
Avatar billede dennismp Nybegynder
12. april 2004 - 11:23 #49
Du kan slå dem sammen til een.. Men

$select_rum = mysql_query("SELECT id FROM rum WHERE(id='$rum')");

Du vil have id'et på rum 1? Er det ikke altid det samme som $rum?
Avatar billede mrfunder Nybegynder
12. april 2004 - 11:27 #50
Hehe.. Mig der failer igen igen.. Den tager sgu da også rum id fra users.. Så har jeg jo ikke brug for at lav noget mere kode *GG*


tak endnu en gang :)
Avatar billede dennismp Nybegynder
12. april 2004 - 11:30 #51
Det var så lidt - måske skulle du tage en time ekstra søvn :-)
Avatar billede mrfunder Nybegynder
12. april 2004 - 11:36 #52
Tror jeg tager mig en lur senere så ;)
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