17. april 2011 - 23:52Der 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?
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.)
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.
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");
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." '> ".$name."</td></tr><tr>\n"; $j = 1; } else { echo "<td class='tbl'><input type='checkbox' name='spillerkamp".$id."' class='textbox' value='".$name." '> ".$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?
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
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.
Sorry, det tog så lang tid. Skulle lige hjem fra Jylland ;)
Og tak for hjælpen
Synes godt om
Ny brugerNybegynder
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.