Ildflue Skrevet 18. mai 2007 Del Skrevet 18. mai 2007 (endret) 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 18. mai 2007 av thomas_c24 Lenke til kommentar
Ildflue Skrevet 18. mai 2007 Forfatter Del Skrevet 18. mai 2007 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
xqus Skrevet 18. mai 2007 Del Skrevet 18. mai 2007 Enkelt og greit: $array = explode("\n", $string); http://php.net/explode Lenke til kommentar
Ildflue Skrevet 18. mai 2007 Forfatter Del Skrevet 18. mai 2007 Takker så meget, er ofte slik at den mest åpenbare løsningen er den som blir oversett Lenke til kommentar
Ildflue Skrevet 18. mai 2007 Forfatter Del Skrevet 18. mai 2007 (endret) 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 18. mai 2007 av thomas_c24 Lenke til kommentar
Gjest Slettet+142 Skrevet 18. mai 2007 Del Skrevet 18. mai 2007 (endret) jeg skjønner igrunn ikke helt hva den koden du har postet gjør. kan vi få se mer? Endret 18. mai 2007 av Slettet+142 Lenke til kommentar
Gjest Slettet+142 Skrevet 18. mai 2007 Del Skrevet 18. mai 2007 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
-morten Skrevet 18. mai 2007 Del Skrevet 18. mai 2007 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
Ildflue Skrevet 19. mai 2007 Forfatter Del Skrevet 19. mai 2007 Jeg lurer på hva som skjer med scriptet mitt nå 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå