Avatar billede kimg Nybegynder
10. august 2006 - 09:27 Der er 25 kommentarer og
1 løsning

løbe array igennem

Jeg kan ikke rigtig få dette til at virke, mit udtræk er ok, og jeg får ingen fejlmelding, men det virker ikke ;-(

<?PHP
$userArray = array();
$query = mysql_query("SELECT userID FROM users");
while($data = mysql_fetch_assoc($query)){
$userArray[] = "\"".$data["userID"]."\"";
}
?>
<script language="JavaScript">
var users = new Array(<?php echo implode(",",$userArray) ?>);

function checkUsers(elm) {
    for (i=0;i<users.length;i++) {
    idx = +elm.value;
          if (idx == users[i]) {
              alert("Brugernavnet +idx+ er optaget");
              elm.focus();
          }
    }
}
</script>
<form>
<input type="text" onKeyup="checkUsers(this)" />
</form>

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 10:23 #1
1)
  alert("Brugernavnet" +idx+ "er optaget");
2)
  Pas gevaldigt på med
    var users= array(88)
  som laver et array med 88 tomme pladser, mens
    var users=array(88,99)
  laver et array med 2 pladser med hhv 88 og 99
3) Onkeyup? Prøv onchange, og lave et felt mere du kan tabbe til.
Avatar billede erikjacobsen Ekspert
10. august 2006 - 10:24 #2
Du skulle faktisk kunne reparere 2) med

    var users = Array("88")  // osv.
Avatar billede kimg Nybegynder
10. august 2006 - 11:33 #3
Jeg er ikke helt med, mit array ser sådan ud med 3 udtræk fra databasen
var users = new Array("kimg","Tina","kim");

1) Den var jeg klar over var gal, ;-)

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 11:52 #4
Jamen, så virker det da ... ik'?  Prøv evt med mit forslag 3)  Det er ikke sikkert du får onkeyup hvor du forventer, og vel næppe heller hensigtsmæssigt.
Avatar billede kimg Nybegynder
10. august 2006 - 11:57 #5
Hvordan ville du gribe det an da ;-)
Alert var kun ment som en måde at teste det på.

Kim
Avatar billede kimg Nybegynder
10. august 2006 - 12:01 #6
Unskyld glemte lige at sige at jeg havde prøvet med onchange

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 12:36 #7
Ok, men så er hunden begravet i det lille "+" på den her linie:

    idx = +elm.value;

det fjerner du bare (og tænker lidt over hvorfor). Stadigvæk: ulogisk med onkeyup.
Avatar billede kimg Nybegynder
10. august 2006 - 12:44 #8
Yes helt rigtigt, havde lige prøvet at fjerne det, så den del kører.
Nu prøver jeg lige at se om jeg kan lave det sådan at den farver skrift rød hvis det er optaget, lægger du svar

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 12:49 #9
Jeg samler slet ikke på point, tak.

Har du regnet ud hvorfor det går galt med det "+"  ?  ;)
Avatar billede kimg Nybegynder
10. august 2006 - 12:52 #10
Jeg opdagede fejlen ved at jeg fik fejlen NaN, men ved ikke hvorfor, er der en måde at man kan trace, ligesom man gør i Flash, synes det er lidt besværlig med alert

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 12:58 #11
Almindeligvis bruger man bare en passende mængde alerts. Der kan nok være nyere udviklingsvrærktøjer, der kan singlesteppe igennnem javascript, men man kan leve lykkeligt med alert.

+ anvendt på denne måde er en unær operator på en integer. De argumentet faktisk er en streng, forsøges strengen lavet om til et tal. Det går fx ikke så godt for "kimg", som den så må aflevere en NaN ("Not a Norwegian" ... eller er det "Not a Number"....) for. Der sker derfor ikke synderligt i den efterfølgende sammenligning.
Avatar billede kimg Nybegynder
10. august 2006 - 13:03 #12
Tak for forklaringen, så kan de måske aligevel bruges til noget de nordmænd ;-))

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 13:09 #13
Og du svarer selv, og accepterer eget svar. Ik'?
Avatar billede kimg Nybegynder
10. august 2006 - 13:58 #14
Det gør jeg, eks. var lige nede et stykke tid, jeg hr prøvet at søge på google, efter hvordan jeg kunne få et skjult felt ved siden af til at blive synlig med brugernavnet i, hvis bruger navnet er optaget, har kun fundet et eks. hvis man bruger en select box, kender du et link eller ved hvordan (Selvfølgelig ved du hvordan),

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 14:43 #15
Mener du noget med et <div> man kan sige hide og show til.
Avatar billede kimg Nybegynder
10. august 2006 - 15:15 #16
ja, det kunne være en mulighed, men jeg kan ikke finde ud af at sætte indholdet i et tekstfelt.

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 15:34 #17
Jeg ved ikke helt hvad du helt præcis vil - men kunne det være noget i retning af
  http://www.js-examples.com/page/javascripts__example.html?run=468
(sådan ca. inde i midten mellem alle reklamerne)?
Avatar billede kimg Nybegynder
10. august 2006 - 15:45 #18
ja noget i den stil, jeg ville gerne have det sådan at der er et hidden felt, der bliver synligt når brugernavnet er optaget, bruger onchange, dvs. jeg laver en "knap" bruger kan klikke på, for at checke om det er ledigt, det virker nu med alert.
Men jeg kan ikke finde ud af at overføre det navn der er optaget til et tekstfelt

Kim
Avatar billede erikjacobsen Ekspert
10. august 2006 - 17:01 #19
Prøv at vise hvad du sådan ca. har - så får vi nok ført navnet over.
Avatar billede kimg Nybegynder
11. august 2006 - 07:32 #20
Det må du undskylde så ikke du havde skrevet tilbage, det her er hvad jeg har nu, jeg har fået overført brugernavnet til tekstfeltet. Men har lidt problemer med at styre mine lag med "document.write()".

Kim

<div style="position: absolute; width: 500px; height: 300px; z-index: 1; left: 10px; top: 10px" id="lag1">
<script language="JavaScript">

var users = new Array(<?php echo implode(",",$userArray) ?>);
function checkUsers(elm) {
    for (i=0;i<users.length;i++) {
    idx = elm.value;
          if (idx == users[i]) {
              userForm.userID.value = '';
              userForm.taken.value = 'brugernavnet '+idx+ ' er optaget';
              var myText = 'brugernavnet '+idx+ ' er optaget';
              function writeDiv(){
                var str='';
                str+='<div style="position: absolute; width: 237px; height: 17px; z-index: 100; left: 200px; top: 55px" id="lag2">+myText+</div>';
                document.write(str);
                }
                writeDiv();
                  elm.focus();
          } else {
                  userForm.taken.value = '';
          }
    }
}
</script>
<form name="userForm"  action="test.php" method="post">
<input type="text" name="userID" onchange="checkUsers(this)"> <input type="text" name="taken" size='40'>
<input type="submit" name="ok" value="send">
</form>
Avatar billede kimg Nybegynder
11. august 2006 - 07:36 #21
Tekstfeltet bruger jeg kun for at checke at det kører efter planen, der er jo ingen grund til at bruge et formfelt, når jeg har mulighed for at skrive en tekst med javasript, men jeg kunne vel undgå at bruge lag og så i stedet bruge document.write(), ved siden af mit formfelt, men når jeg bruger document.write() forsvinder alt andet.

Kim
Avatar billede erikjacobsen Ekspert
11. august 2006 - 09:10 #22
Du skal ikke bruge document.write.  Dine lag, altså dine <div id="xx">-er skal være der fra starten, og med  getElementById("xx").style.visibility  styrer du om de skal ses eller ej. Indhold kan du udfylde med .innerText (til nød innerHTML)
Avatar billede kimg Nybegynder
11. august 2006 - 09:46 #23
Ok, hvornår vil det være hensigtsmæssig at bruge document.write(), jeg har googlet en del, men der finder man mest "tuts" ikke så meget forklaring
Kan man finde en slags manual over javascript, noget ala php.net, eller kan du anbefale en bog
Kim
Avatar billede kimg Nybegynder
11. august 2006 - 11:14 #24
Mange tak Erik, det har været utroligt lærerigt, og tak fordi du har overskud til at dele din store viden med os på Eks. Jeg har fået brugt det sådan her.
document.getElementById('lag1').style.visibility = "visible";
content = idx;
lag1.innerText = content;

Kim
Avatar billede erikjacobsen Ekspert
11. august 2006 - 12:10 #25
Og eksperten har spist et indlæg.  Det var noget med at man ikke kan bruge document.write i et dokument, <html> ... </html>, der allerede ses i browseren, for hvor skulle det sættes ind. Og document.write er ganske forbudt i (rigtig) xhtml. Man skal i stedet for bruge DOM-operationer. Man kan godt i HTML bruge document.write under opbygningen af documentet, populært sagt, inden "</html>" er behandlet.

Men det du har lavet ser rigtigt ud. Jeg har jo bare skubbet dit i den rigtige retning ;)
Avatar billede kimg Nybegynder
11. august 2006 - 12:50 #26
ja det har du, jeg bruger google utroligt meget, det kan være utroligt lærerigt, men ofte støder man på sider som med "forældet" kode, derfor har det været nemmere at blive guidet, så man ikke søger i blinde. kan du ha'en god week-end.

Kim
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