stimoroll
1.10.2003, 15:21:50
Problem wygląda tak:
- chciałbym by w poniższym kodzie zamiast $i pojawiały się kolejne cyfry - ale jakoś nie mam pomysłu jak to zrobić by działało szybko i sprawnie:
Mam taki kod narazie:
[php:1:261a14ab4c]<?php
if(preg_match_all("#[ankieta](.+)[/ankieta]#s",$in,$matches))
{
$trans_ankieta_array=array(
"#[ankieta](.+)[/ankieta]#s"=>"<form action="index.php?d=forumankieta" method="post">1
<input type="submit" vaule="Wyœlij"></form>",
"!- (.*)!U"=>"<input type="radio" name="vote_id" value="".$i."" />1 "
);
$in2 = ereg_replace_multi($trans_ankieta_array, $matches[0][0]);
$in=preg_replace("#[ankieta](.+)[/ankieta]#i",">1</form>",$in2);
#echo "<h1> $in2 </h1>";
}
?>[/php:1:261a14ab4c]
PMadej
1.10.2003, 18:14:38
Zamiast tego:
[php:1:053e08722a]<?php
$trans_ankieta_array=array(
"#[ankieta](.+)[/ankieta]#s"=>"<form
action="index.php?d=forumankieta" method="post">1
<input type="submit" vaule="Wyœlij"></form>",
"!- (.*)!U"=>"<input type="radio" name="vote_id"
value="".$i."" />1 "
?>[/php:1:053e08722a]
napisałbym coś takiego:
[php:1:053e08722a]<?php
$trans_ankieta_array=array(
"#[ankieta](.+)[/ankieta]#s"=>"<form
action="index.php?d=forumankieta" method="post">1
<input type="submit" vaule="Wyœlij"></form>");
//tu pętla dla $i dążącego do 30:
while ($i<30)
{
$trans_ankieta_array=array("!- (.*)!U"=>"<input type="radio" name="vote_id"
value="".$i."" />1 ");
$i++;
}
?>[/php:1:053e08722a]
kodu nie testowałem ale wydaje mi się, że w ten sposób musisz to rozwiązać ...
stimoroll
1.10.2003, 20:12:00
Dzięki. Ładne i czytelne - ale chodziło mi o takie działanie jak poniżej:
[php:1:6afa43ddff]<?php
if(preg_match_all("#[ankieta](.+)[/ankieta]#s",$in,$matchess))
{
$in2=preg_replace("#[ankieta](.+)[/ankieta]#s",
"<form action="index.php?d=forumankieta" method="post">1
<input type="submit" value="Wyœlij"></form>",
$matchess[0][0]);
$i=1;
preg_match_all("!- (.*)!i",$in2,$matches);
foreach($matches[0] as $inn)
{
$in2=ereg_replace($inn,ereg_replace("- ","<input type="radio" name="vote_id" value="".$i."" >",$inn),$in2);
$i++;
}
$in=ereg_replace("[ankieta](.*)[/ankieta]",$in2,$in);
}
?>[/php:1:6afa43ddff]
Niby funkcja ta jest porpawna - ale nie dziąła najlepiej
Może da się to jakoś zoptymalizować?
A mógłbyś dokładnie przedstawić, co chcesz ociagnąć? To znaczy jak ma wygladać html przed i po operacji?
Bo choć wydaje mi się, że rozumiem, to jednak nie jestem pewien
stimoroll
2.10.2003, 07:12:18
tekst przed operacją
[ankieta] to jest ankieta
- wybór 1
- wybór 2
- wybór 3
...
- wybór n
[/ankieta]
tekst po operacji:
Kod
<form action="form.php" method="post">
<input type="radio" value="1">
<input type="radio" value="2">
<input type="radio" value="3">
....
<input type="radio" value="n">
<input type="submit" value="wyślij">
</form>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.