loop door veel variabelen

Status
Niet open voor verdere reacties.

whitetigerck

Gebruiker
Lid geworden
8 aug 2008
Berichten
196
Nadat mijn vorige vraag succesvol is opgelost ben ik verder gegaan :) Nu probeer ik een loop te gebruiken door een groot stuk code met veel variabelen die vervolgens worden opgeslagen in een database, echter als ik deze code doe:
PHP:
for ( $counter = 1; $counter <= 5; $counter += 1) {
 //mijn code 
}
Dan krijg ik alleen de waardes van het eerste resultaat. Hoe kan ik dat veranderen, behalve door de code 5 keer te copy-pasten en variabelen veranderen?

Dit is de code die ik in de loop wil gebruiken:
PHP:
$query = "SELECT * FROM jeugdleden ORDER BY voornaam DESC";



$result = mysql_query($query)
       or die ("Couldn't execute query 1.");
 


echo "1 <select name='speler1'>";
echo "<option></option>";
    while ($row = mysql_fetch_array($result))
        {
        extract($row);
		
        echo "<option>$naam</option>";
        }
echo "</select> - ";

$result = mysql_query($query)
       or die ("Couldn't execute query 2.");
	   
echo "<select name='speler2'>";
echo "<option></option>";
    while ($row = mysql_fetch_array($result))
        {
        extract($row);
        echo "<option>$naam</option>";
        }
echo "</select>  ";

echo "<select name='uitslag1'>";

        echo "<option value=1>1-0</option>";
		echo "<option value=2>rem</option>";
		echo "<option value=3>0-1</option>";

echo "</select><br>";



//Als zenden JA is moet de formulier gestuurd worden. 
if ($_SERVER['REQUEST_METHOD'] == "POST") {  
#_________________________________________
if (isset($_POST[speler1]))
    {



    	$query = "SELECT * FROM jeugdleden WHERE naam = '$_POST[speler1]'";
   		$result = mysql_query($query)
            or die ("couldn't execute query 3.");


			    while ($row = mysql_fetch_array($result))
        {    	echo "<br><br>succes";
		
		$wgespeeld = $row['gespeeld'];
		$wgewonnen = $row['gewonnen'];
		$wremise = $row['remise'];
		$wverloren = $row['verloren'];
		$wpunten = $row['punten'];

		
		$uitslag1=(int)$_POST['uitslag1'];
		
			if($uitslag1==1)
			{
				$wsom1="1";
				$wgewonnennieuw = $wgewonnen + 1;
				$wremisenieuw = $wremise;
				$wverlorennieuw = $wverloren;
				$resultaatmatch = "1-0";
			}
			if($uitslag1==2)
			{
				$wsom1="0.5";
				$wremisenieuw = $wremise + 1;
				$wgewonnennieuw = $wgewonnen;
				$wverlorennieuw = $wverloren;
				$resultaatmatch = "½-½";
			}
			if($uitslag1==3)
			{
				$wsom1="0";
				$wverlorennieuw = $wverloren + 1;
				$wgewonnennieuw = $wgewonnen;
				$wremisenieuw = $wremise;
				$resultaatmatch = "0-1";
			}

		$wgespeeldnieuw = $wgespeeld + 1;
		$wpuntennieuw = $wpunten + $wsom1;
	 		while($wpuntennieuw < 0)
				{
   					 $wpuntennieuw++;
				}
$wwinstpercentage = $wpuntennieuw / $wgespeeldnieuw *100;

echo $wwinstpercentage;
        }  
		

		
		 
    } else { echo "failure";}
			#	_______________________________________
		
		if (isset($_POST[speler2]))
    {



    	$query = "SELECT * FROM jeugdleden WHERE naam = '$_POST[speler2]'";
   		$result = mysql_query($query)
            or die ("couldn't execute query 3.");


			    while ($row = mysql_fetch_array($result))
        {    	echo "<br><br>succes2";
		
		$zgespeeld = $row['gespeeld'];
		$zgewonnen = $row['gewonnen'];
		$zremise = $row['remise'];
		$zverloren = $row['verloren'];
		$zpunten = $row['punten'];

		
		$uitslag1=(int)$_POST['uitslag1'];
		
			if($uitslag1==1)
			{
				$zsom1="0";
				$zgewonnennieuw = $zgewonnen;
				$zremisenieuw = $zremise;
				$zverlorennieuw = $zverloren + 1;
			}
			if($uitslag1==2)
			{
				$zsom1="0.5";
				$zremisenieuw = $zremise + 1;
				$zgewonnennieuw = $zgewonnen;
				$zverlorennieuw = $zverloren;
			}
			if($uitslag1==3)
			{
				$zsom1="1";
				$zverlorennieuw = $zverloren;
				$zgewonnennieuw = $zgewonnen + 1;
			}

		$zgespeeldnieuw = $zgespeeld + 1;
		$zpuntennieuw = $zpunten + $zsom1;
	 		while($zpuntennieuw < 0)
				{
   					 $zpuntennieuw++;
				}
				$zwinstpercentage = $zpuntennieuw / $zgespeeldnieuw * 100;

        }
		} else { echo "failure2";}
		#+++++++++++++++++++++++++
					$query23 = "UPDATE jeugdleden SET punten = '".$wpuntennieuw."', gespeeld = '".$wgespeeldnieuw."', gewonnen = '".$wgewonnennieuw."', remise = '".$wremisenieuw."', verloren = '".$wverlorennieuw."', winstpercentage = '".$wwinstpercentage."' WHERE naam = '".$_POST[speler1]."'";
 $result = mysql_query($query23)
            or die ("couldn't execute query 23");
			
	$query24 = "UPDATE jeugdleden SET punten = '".$zpuntennieuw."', gespeeld = '".$zgespeeldnieuw."', gewonnen = '".$zgewonnennieuw."', remise = '".$zremisenieuw."', verloren = '".$zverlorennieuw."', winstpercentage = '".$zwinstpercentage."' WHERE naam = '".$_POST[speler2]."'";
	 $result = mysql_query($query24)
	             or die ("couldn't execute query 17");
				 
$query25 = "INSERT INTO jeugdpartijen (wit,zwart,uitslag,ronde,datumgespeeld) VALUES ('$_POST[speler1]','$_POST[speler2]','$resultaatmatch','$_POST[ronde]','$_POST[datumgespeeld]')";
	 $result = mysql_query($query25)
	             or die ("couldn't execute query 25");

}}

Ik zou het liefst dit variabel willen maken, dus niet 5 keer copy-pasten en waarden aanpassen, zodat het aantal ingevulde entries ook variabel kan worden gemaakt. Hopelijk is dat ook mogelijk:)

Alvast bedankt voor de hulp
 
Laatst bewerkt:
$counter += 1

Even snel mijn gedachte: moet dat niet zijn $counter++ ?
 
$counter += 1

Even snel mijn gedachte: moet dat niet zijn $counter++ ?

Dat maakt niet uit. Het betekent beide precies hetzelfde.


Ik snap niet helemaal wat je wilt bereiken met je lus. Op dit moment voer je 5 keer precies dezelfde code uit.
 
Ik wil 5 keer,of een ander getal dat de gebruiker kan kiezen, de mogelijkheid om een result in te voeren, dus 5 keer de rij met de 3 comboboxen:
site23a.jpg


Maar wel zo dat elke variabele weer een andere variabele is, want anders krijg je volgens mij telkens het resultaat van alleen de eerste 5 keer, alleen heb ik niet echt een idee hoe ik dat moet doen :P
 
Je kunt een array maken van je input velden, dan komt alle data ook binnen in arrays.
Dan kun je de berekeningen uitvoeren op de velden in de array.

Dus maak je form ipv:
HTML:
<input name="naam" type="text" />
eens zo:
HTML:
<input name="naam[]" type="text" />

Dan krijg je in $_POST['naam'] een array, met daarin alle velden die ingevoerd zijn. Dan kun je met je loop:

PHP:
for ( $i = 0 ; $i < count ( $_POST['naam'] ) ; $i++ ) {
  $naam = $_POST['naam'][ $i ];
  // herhaal voor elke andere variabele die je nodig hebt
}

over alle invoer rijen heen lopen.

Succes!
 
ik heb gedaan wat je zei, er zijn 3 keuze variabelen: speler1, speler2 en uitslag1, daar heb ik dus netjes speler1[], speler2[] en uitslag1[] van gemaakt.
Vervolgens heb ik de codes zo neergezet: $speler1 = $_POST['speler1'][$i];

maar als ik $speler1 echo dan krijg ik niks en $speler1[$i] ook niet en bij $speler['$i'] krijg ik de foutmelding
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/web5/20/32/51997132/htdocs/A_Jeugdleden test/option23.php on line 148

Dit is de code voor het herhalen, die ik nu heb:

PHP:
for ( $counter = 1; $counter <= 5; $counter += 1) {

//--------------------------------------------------------------------------------
$query = "SELECT * FROM jeugdleden ORDER BY voornaam DESC";



$result = mysql_query($query)
       or die ("Couldn't execute query 1.");
 


echo "$counter <select name='speler1[]'>";
echo "<option></option>";
    while ($row = mysql_fetch_array($result))
        {
        extract($row);
		
        echo "<option>$naam</option>";
        }
echo "</select> - ";

$result = mysql_query($query)
       or die ("Couldn't execute query 2.");
	   
echo "<select name='speler2[]'>";
echo "<option></option>";
    while ($row = mysql_fetch_array($result))
        {
        extract($row);
        echo "<option>$naam</option>";
        }
echo "</select>  ";

echo "<select name='uitslag1[]'>";

        echo "<option value=1>1-0</option>";
		echo "<option value=2>rem</option>";
		echo "<option value=3>0-1</option>";

echo "</select><br>";

 }
 
 for ( $i = 0 ; $i < count ( $_POST['speler1[]'] ) ; $i++ ) {
$speler1 = $_POST['speler1'][$i];
$speler2 = $_POST['speler2'][$i];
$uitslag1 = $_POST['uitslag1'][$i];

}
echo "<br> $speler1[$i] <br> $speler2[$i] <br> $uitslag1[$i] <br>";
In mijn database staat wel het woord array, maar daar kan ik nu niks mee.

Ik moest toch alleen die 3 variabelen aanpassen?
Wat doe ik verkeerd? Of hoe gebruik ik die array juist?

Hier is de code waarbij ik de data verwerk:
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST") {  

if($_POST['ronde'] && is_numeric($_POST['ronde'])) { 
#_________________________________________
if (isset($_POST[speler1]))
    {



    	$query = "SELECT * FROM jeugdleden WHERE naam = '$speler1'";
   		$result = mysql_query($query)
            or die ("couldn't execute query 3.");


			    while ($row = mysql_fetch_array($result))
        {    	echo "<br><br>succes";
		
		$wgespeeld = $row['gespeeld'];
		$wgewonnen = $row['gewonnen'];
		$wremise = $row['remise'];
		$wverloren = $row['verloren'];
		$wpunten = $row['punten'];

		
		$uitslag1=(int)$_POST['uitslag1'];
		
			if($uitslag1==1)
			{
				$wsom1="1";
				$wgewonnennieuw = $wgewonnen + 1;
				$wremisenieuw = $wremise;
				$wverlorennieuw = $wverloren;
				$resultaatmatch = "1-0";
			}
			if($uitslag1==2)
			{
				$wsom1="0.5";
				$wremisenieuw = $wremise + 1;
				$wgewonnennieuw = $wgewonnen;
				$wverlorennieuw = $wverloren;
				$resultaatmatch = "½-½";
			}
			if($uitslag1==3)
			{
				$wsom1="0";
				$wverlorennieuw = $wverloren + 1;
				$wgewonnennieuw = $wgewonnen;
				$wremisenieuw = $wremise;
				$resultaatmatch = "0-1";
			}

		$wgespeeldnieuw = $wgespeeld + 1;
		$wpuntennieuw = $wpunten + $wsom1;
	 		while($wpuntennieuw < 0)
				{
   					 $wpuntennieuw++;
				}
$wwinstpercentage = $wpuntennieuw / $wgespeeldnieuw *100;

echo $wwinstpercentage;
        }  
		

		
		 
    } else { echo "failure";}
			#	_______________________________________
		
		if (isset($_POST[speler2]))
    {



    	$query = "SELECT * FROM jeugdleden WHERE naam = '$speler2'";
   		$result = mysql_query($query)
            or die ("couldn't execute query 3.");


			    while ($row = mysql_fetch_array($result))
        {    	echo "<br><br>succes2";
		
		$zgespeeld = $row['gespeeld'];
		$zgewonnen = $row['gewonnen'];
		$zremise = $row['remise'];
		$zverloren = $row['verloren'];
		$zpunten = $row['punten'];

		
		$uitslag1=(int)$_POST['uitslag1'];
		
			if($uitslag1==1)
			{
				$zsom1="0";
				$zgewonnennieuw = $zgewonnen;
				$zremisenieuw = $zremise;
				$zverlorennieuw = $zverloren + 1;
			}
			if($uitslag1==2)
			{
				$zsom1="0.5";
				$zremisenieuw = $zremise + 1;
				$zgewonnennieuw = $zgewonnen;
				$zverlorennieuw = $zverloren;
			}
			if($uitslag1==3)
			{
				$zsom1="1";
				$zverlorennieuw = $zverloren;
				$zgewonnennieuw = $zgewonnen + 1;
			}

		$zgespeeldnieuw = $zgespeeld + 1;
		$zpuntennieuw = $zpunten + $zsom1;
	 		while($zpuntennieuw < 0)
				{
   					 $zpuntennieuw++;
				}
				$zwinstpercentage = $zpuntennieuw / $zgespeeldnieuw * 100;

        }
		} else { echo "failure2";}
		#+++++++++++++++++++++++++
$datumgespeeld = "$_POST[year]-$_POST[month]-$_POST[day]";
echo "<br> $datumgespeeld <br>";
		
					$query23 = "UPDATE jeugdleden SET punten = '".$wpuntennieuw."', gespeeld = '".$wgespeeldnieuw."', gewonnen = '".$wgewonnennieuw."', remise = '".$wremisenieuw."', verloren = '".$wverlorennieuw."', winstpercentage = '".$wwinstpercentage."' WHERE naam = '".$speler1."'";
 $result = mysql_query($query23)
            or die ("couldn't execute query 23");
			
	$query24 = "UPDATE jeugdleden SET punten = '".$zpuntennieuw."', gespeeld = '".$zgespeeldnieuw."', gewonnen = '".$zgewonnennieuw."', remise = '".$zremisenieuw."', verloren = '".$zverlorennieuw."', winstpercentage = '".$zwinstpercentage."' WHERE naam = '".$speler2."'";
	 $result = mysql_query($query24)
	             or die ("couldn't execute query 17");
				 
$query25 = "INSERT INTO jeugdpartijen (wit,zwart,uitslag,ronde,datumgespeeld) VALUES ('$speler1','$speler2','$resultaatmatch','$_POST[ronde]','$datumgespeeld')";
	 $result = mysql_query($query25)
	             or die ("couldn't execute query 25");

}else { echo "alleen getallen invoeren bij ronde!"; }}

De code voor het verwerken is toch goed, daar moet toch niets meer aangepast aan worden?
 
Ik zal kijken of ik vanavond even kan kijken voor je... ben nu aan het werk :/
 
ik wil niet op een zeurpiet lijken, of opdringen, maar ik zou heel graag dit opgelost hebben:confused:

Mag ik een tip hoe ik verder kan, ik zit echt vast:confused:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan