Avatar billede lsskaarup Nybegynder
20. april 2005 - 21:33 Der er 8 kommentarer og
1 løsning

Hjælp til smartest at lave en side til kampinfo

Ja, jeg har et lille problem, som jeg mærkeligt nok gerne vil have lidt hjælp til.

Jeg har lavet en side, hvor man kan indtaste henholdsvis hjemmehold, udehold, hvor mange mål de hver især scorede, samt dato for kampen. Ved "Upload" bliver data gemt i en tabel, og siden kalder en ny side, hvor man skal udfylde eventuelle målscorer og assistspillere. Den har jeg så fået lavet sådan at, målscorer og assist skal udfyldes via en select, hvor indhold hentes fra bruger/spillertabellen. Antallet af selects kommer selvfølgelig an på hvor mange scoringer der faldt i kampen.

Og det er så her problemerne begyndte at melde sig. Hvordan skulle jeg navngive selectene, så jeg kunne identificere hver enkelt. Dette løste jeg via en forløkke, hvor jeg tager index fra og lægge i rø... af navnet på selecten, og det fungere godt nok indtil jeg skal have fat i dem igen, for at gemme indholdet i databasen. Her bruger jeg igen en forløkke, for at få skabt nummeringen. Men jeg kan kun få fat i én select af gang, og hvis jeg echo'er dem begge, ser det ud til at løkken køre uendeligt, selvom jeg har sat maks til antal scoringer.

Så jeg vil godt have lidt hjælp til enten at finde ud af hvorfor jeg har problemer med forløkken, eller også kan I komme med smartere måder og gøre det på.
Avatar billede lsskaarup Nybegynder
20. april 2005 - 21:35 #1
Koden er her:

//laver x antal række med selects, alt efter hvor mange mål der er scoret
for ($i=1; $i<=$info[udMaal]; $i++){?>
                                                                        <tr>
                                                                            <td class="tekst">Målscorer:</td>
                                                                            <td>
                                                                                <select name="maal<?=$i;?>">
                                                                                    <option></option>
                                                                                    <? $spiller = mysql_query("SELECT * FROM ifabruger WHERE brugertype='3'");
                                                                                    while ($spil = mysql_fetch_array($spiller)){?>
                                                                                        <option value="<?=$spil[id];?>"><? echo $spil[fornavn] . " ". $spil[efternavn];?></option>
                                                                                    <? }?>
                                                                                </select>
                                                                            </td>
                                                                            <td class="tekst">Assist:</td>
                                                                            <td>
                                                                                <select name="assist<?=$i;?>">
                                                                                    <option></option>
                                                                                    <? $spiller = mysql_query("SELECT * FROM ifabruger WHERE brugertype='3'");
                                                                                    while ($spil = mysql_fetch_array($spiller)){?>
                                                                                        <option value="<?=$spil[id];?>"><? echo $spil[fornavn] . " ". $spil[efternavn];?></option>
                                                                                    <? }?>
                                                                                </select>
                                                                            </td>
                                                                        </tr>
                                                                        <tr>
                                                                            <td class="tekst" width="40%"><?=$besked?></td><td width="20%"><input name="antal" type="hidden" value="<?=$i;?>"><input name="rettype" type="hidden" value="redigere"><input name="kampId" type="hidden" value="<?=$_GET[kampId]?>"><input name="submit" type="submit" value="Upload"></td><td><input name="submit" type="submit" value="Slet"></td>
                                                                        </tr>
                                                                    <? }

//Her skulle data gerne fanges og gemme i db, som I kan se har jeg en masse echo'er for at se hvad der går galt.
if (isset($_POST['submit']) && $_POST['submit'] == "Upload" && $_POST['rettype'] == "redigere") {
    $antal = $_POST['antal']."<br>";
    $str;
    for ($i=1; $i<=$antal; $i++) {
        //echo $str = maal.$i;
        $mid.$i = $_POST[maal.$i]." ";
        echo $aid.$i = $_POST[assist.$i]."<br>";
        /*$kamp.$i = $_POST[kampId.$i];
       
        $str = " "."INSERT INTO kampmaal (spillerId) VALUES ('".$_POST[maal.$i]."')";
*/    }
Avatar billede voirsous Nybegynder
20. april 2005 - 22:57 #2
Det er lidt svært at se hvad din kode går ud på, kan du ikke prøve at lave en .phps fil og evt. smide den op?
Anyway så er det da dumt at du beder databasen om at udskrive alle spillerne hver gang, gør det en gang og lig dem i et array som du så kan hente i din for løkke. SÅ sparer du nogle querys :)
Avatar billede lsskaarup Nybegynder
20. april 2005 - 23:42 #3
Ja det ville selvfølgelig være bedre. Nå, men jeg har selv fået løst problemet med at den ikke fangede assistspillerens id. Ved egentlig ikke hvorfor, for jeg synes ikke der er så stor forskel, selvom jeg har fjernet nogle koderstumper som jeg tidligere havde glemte fra nogle echo's.

Resultat:
if ($_POST['submit'] == "Upload"){
    $antal = $_POST['antal'];
    $str;
    for ($i=1; $i<=$antal; $i++) {
        //$i=$i+1;
        //echo $str = maal.$i;
        $mid = $_POST[maal.$i];
        $aid = $_POST[assist.$i];
        $kamp = $_POST[kampId];
       
        $str = "INSERT INTO kampmaal (spillerId, kampId, maal, assist) VALUES ('$mid', '$kamp')";
    }
}

Men hvordan får jeg løst følgende senarie.

Den samme spiller scorer flere gange og/eller lægger op til flere scoringer. Hvordan får jeg talt dem samme, og lagt i kun én samlet record, i stedet for en record for hver scoring/assist?
Avatar billede lsskaarup Nybegynder
20. april 2005 - 23:48 #4
Altså, hvordan gør jeg, så jeg kan fange hver enkelt select og lægge mål/assist info sammen, hvis spillerId'et er modtaget tidligere?
Avatar billede voirsous Nybegynder
21. april 2005 - 10:49 #5
Du behøver ev.t ikke maal feltet.
SÅ hver række i kampmaal er en scoring
Du kan hente antal mål fra en spiller ala
SELECT ... FROM kampmaal WHERE spillerId =  ... AND kampID = ...;
Avatar billede lsskaarup Nybegynder
21. april 2005 - 11:38 #6
Naaa, det skal bruges til en samlet oversigt over både målscoringer og assists.

Jeg vil bare gerne gemme det pr. kamp, så man også kan gå ind og se hvem der scorede i hvilken kampe og lignede. Og det virker godt nok, så jeg også får en oversigt ud, for hver spiller som har enten scoret/assist, hvor jeg kan se antal mål, antal assist og en samlet.

Så kamptabellen indeholder data om selve kampen -> hold, dato og antal mål.
Kampmaal (lidt misvisende navn måske) har så detaljerne -> hvem scorede og hvem lagde op til scoringerne.

Kampmaal joiner jeg så med min bruger/spillertabel, så jeg kan hive både mål/assist og navn ud, og det virker altså.

Så problemet er altså "bare", hvordan jeg smarteste får gemt data i kampmaal.
Avatar billede lsskaarup Nybegynder
25. april 2005 - 13:46 #7
nogen ide??
Avatar billede lsskaarup Nybegynder
20. maj 2005 - 11:27 #8
Hallo
Avatar billede lsskaarup Nybegynder
23. maj 2005 - 08:17 #9
Hmmm, ingen hjælp
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