Gå til innhold

Hvordan gjøre en list liste til array?


Anbefalte innlegg

La oss si at jeg har en liste med ord:

 

Banan

Eple

Appelsin

Pære

 

Så ønsker jeg å få disse ordene til å kjøres inn i et array

 

Array = {
  [0] = "Banan",
  [1] = "Eple",
  [2] = "Appelsin",
  [3] = "Pære",
}

 

noen som har en rask og enkel måte å løse problemet?

 

Det jeg skal bruke dette til er at jeg har en "form" hvor det er et "textarea" hvor jeg skal skrive inn ord for så og trykke enter etter hvert ord. Så skal disse inn i array'et mitt.

 

Håper dere skjønte noe av dette og at noen har noen tips :)

Endret av thomas_c24
Lenke til kommentar
Videoannonse
Annonse

Saken er den at jeg tenkte at jeg kunne bruke Explode()

 

$array = explode (" ", $liste);

men selv om

echo "$liste";
=>
Banan Eple Appelsin Pære

Så tar ikke explode() det som mellomrom, spørsmålet er hva skal jeg fylle inn i første argument for at den skal fungere ordentlig?

Lenke til kommentar

Nytt problem!

 

Når jeg nå fikk disse ordene delt opp i et array så ville jeg ha de fra array til MYSql, men jeg vil ikke legge inn samme ordet to ganger så jeg lagde dette:

PHP
$rows = count($liste);

$i = 0;

while ($i < $rows) {

$current = $liste[$i];

$ordene = mysql_query("SELECT * FROM ord_liste WHERE ord = '$current'");

$ord = mysql_fetch_array($ordene);

echo "$i - $ord[id] <br>";

//printer ut plasseringen til ordet i MySql tabbellen

$i++;

 }

 

Da fikk jeg

 

0 -

1 -

2 -

3 - 8

 

som output, så jeg prøvde å skrive det samme ordet som allerede var i MySQL databasen 4 ganger, og fikk det samme. Dvs. at den bare fant ordet en av de 4 gangene den lette, hvilket var den 4. gangen der hvor dere ser det står 8.

 

 

Er dette rett og slett fordi MySQL er for tregt til å henge på koden?

Eventuelt hvordan bør jeg løse dette? Den skal sjekke hvert enkelt ord for så å legge det inn i tabellen dersom ordet ikke finnes fra før av.

 

Takk igjen. :)

Endret av thomas_c24
Lenke til kommentar
Gjest Slettet+142

jeg skjønner igrunn ikke helt hva den koden du har postet gjør. kan vi få se mer?

Endret av Slettet+142
Lenke til kommentar
Gjest Slettet+142

prøv å legge LIMIT 1 til på slutten av SQL-en di..

Slik at den blir til SELECT * FROM ord_liste WHERE ord = '$current' LIMIT 1

Lenke til kommentar

Skjønte ikke helt hva du mente den koden skulle gjøre jeg heller, men LIMIT har hvertfall ikke noe med saken å gjøre.

 

Tror du vil ha noe slikt:

 

$ordene = explode("\n", $liste);
foreach ($ordene as $ord) {
   $sql = "SELECT * FROM ord_liste WHERE ord = '$ord'";
   $result = mysql_query($sql);
   if (!mysql_num_rows($result)) {
       $sql = "INSERT INTO ord_liste (ord) VALUES ('$ord')";
       mysql_query($sql);
   }
}

 

Du kan også sette en kolonne i en tabell som UNIQUE, og da får du bare en feilmelding hvis du prøver å sette en en verdi som allerede er der.

Lenke til kommentar

Jeg lurer på hva som skjer med scriptet mitt nå :p

 

Uannsett hvordan jeg vrir og vender på det så virker det bare som om det er siste raden i arrayet som blir sjekket opp.

 

PHP
<?php

$names ucwords(strtolower($_POST['names']));

$namess explode(""$names);

$numnames count($namess);

echo "Det er $numnames navn<br>";

$sql "SELECT * FROM attend_members";

$result mysql_query($sql);

while($player mysql_fetch_array($result)){

echo "sjekker $player[name] - $player[id]<br>";

if (in_array($player[name], $namess)) {

echo "Found $player[name]<br>";

} else {

echo "Did not find $player[name]<br>";

}

}

echo "$names";

?>

 

I tabellen attend_members så har jeg bare 2 rader som ser slike ut:

 

id  name  raids_attended  raids_absent  joined  last_raid  class
8  Keion          0          0      1162653076      0        Warrior
7  Mylena         0           0     1162652963      0        Mage

 

Si at jeg setter $_POST['names'] til:

Katt 
Keion 
Mylena 
Keion 
Mylena

 

så får jeg følgene som output:

 

Det er 5 navn
sjekker Keion - 8
Did not find Keion
sjekker Mylena - 7
Found Mylena
Katt Keion Mylena Keion Mylena

 

 

 

Er muligens litt vanskelig å forstå hva jeg prøver å vise, men det virker som at det bare er den siste delen av arrayet som faktisk blir "sjekket" opp.

 

Noen som ønsker å knekke denne nøtten? :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...