Avatar billede simotho Nybegynder
20. oktober 2009 - 21:23 Der er 17 kommentarer

Lav et array ud fra checkboxe og indsæt derefter til databasen

Hejsa.
Er igang med et lille system, hvor man skal kunne hakke nogle checkboxe af. Det skal bruges til et fodbold system således, at hvis man krydser af i at hjemmeholdet vinder og i en anden kamp at den bliver uafgjort, hvordan henter man det så ind i et array, så man kan få lagt det ind i en database.

Min form ser således ud:

<?php
include("includes/connect.php");
$hent_car = mysql_query("SELECT * FROM matches ORDER BY id DESC");
$count_car = mysql_num_rows($hent_car);
if ($count_car == 0) {
echo "Tom";}else{
while($row = mysql_fetch_assoc($hent_car)) {
echo "<tr>";
echo "<td>".$row['home']."</td>";
echo "<td>".$row['away']."</td>";
echo "<td></td>";
echo "<td><input type=\"checkbox\" name=\"match_odds[]\" value=\"1\" class=\"checkbox\" /><small>".$row['1']."</small></td>";
echo "<td><input type=\"checkbox\" name=\"match_odds[]\" value=\"x\" /><small>".$row['x']."</small></td>";
echo "<td><input type=\"checkbox\" name=\"match_odds[]\" value=\"2\" /><small>".$row['2']."</small></td>";
echo "</tr>";
}
}
?>
Avatar billede simotho Nybegynder
21. oktober 2009 - 14:09 #1
Opper den lige engang
Avatar billede majbom Novice
21. oktober 2009 - 17:42 #2
skal du have hver kamps odds ind i hver sin række i databasen?
Avatar billede simotho Nybegynder
21. oktober 2009 - 17:44 #3
Jeps, så dem man har klikket af kommer ind i et array og ind i databasen
Avatar billede majbom Novice
21. oktober 2009 - 17:52 #4
du har dem jo i arrayet $_POST['match_odds'] når du gør som du har skrevet...

og så kan du løbe alle sammen igennem med:

$odds = $_POST['match_odds'];
foreach($odds as $odds_line){
  ...
}
Avatar billede simotho Nybegynder
21. oktober 2009 - 18:11 #5
Hvordan vil jeg så kunne indsætte hvor den finder id og sætter det ind til den række hvor den hører til?
Avatar billede majbom Novice
21. oktober 2009 - 19:24 #6
ja, der skal der nok laves lidt om på det, men når man oddser kan man så ikke kun vælge ÉN mulighed, enten 1, X ELLER 2?
Avatar billede simotho Nybegynder
21. oktober 2009 - 20:18 #7
Ja, man skal enten sætte flueben i 1, X(uafgjort) eller 2

Hvordan kan man så gøre, så man kun kan markere en checkbox for hver kamp + at den indsætter det man har valgt i databasen med kampens id?

Har en tabel som ser således ud:


CREATE TABLE `matches` (
  `id` int(4) NOT NULL auto_increment,
  `home` varchar(255) NOT NULL,
  `away` varchar(255) NOT NULL,
  `time` varchar(255) NOT NULL,
  `1` varchar(255) NOT NULL,
  `x` varchar(255) NOT NULL,
  `2` varchar(255) NOT NULL,
  `result` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

Så den skal ha fat i kampens id og føre det med over i en ny tabel, hvordan kan det gøres på den mest optimale måde? :s
Avatar billede majbom Novice
21. oktober 2009 - 20:42 #8
noget i denne stil måske:

<?php
include("includes/connect.php");
$hent_car = mysql_query("SELECT * FROM matches ORDER BY id DESC");
$count_car = mysql_num_rows($hent_car);
if ($count_car == 0) {
    echo "Tom";}else{
    while($row = mysql_fetch_assoc($hent_car)) {
        echo "<tr>";
        echo "<td>".$row['home']."</td>";
        echo "<td>".$row['away']."</td>";
        echo "<td></td>";
        echo "<td><input type=\"radio\" name=\"match_odds[".$row['id']."]\" value=\"1\" class=\"checkbox\" /><small>".$row['1']."</small></td>";
        echo "<td><input type=\"radio\" name=\"match_odds[".$row['id']."]\" value=\"x\" /><small>".$row['x']."</small></td>";
        echo "<td><input type=\"radio\" name=\"match_odds[".$row['id']."]\" value=\"2\" /><small>".$row['2']."</small></td>";
        echo "</tr>";
    }
}
?>
...
<?php
while($match = current($_POST['match_odds']){
    echo "ID: ".key($_POST['match_odds']).", VÆRDI: ".$match."<br>";
}
>

utestet...
Avatar billede simotho Nybegynder
21. oktober 2009 - 22:10 #9
Hver gang jeg vælger en kamp og trykker send, så loader den i monster lang tid og lukker derefter firefox ned.
Min kode ser således ud:

<?php
if($_POST['submit']){
while($match = current($_POST['match_odds'])){
echo "ID: ".key($_POST['match_odds']).", VÆRDI: ".$match."<br>";
}
}

include("includes/connect.php");
$hent_car = mysql_query("SELECT * FROM matches ORDER BY id DESC");
$count_car = mysql_num_rows($hent_car);
if ($count_car == 0) {
echo "Tom";
}else{
while($row = mysql_fetch_assoc($hent_car)) {
echo "<tr>";
echo "<td>".$row['home']."</td>";
echo "<td>".$row['away']."</td>";
echo "<td></td>";
echo "<td><input type=\"checkbox\" name=\"match_odds[]\" value=\"1\" class=\"checkbox\"  /><small>".$row['1']."</small></td>";
echo "<td><input type=\"checkbox\" name=\"match_odds[]\" id=\"x\" value=\"x\" /><small>".$row['x']."</small></td>";
echo "<td><input type=\"checkbox\" name=\"match_odds[]\" id=\"2\" value=\"2\" /><small>".$row['2']."</small></td>";
echo "</tr>";
}
}
?>

Kan du ikke også lige forklare hvad current($_POST['match_odds']) gør?

(Jeg har det liggende på localhost, så det kan ikke ha noget med forbindelsen at gøre)
Avatar billede simotho Nybegynder
22. oktober 2009 - 18:47 #10
Nogle som kan hjælpe?
Avatar billede majbom Novice
22. oktober 2009 - 20:29 #11
<?php
while($match = current($_POST['match_odds']){
    echo "ID: ".key($_POST['match_odds']).", VÆRDI: ".$match."<br>";
}
?>

skal være i den kode der skal smide det i databasen jo...
Avatar billede simotho Nybegynder
22. oktober 2009 - 20:49 #12
Ja, men den kan ikke loade siden færdig hvis jeg indsætter det stykke kode, ved ikke hvorfor?
Har du nogle ide om det?
Avatar billede majbom Novice
22. oktober 2009 - 21:04 #13
hvordan ser dine filer ud?

kan man se siden?
Avatar billede simotho Nybegynder
22. oktober 2009 - 21:27 #14
Koden er her:
http://simonthomsen.pastebin.com/m5aba7007

(Det ligger på localhost)
Avatar billede majbom Novice
23. oktober 2009 - 21:35 #15
du har heller ikke skrevet det som jeg gjorde:

echo "<td><input type=\"radio\" name=\"match_odds[".$row['id']."]\" value=\"1\" class=\"checkbox\" /><small>".$row['1']."</small></td>";
        echo "<td><input type=\"radio\" name=\"match_odds[".$row['id']."]\" value=\"x\" /><small>".$row['x']."</small></td>";
        echo "<td><input type=\"radio\" name=\"match_odds[".$row['id']."]\" value=\"2\" /><small>".$row['2']."</small></td>";

du mangler $row['id'] i name attributen
Avatar billede simotho Nybegynder
24. oktober 2009 - 01:07 #16
Problemet ligger i, at den er sindsyg lang tid om at loade når jeg vil kører de valgte kampe og sætte dem ind i den while som du har lavet som eksempel længere oppe :S

Ved du hvorfor den gør det?
Avatar billede majbom Novice
04. november 2010 - 13:05 #17
fik du løst dit problem?
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