Avatar billede floetti Nybegynder
20. maj 2005 - 16:57 Der er 17 kommentarer og
1 løsning

Lille problem med str_replace og resultat

Hej...

Jeg har et lille problem med str_replace!

Sådan ser scriptet ud:

$str = "$_POST[tester]"; //ex: Jeg har en båd,"Den er blå",Men jeg vil have den gul,"
$replace[',"'] = ";\n";
$replace['",'] = ";\n";

foreach($replace as $key => $value){
$str = str_replace($key,$value,$str);
}

print '<pre>';
print_r($str);
print '</pre>';

Resultat:

Jeg har en båd;
Den er blå;
Men jeg vil have den gul;

Dette bliver som du ser taget ud fra en tekstboks. Det som jeg gerne ville er at få resultatet ud i en select boks og med values i option fra 0 og op ($i=0; og så $i++; for den næste)...

Altså:

<select name="test">
<option value="0">Jeg har en båd</option>
<option value="1">Den er blå</option>
<option value="3">Men jeg vil have den gul</option>

Håber I forstår

På forhånd tak

floetti
Avatar billede smirnoff Nybegynder
20. maj 2005 - 17:38 #1
hvad med:

$str = "$_POST[tester]";

$str = str_replace('"', "", $str);

$arr = explode(",", $str);

print "<select name='test'>";

foreach($arr as $key => $value) {
    print "<option value='".$key."'>".$value."</option>";
}
print "</select>";
Avatar billede floetti Nybegynder
20. maj 2005 - 18:10 #2
jes... det var lige det;)

Så vil jeg gerne udvide spørgsmålet en smule, er du med på den?

floetti
Avatar billede smirnoff Nybegynder
20. maj 2005 - 18:38 #3
du kan jo prøve :)
Avatar billede floetti Nybegynder
20. maj 2005 - 18:46 #4
Det som jeg gerne vil med det her, er at lave en "bulk upload" hvor man lægge flere ting i en database på en gang.

Altså:

Jeg har en båd,"Den er blå",Men jeg vil have den gul
Jeg har en båd,"Den er gul",Men jeg vil have den blå

Kan jeg få php til at repeate scriptet når den er kommet enden af af linjen?
Avatar billede floetti Nybegynder
20. maj 2005 - 18:48 #5
det der med select'en kan jeg se ikki er nødvengid i dette tilfælde, men kan bruge den i noget andet;)
Avatar billede smirnoff Nybegynder
20. maj 2005 - 18:53 #6
øhm - hvis du skal repeate noget kan du jo bruge en løkke ... f.eks for, while, do-while ... for hver løkke gælder jo så at du (kan) angive med en tæller hvor mange gange den skal køre
Avatar billede floetti Nybegynder
20. maj 2005 - 19:07 #7
lad os nu sige at den sidste $key er 27, kan jeg så lave en while ($key <= 27){ }?
Avatar billede smirnoff Nybegynder
20. maj 2005 - 19:16 #8
yep
Avatar billede floetti Nybegynder
20. maj 2005 - 19:31 #9
ok... men nu er det sådan at scriptet er mere end det jeg har skrevet på siden her: om du har lyst kan du komme med kommentarer til det som jeg har lavet (også nemmere at følge med)
httpwww.ehandil.com/ehandil/junk/explode.php

Som du ser er mange ting som skal væk, jeg skal have sorteret den ud som jeg skal bruge... det kan du se efter man trykker på "læg op" - men problemet er bare at komme videre til næste linje...
Avatar billede floetti Nybegynder
20. maj 2005 - 19:32 #10
Avatar billede smirnoff Nybegynder
20. maj 2005 - 20:33 #11
du mener du har behov for at de to linier opfattes som 2 linier i php, og at der skal være et loop som kører begge linier igennem  ? - eller forstår jeg ikke dit spørgsmål??
Avatar billede floetti Nybegynder
20. maj 2005 - 21:08 #12
ja, det skal det være...
Avatar billede smirnoff Nybegynder
20. maj 2005 - 21:22 #13
jeg vil tro du skal explode din $_POST[] på "\n" (der må være et linieskift efter 111) ... for så burde du få et array med 2 elementer indeholdende alle de kommaseparerede værdier... tag en count på arrayet, og kør et loop hvori du exploder på kommaer og du kan sortere dine data .. noget i retning af :
<?php

$postarr = explode("\n", $_POST[..]);

for($i=0;$i<count($postarr);$i++) {
    $dataarr = explode(",", $postarr[$i]);
    foreach($dataarr as $key => $value) {
          ....
    }
}

?>

- jeg har ikke testet det, men prøv engang at brug det som udgangspunkt
Avatar billede floetti Nybegynder
20. maj 2005 - 21:57 #14
jeg har bare sat den til linjer, så eg manuelt kan sige hvor ofte den skal repeate.. men jeg kan sku ik finde ud af det:(
Avatar billede smirnoff Nybegynder
21. maj 2005 - 09:29 #15
Ok - prøv det her så: (indsæt din egen testdata i textarea'et)

<?php

    if($_POST["submit"]) {

        $postarr = explode("\n", $_POST["content"]);
   
        for($i=0;$i<count($postarr);$i++) {
            $dataarr = explode(",", $postarr[$i]);
            foreach($dataarr as $key => $value) {
                  print $key." ".$value."<br>";
                  /**
                  *    indsæt database funktionalitet her....
                  */
            }
            print "<br><br>END OF DATAARR<br><br>";
        }
    }
   

?>
<html>
<body>
    <form method="post" action="#">
        <textarea name="content" style="width:400px;height:200px"><?php print $_POST["content"];?></textarea>
        <br>
        <input type="submit" name="submit" value="Enter"/>
    </form>
</body>
</html>
Avatar billede floetti Nybegynder
22. maj 2005 - 04:18 #16
JAAAA....;) - det var lige det, 1000 tak for hjælpen, satte lige 60 points mere til dig om dig giver svar;)

Hilsen

floetti
Avatar billede floetti Nybegynder
22. maj 2005 - 04:19 #17
hehe... svaret var der
Avatar billede smirnoff Nybegynder
22. maj 2005 - 11:01 #18
glad for at kunne hjælpe :)
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