Avatar billede avminarm Juniormester
17. november 2003 - 22:45 Der er 14 kommentarer og
1 løsning

flere dynamiske select bokse, array ind i DB osv.

Hej eksperter

Jeg sidder fast i et problem og håber en eller anden kan hjælpe.

Jeg får danne noget der ligner flg uf gra en $_GET variabel (som typisk ligge mellem 1 og 10) hvis denne er lig med 4 dannes 4 x 2 selectbokse - noget i denne stil:

Select 1.1 (navn)- select (minut) 2.1
Select 1.2 (navn)- select (minut) 2.2
Select 1.3 (navn)- select (minut) 2.3
Select 1.4 (navn)- select (minut) 2.4

Jeg skal have dísse oplysninger sat ind i en database (mysql) - de sendes via en formular (POST & PHP_SELF), og jeg skal have vist hvilken den der valgt (selected) efter der er tastet submit.

Jeg har forsøgt mig med: <select name="minut[]"> og <select name="navn[]"> for hver select boks og herefter benyttet for begge

foreach($_POST[navn] as $key => $val){
  $arrNavn[$key] = $val;
}
foreach($_POST[minut] as $key => $val){
  $arrMinut[$key] = $val;
}

nu har jeg så to arrays hvor nøglerne bør passe sammen med værdien, ejg skal bare have dem "parret" samme og sat i DB, men er gået kold ;o(, og jeg kan ikke få formularen til at vise den valgte værdi efter submit?

Hvis der findes en smartere metode hører jeg MEGET gerne om den!

Jeg håber det er forklaret godt nok!
Avatar billede detox Nybegynder
17. november 2003 - 23:00 #1
Måske du kunne vise formen?
Avatar billede sukos Juniormester
17. november 2003 - 23:35 #2
eller hvordan du laver output med PHP?
Avatar billede avminarm Juniormester
18. november 2003 - 10:11 #3
detox>> her formularen (kun den basale kode, måske med et par små syntax smuttere ;o], jeg har ikke lige hele koden ved hånden)
sukos>> hvad mener du ?

<?php
$num = $_GET['n']; //antal mellem 1 og 10
$min = $_GET['min']; //typisk 100

$content .= '<form method="POST" action="'.$_SERVER[PHP_SELF].'">';
$content .= 'Vælg navn';

for($m = 1; $m <= $num; $m++) {
    $content .= '<select name="navn[]">'."\n";
    $query = mysql_query("select id, navn from navn");
    while($row = mysql_fetch_array($query)){
            $content .= '<option value="'.$row['id'].'">'.$row['navn'].'</option>'."\n";
        }
        $content .= '</select>';
}

$content .= 'Vælg minut';

for($x = 1; $x <= $min; $x++) {
    $content .= '<select name="minut[]">'."\n";
    $content .= '<option value="'.$x.'">'.$x.'</option>'."\n";
        $content .= '</select>';
}

$content .= 'Vælg assist';

for($m = 1; $m <= $num; $m++) {
    $content .= '<select name="assist[]">'."\n";
    $query = mysql_query("select id, navn from navn");
    while($row = mysql_fetch_array($query)){
            $content .= '<option value="'.$row['id'].'">'.$row['navn'].'</option>'."\n";
        }
        $content .= '</select>';
}

$content .= '<input type="submit" name="submit" value="send">';
$content .= '</form>';

echo $content;
?>
Avatar billede avminarm Juniormester
21. november 2003 - 23:11 #4
please en af jer HJÆÆÆÆLP
Avatar billede detox Nybegynder
22. november 2003 - 01:12 #5
Jeg har ærlig talt lidt svært ved at se, hvad det er du ønsker. Fx den anden lykke vil typisk lave 100 select menuer med en værdi i hver. Hvis det er tanken at man skal kunne vælge flere af de værdier, kunne du måske bruge checkbokse istedet.
Men du må nok prøve at forklare lidt mere præcist, hvad det hele går du på.
Avatar billede avminarm Juniormester
22. november 2003 - 16:02 #6
det kan godt være det er for simpelt og det er fordi jeg prøver at gøre det mere besværligt?

Jeg skal bruge det til at indtaste resultater ind fra f.eks en ishockey kamp, selve kampen er sat i DB med hvilke hold der spiller mod hinanden og hvad målscoren blev, Det jeg nu skal er at hvis f.eks hjemmeholdet lavede 6 mål (dvs $_GET['n'] = 6) kommer der 6 linier frem -> en linie for hvert mål og hver linie indeholder så 3 select bokse.

1. selectboks indeholder alle spillernavne hentet i DB detter er målscorer
2. selectboks indeholder hvilket minut målet blev scoret i (jeg har valgt 100 for at systemet evt, kan benyttes ved foldbold også)
3. selectboks indeholder igen alle spillernavne - dette er den der har lavet en "assist" ved målet (lagt op til scoringen).

alt dette skal ind i database - jeg håber det uddybede det

OG TAK FORDI DU GIDER HJÆLPE
Avatar billede sukos Juniormester
22. november 2003 - 17:59 #7
Hvad med det her?

<html><head></head>
<body>
<?php
for($i = 1; $i < 10; $i++) {
echo" <a href='". $_SERVER["PHP_SELF"] ."?n=". $i ."'> Link ". $i ."</a> ";
}

if(isset($_GET["n"])) {
$navne = array("avminarm", "detox", "sukos", "pamela", "katja", "maria");

echo"\n<form action='". $_SERVER["PHP_SELF"] ."' method='get'>\n";
echo"<input type='hidden' name='antalmaal' value='". $_GET["n"] ."'>\n";
echo"<p><table border='1'>";
for($a = 1; $a <= $_GET["n"]; $a++) {
echo"<tr>\n";
echo"    <td>Mål ". $a ."</td>\n";
echo"    <td><select name='maalscorer_". $a ."'>";
echo"<option value=''>Målscorer</option>";
for($m = 0; $m < count($navne); $m++) {
echo"\n<option value='". $navne[$m] ."'>". $navne[$m] ."</option>";
    }
echo"</select></td>\n";
echo"    <td><select name='minut_". $a ."'>";
echo"<option value=''>Vælg minut</option>";
for($tid = 1; $tid <= 100; $tid++) {
echo"\n<option value='". $tid ."'>". $tid ."</option>";
    }
echo"</select></td>\n";
echo"    <td><select name='oplaeg_". $a ."'>";
echo"<option value=''>Oplæg af</option>";
for($m = 0; $m < count($navne); $m++) {
echo"\n<option value='". $navne[$m] ."'>". $navne[$m] ."</option>";
    }
echo"</select></td>\n";
echo"</tr>";
}
echo"</tr><tr>\n";
echo"    <td colspan='4'><input type='submit'></td>\n";
echo"</tr></table></form>";
}


if(isset($_GET["antalmaal"])) {
echo"<p>\n";
for($x = 1; $x <= $_GET["antalmaal"]; $x++) {
echo"<br>\nMål ". $x ." blev scoret af ". $_GET["maalscorer_".$x.""] ." i ". $_GET["minut_".$x.""] .". minut med oplæg af ". $_GET["oplaeg_".$x.""];
    }
}

?>
</body></html>
Avatar billede detox Nybegynder
23. november 2003 - 00:15 #8
sukos -> Ser brugbart ud ;o)
Avatar billede sukos Juniormester
23. november 2003 - 12:46 #9
Jahh, efter beskrivelse er det vist ok! :O)

men lige for en god ordens skyld bruge
reset($navne);
efter første for-løkke (målscorer) hvor den bruges?

for($m = 0; $m < count($navne); $m++) {
echo"\n<option value='". $navne[$m] ."'>". $navne[$m] ."</option>";
    }
reset($navne);
Avatar billede avminarm Juniormester
23. november 2003 - 14:20 #10
sukos>> *LOL* - gode navne: pamela = pamela A, Katja = katja K, men maria????

TAKKER begge to, det var jo slet ikke så indviklet, som jeg har været ude i (noget med array_keys osv) ;o) - det her er jo langt mere til at gå til.

lige en ting: reset - hvad kunne man forestille sig det ville ske hvis jeg ikke bruger reset?

Og smider i lige et svar så i kan få jeres velfortjente points
Avatar billede sukos Juniormester
23. november 2003 - 15:30 #11
æh, maria fra lykkehjulet! :O) (svaghed for mørkhårede piger!)

reset() "smider" array'et tilbage til første var i array'et, (nyttig ved "genbrug" af et array), ved ikke lige om den er nødvendig her, men så er du jo sikker! :O)

Det som kan ske, er at arrayet er tomt.
Avatar billede sukos Juniormester
23. november 2003 - 15:56 #12
Æhh, hvis nu du f.eks. bruger Maria Hirse som navn, eller æ,ø og å, skal du nok lige bruge urlencode() og urldecode()


<html><head></head>
<body>
<?php
for($i = 1; $i < 10; $i++) {
echo" <a href='". $_SERVER["PHP_SELF"] ."?n=". $i ."'> Link ". $i ."</a> ";
}

if(isset($_GET["n"])) {
$navne = array("avminarm Sørensen", "detox", "sukos", "pamela A", "katja K", "maria H");

echo"\n<form action='". $_SERVER["PHP_SELF"] ."' method='get'>\n";
echo"<input type='hidden' name='antalmaal' value='". $_GET["n"] ."'>\n";
echo"<p><table border='1'>";
for($a = 1; $a <= $_GET["n"]; $a++) {
echo"<tr>\n";
echo"    <td>Mål ". $a ."</td>\n";
echo"    <td><select name='maalscorer_". $a ."'>";
echo"<option value=''>Målscorer</option>";
for($m = 0; $m < count($navne); $m++) {
echo"\n<option value='". urlencode($navne[$m]) ."'>". $navne[$m] ."</option>";
    }

reset($navne);

echo"</select></td>\n";
echo"    <td><select name='minut_". $a ."'>";
echo"<option value=''>Vælg minut</option>";
for($tid = 1; $tid <= 100; $tid++) {
echo"\n<option value='". $tid ."'>". $tid ."</option>";
    }
echo"</select></td>\n";
echo"    <td><select name='oplaeg_". $a ."'>";
echo"<option value=''>Oplæg af</option>";
for($m = 0; $m < count($navne); $m++) {
echo"\n<option value='". urlencode($navne[$m]) ."'>". $navne[$m] ."</option>";
    }
echo"</select></td>\n";
echo"</tr>";
}
echo"</tr><tr>\n";
echo"    <td colspan='4'><input type='submit'></td>\n";
echo"</tr></table></form>";
}


if(isset($_GET["antalmaal"])) {
echo"<p>\n";
for($x = 1; $x <= $_GET["antalmaal"]; $x++) {
echo"<br>\nMål ". $x ." blev scoret af ". urldecode($_GET["maalscorer_".$x.""]) ." i ". $_GET["minut_".$x.""] .". minut med oplæg af ". urldecode($_GET["oplaeg_".$x.""]);
    }
}

?>

</body></html>
Avatar billede avminarm Juniormester
24. november 2003 - 08:29 #13
urlde/encode bruger jeg skam allerede ;o), men tak alligevel, jeg benytter nu også POST til at sende selve formularen, det er kun antal mål og holdnavne der hentes via et link (GET).

Forresten havde jeg også problemer (før sukos's løsn) med at formularen viste det valgte (values/selected) efter den var blevet sendt og der f.eks ikke var valgt alle de påkrævede steder, men det fik jeg også løst ;o), jeg er en glad mand!

venter lige og ser om detox vil have lidt Points, selvom det jo nok er sukos der skal have flest.

og endnu engang tak for hjælpen!

hmm - mørkhårede piger Pamela og Katja??? men skidt jeg forstår meningen ;o)
Avatar billede avminarm Juniormester
02. december 2003 - 22:22 #14
lukker - detox læg et hint hvis du vil have point
Avatar billede kappel Nybegynder
15. januar 2004 - 15:06 #15
-> avminarm

Hvordan går det? Kan du huske vi har skrevet mails, send lige pr. hvordan det går?

/kappel
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