Avatar billede schunck Juniormester
17. april 2011 - 23:52 Der er 10 kommentarer og
1 løsning

string afhænger af loop nummer

Hej har en post hvor den string jeg sender ændrer sig alt efter hvor mange gange den har været igennem et loop

for ($pi=1; $pi<=$mloop; $pi++) {
$scoresult = mysql_query("SELECT maal FROM spillerstat WHERE navn='her kommer problemet, se længere nede' ") or die(mysql_error());
while(list($gmaal) = mysql_fetch_row($scoresult)){
$nymaal = $gmaal+1;
        }
        mysql_query("UPDATE spillerstat SET maal='".$nymaal."'");
    }

Jeg har nogle forskellige værdier tilsendt alt efter hvor mange gange jeg har loopet tidligere.

Umiddelbart skulle det være noget i stil med: ".$maal".$pi."." men det kan man jo ikke. Hvad gør jeg?
18. april 2011 - 05:10 #1
Du kommer nok til at forklare problemstillingen lidt mere.  Jeg gaar ud fra at tabellen spillerstat holder rede paa hvor mange maal spillerne har scoret.  To spoergsmaal til at begynde med:

(1)  Du har saa en vaerdi staaende i $mloop, for eksempel 3.  Er formaalet med den kode du viser saa at give en bestemt spiller tre maal mere eller at give tre forskellige spillere hver et maal mere?

(2)  Hvad har du staaende under navn i spillerstat?  Er det en tekststreng med navnet paa spillerne eller er det et tal med spillernummeret?

Hvis navn indeholder et tal og du vil give spiller 1, 2, og 3 hver et point mere kan du skippe selecten og koden bliver saa:

for($pi=1; $pi<=$mloop; $pi++)
{
  mysql_query("UPDATE spillerstat SET maal = maal + 1 WHERE navn = $pi")
}

Hvis du vil give en bestemt spiller tre maal mere kan du skippe loopen og selecten, og din kode bliver saa:

mysql_query("UPDATE spillerstat SET maal = maal + '$mloop' WHERE navn = [den paagaeldende spillers navn]");

I sidstnaevnte tilfaelde har jeg derfor spoergsmaal (3):  Hvordan kender du navnet paa den spiller der skal have tre points mere?

Jeg staar og skal afsted, koere til Nordjylland fra Belgien, saa jeg faar ikke set dit svar foer engang i aften.  (Men maaske faar du i mellemtiden svar fra andre medlemmer i mellemtiden.)
Avatar billede schunck Juniormester
18. april 2011 - 13:30 #2
Jeg tror det er nemmest at forklare hvis du får resten med:
----------------------------------
//målloop
echo "<tr><td class='tbl'><u>Mål</u></td></tr>\n";
for ($i=1; $i<=$mloop; $i++) {
    echo "<tr>\n";
    echo "<td class='tbl'>Mål ".$i." blev scoret af:</td>\n";
    echo "<td class='tbl'><select name='maal".$i."' class='textbox'>\n";
    echo "<option value=''></option>\n";
$mal = mysql_query("select navn from spillerstat ORDER BY navn ASC");
while(list($name) = mysql_fetch_row($mal)){
    echo "<option value='".$name."'>".$name."</option>\n";
}
    echo "</select></td><td></td><td></td>\n";
    echo "<td class='tbl'>Assist ".$i." blev lavet af:</td>\n";
    echo "<td class='tbl'><select name='assist".$i."' class='textbox'>\n";
    echo "<option value=''></option>\n";
$assist = mysql_query("select navn from spillerstat ORDER BY navn ASC");
while(list($name) = mysql_fetch_row($assist)){
    echo "<option value='".$name."'>".$name."</option>\n";
}
    echo "</select></td></tr>\n";
  }
----------------------------------
Det er navnet på spilleren, jeg har stående i feltet navn. Ideen er, at man forinden har valgt, hvor mange mål, der skal sættes ind i systemet ($mloop). Den spiller, der så vælges, skal så have tilført ét mål, og to hvis den samme vælges flere gange, og evt. tre hvis personen har en fantastisk dag ;)
Det samme kommer så til at gentage sig med assist, og senere korttyper også.
Håber det giver mening.
18. april 2011 - 22:08 #3
Det er ikke saa let at faa hoved og hale i.  Jeg tror ikke du har givet hele koden.  Lad mig goere nogle antagelser, som du saa kan bekraefte eller korrigere:

Tabellen spillerstat har (mindst) kolonnerne maal, assist, og navn, hvor for eksempel Hans har 7 maal pg  3 assists (hvad det saa maatte vaere) og Jens har 12 maal og 8 assists og Ole har 3 maal og 2 assists.

Saa vil du kunne udvaelge en spiller og give denne spiller et maal mere eller en assist mere.  Du udvaelger spilleren ved at placere alle spilleres navne i en 'drop-down' liste og klikke navnet paa den spiller der skal have et ekstra maal eller en ekstra assist.

Det saetter du i system saaledes at hvis du vil uddele, for eksempel, 3 maal og 3 assists saa saetter du $mloon = 3, og du laver en tabel med tre raekker og i hver raekke danner en 'drop-down' liste for maal og en 'drop-down' liste for assists.

Det er det koden i #3 goer.  Har jeg ret indtil nu?

Men naar du saa har klikket paa en spiller i en drop-down liste, saa skal der vaere noget kode der indfanger spillerens navn i en variabel, for eksempel $spiller.  Enten noget java-script der kaldes ved en on_click event eller en html formular med en submit knap.  Hvor har du denne kode?

Naar den valgte spillers navn er indfanget i variabelen saa er det nemt at opdatere spillerstat, for eksempel

mysql_query("UPDATE spillerstat SET maal = maal + 1 WHERE navn 0 $spiller");
Avatar billede schunck Juniormester
19. april 2011 - 02:03 #4
jeg benytter en html formular med en submit:
Hele stykket ser sådan her ud:

------
if ($step=='2') {
$mloop=$_GET['mloop'];
$gloop=$_GET['gloop'];
$rloop=$_GET['rloop'];
$larsid=$_GET['kampid'];
$cleansheet=$_GET['cs'];
    //step 2 update

if(isset($_POST['update_step2'])) {
IF ($_SERVER["REQUEST_METHOD"]=="POST" ) {
//kampstat spillere til kamp
    $tilkamp = $spillerkamp1;
    $tilkamp .= $spillerkamp2;
    $tilkamp .= $spillerkamp3;
    $tilkamp .= $spillerkamp4;
    $tilkamp .= $spillerkamp5;
    $tilkamp .= $spillerkamp6;
    $tilkamp .= $spillerkamp7;
    $tilkamp .= $spillerkamp8;
    $tilkamp .= $spillerkamp9;
    $tilkamp .= $spillerkamp10;
    $tilkamp .= $spillerkamp11;
    $tilkamp .= $spillerkamp12;
    $tilkamp .= $spillerkamp13;
    $tilkamp .= $spillerkamp14;
    $tilkamp .= $spillerkamp15;
    $tilkamp .= $spillerkamp16;
    $tilkamp .= $spillerkamp17;
mysql_query("UPDATE kampstat SET spiller='".$tilkamp."' WHERE kampid='".$larsid."'");
//kampstat mål i kamp

//kampstat gk i kamp

//kampstat rk i kamp

//spillerstat målupdate   
for ($pi=1; $pi<=$mloop; $pi++) {
$scoresult = mysql_query("SELECT maal FROM spillerstat WHERE navn='' ") or die(mysql_error());
while(list($gmaal) = mysql_fetch_row($scoresult)){
$nymaal = $gmaal+1;
        }
        mysql_query("UPDATE spillerstat SET maal='".$nymaal."' WHERE navn=''");
    }
//spillerstat gkupdate

//spillerstat rkupdate

//spillerstat csupdate
$csresult = mysql_query("SELECT cs FROM spillerstat WHERE id='".$celas."' ") or die(mysql_error());
while(list($gcs) = mysql_fetch_row($csresult)){
$nycs = $gcs+1;
        }
        mysql_query("UPDATE spillerstat SET cs='".$nycs."' WHERE id='".$celas."'");
//redirect   
        ob_start();
        header("Location: $PHP_SELF?page_id=16");
        ob_flush();
        exit();   
}
   
}
//step 2


echo "<table cellspacing='2' cellpadding='2' border='0'><form name='step2' method='post'><tr>\n";
echo "<td class='tbl'><b>Vælg aktører</b></td></tr>\n";
echo "<tr><td class='tbl' valign='top'><u>Spillere til kamp</u><br>Vælg spillere:</td>\n";
echo "<td class='tbl' colspan='5'><table><tr>\n";
$spil = mysql_query("select * from spillerstat WHERE id!='0' ORDER BY navn ASC");
$j = 1;
while(list($id,$name) = mysql_fetch_row($spil)){
    if($j==3){
        echo "<td class='tbl'><input type='checkbox' name='spillerkamp".$id."' class='textbox' value='".$name."&#10;'> ".$name."</td></tr><tr>\n";
    $j = 1;
        } else {
        echo "<td class='tbl'><input type='checkbox' name='spillerkamp".$id."' class='textbox' value='".$name."&#10;'> ".$name."</td>\n";
    $j++;
}
    }
    echo "</tr></table>\n";
echo "</td></tr>\n";
//målloop
echo "<tr><td class='tbl'><u>Mål</u></td></tr>\n";
for ($i=1; $i<=$mloop; $i++) {
    echo "<tr>\n";
    echo "<td class='tbl'>Mål ".$i." blev scoret af:</td>\n";
    echo "<td class='tbl'><select name='maal".$i."' class='textbox'>\n";
    echo "<option value=''></option>\n";
$mal = mysql_query("select navn from spillerstat WHERE id!='0' ORDER BY navn ASC");
while(list($name) = mysql_fetch_row($mal)){
    echo "<option value='".$name."'>".$name."</option>\n";
}
    echo "</select></td><td></td><td></td>\n";
    echo "<td class='tbl'>Assist ".$i." blev lavet af:</td>\n";
    echo "<td class='tbl'><select name='assist".$i."' class='textbox'>\n";
    echo "<option value=''></option>\n";
$assist = mysql_query("select navn from spillerstat WHERE id!='0' ORDER BY navn ASC");
while(list($name) = mysql_fetch_row($assist)){
    echo "<option value='".$name."'>".$name."</option>\n";
}
    echo "</select></td></tr>\n";
  }
// gultloop
echo "<tr><td class='tbl'><u>Gule kort</u></td></tr>\n";
for ($k=1; $k<=$gloop; $k++) {
    echo "<tr>\n";
    echo "<td class='tbl'>Det ".$k.". gule kort blev givet til:</td>\n";
    echo "<td class='tbl'><select name='gk".$k."' class='textbox'>\n";
    echo "<option value=''></option>\n";
$gultk = mysql_query("select navn from spillerstat WHERE id!='0' ORDER BY navn ASC");
while(list($name) = mysql_fetch_row($gultk)){
    echo "<option value='".$name."'>".$name."</option>\n";
}
    echo "</select></td></tr>\n";
    }
// rødtloop
echo "<tr><td class='tbl'><u>Røde kort</u></td></tr>\n";
for ($r=1; $r<=$rloop; $r++) {
    echo "<tr>\n";
    echo "<td class='tbl'>Det ".$r.". røde kort blev givet til:</td>\n";
    echo "<td class='tbl'><select name='gk".$r."' class='textbox'>\n";
    echo "<option value=''></option>\n";
$rodk = mysql_query("select navn from spillerstat WHERE id!='0' ORDER BY navn ASC");
while(list($name) = mysql_fetch_row($rodk)){
    echo "<option value='".$name."'>".$name."</option>\n";
}
    echo "</select></td></tr>\n";
    }
// Cleansheet
echo "<tr><td class='tbl'><u>Clean Sheet</u></td></tr>\n";
    if ($cs=='Y'){
    echo "<tr>\n";
    echo "<td class='tbl'>Målet blev holdt rent af:</td>\n";
    echo "<td class='tbl'><select name='celas' class='textbox'>\n";
    echo "<option value=''></option>\n";
$cela = mysql_query("select id,navn from spillerstat WHERE id!='0' ORDER BY navn ASC");
while(list($id,$name) = mysql_fetch_row($cela)){
    echo "<option value='".$id."'>".$name."</option>\n";
}
    echo "</select></td>\n";
}
    echo "<tr><td class='tbl' colspan='6' align='center'><input type='submit' name='update_step2' value='Tilføj statistik' class='button'></form></td></tr></table>\n";
}

       
?>
------

Mit problem, også med koden du har skrevet, er at $spiller ændrer sig, hver gang der er blevet loopet. Og den skal jo gerne være unik. Jeg har tilsat $i (loop nr.) på variablen for at gøre den unik, men hvordan fremkalder jeg den igen i POST-delen?
19. april 2011 - 16:55 #5
Jeg beklager min passivitet der nok vil vare et par dage mere mens jeg rejser rundt i Danmark paa familiebesoeg.
Avatar billede schunck Juniormester
20. april 2011 - 10:29 #6
Helt i orden. Jeg er selv på besøg hos svigerfamilien i Jylland i disse dage, og tjekker heller ikke så ofte ;D
Avatar billede schunck Juniormester
20. april 2011 - 16:09 #7
Jeg har tilladt mig lige at korte scriptet ned til noget der er mere overskueligt:

-----------------------
<?
    if (isset($_GET['step'])) {
$step=$_GET['step'];
} else {
$step = 1;
}

include "connect.php";

if ($step=='1'){
//loopfunktion
//step 1 update
if(isset($_POST['update_step1'])) {
IF ($_SERVER["REQUEST_METHOD"]=="POST" ) {
        ob_start();
        header("Location: $PHP_SELF?step=2&mloop=".$maalffa06."");
        ob_flush();
    exit();
    }
}
//step 1
echo "<form name='step1' method='post'><b>Step 1</b><br>\n";
echo "Mål: <input type='text' name='maalffa06' value='0' maxlength='3' class='textbox' style='width:20px;'><br>\n";
echo "<input type='submit' name='update_step1' value='Gå til næste skridt' class='button'></form>\n";
}

if ($step=='2'){
//step 2 update
if(isset($_POST['update_step2'])) {
IF ($_SERVER["REQUEST_METHOD"]=="POST" ) {
    for ($pi=1; $pi<=$mloop; $pi++) {


// HVAD SKAL DER STÅ PÅ NÆSTE LINJE?
    echo "".$maal1."<br>\n";;
// HVAD SKAL DER STÅ PÅ FORRIGE LINJE?


}
    }
}
//step 2
echo "<form name='step2' method='post'><b>Step 2:</b>\n";
for ($i=1; $i<=$mloop; $i++) {
    echo "<br>Mål ".$i." blev scoret af:\n";
    echo "<select name='maal".$i."' class='textbox'>\n";
    echo "<option value=''></option>\n";
    echo "<option value='Jesper'>Jesper</option>\n";
        echo "<option value='Lars'>Lars</option>\n";
        echo "<option value='Johan'>Johan</option>\n";
        echo "<option value='Andreas'>Andreas</option>\n";
        echo "<option value='Bilal'>Bilal</option>\n";
    echo "</select>\n";
    }
    echo "<br><input type='submit' name='update_step2' value='Tilføj statistik' class='button'></form>\n";
}
?>
--------------------
Nu er tanken så i dette script, at jeg gerne vil have navnene der bliver postet til "Step 2 Update", bliver vist i den rækkefølge de er valgt i FORM i step2
Avatar billede schunck Juniormester
20. april 2011 - 19:32 #8
jeg har luret den...

    echo "".$maal1."<br>\n";;

rettes til:
    $peter = 'maal';
    $peter .= $pi;
    echo "".$$peter."<br>\n";

Smid et svar... så får du point for din ihærdighed
22. april 2011 - 07:50 #9
Jeg er nu tilbage.  Svar fr amig.
24. april 2011 - 08:26 #10
schunck, kan jeg bede dig lukke spoergsmaalet, for god ordens skyld og saa det ikke laengere staar som aabent i min liste af indlaeg.  Hvis du har aendret mening om points til mig, saa opret selv et svar og accepter det.  Men luk spoergsmaalet.  Please.
Avatar billede schunck Juniormester
24. april 2011 - 10:40 #11
Sorry, det tog så lang tid. Skulle lige hjem fra Jylland ;)

Og tak for hjælpen
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