webForumDet fria alternativet

Lite hjälp med arrayer

PHPur PHP

21 svar · 506 visningar · startad av Webslave

Medlem sedan maj 2002647 inlägg
Frågan#1

Yo! Jag frågade om något liknande för ett tag sedan men saker och ting ändrades så det bra tipset jag fick funkar inte under de nya förutsättningarna.

Jag har tre olika tal som ser ut som liknande: 12.2.3.22.1.33 och de ska jämföras och jag slängde ihop följande... men det verkar inte stämma riktigt ordentligt. Om någon ser någto som inte ser ut som det bör så hojta gärna till.

      $str1 = $row2['week_lotto_one'];
      $lotto1 = explode(".",$str1);

      $str2 = $row2['week_lotto_two'];
      $lotto2 = explode(".",$str2);

      $str3 = $row['user_number'];
      $user_numbers = explode(".",$str3);

      $correct_numbers_lotto_one = 0;
      $correct_numbers_lotto_two = 0;

      for($i=0;$i<7;$i++){
        if($lotto1[$i]==$user_numbers[$i]){
          $correct_numbers_lotto_one++;
        }
        if($lotto2[$i]==$user_numbers[$i]){
          $correct_numbers_lotto_two++;
        }
     }

Dettta loopas igenom för varje användare...

Medlem sedan maj 2002647 inlägg
#2

Ingen?

Medlem sedan feb. 2003169 inlägg
#3

du har råkat göra ett sånt här roligt fel som man sitter och sliter håret av sig för att man inte ser det... du har gömt en 2:a i $row['user_number']. ändra det till $row2['user_number']...

Medlem sedan maj 2002647 inlägg
#4

Nej nej... det kanske jag skulle ha sagt. Det finns en $row, där varje användare loopas ut, och en $row2, där lottonummren finns.

Tack i alla fall ;)

Medlem sedan feb. 2003169 inlägg
#5

aj då... ja, förlåt för att jag anklagar dig för felaktiga saker... ska kolla vidare på koden!

Medlem sedan feb. 2003169 inlägg
#6
<?php

// den här koden använde jag när jag testade ditt script,
// och den funkar för mig i alla fall...

$row2['week_lotto_one'] = "12.2.3.22.1.33";
$row2['week_lotto_two'] = "12.5.2.33.7.93";
$row['user_number'] = "12.6.2.34.7.33";

$str1 = $row2['week_lotto_one'];
$lotto1 = explode(".",$str1);

$str2 = $row2['week_lotto_two'];
$lotto2 = explode(".",$str2);

$str3 = $row['user_number'];
$user_numbers = explode(".",$str3);

$correct_numbers_lotto_one = 0;
$correct_numbers_lotto_two = 0;

for($i = 0; $i < 6; $i++)
{
	if($lotto1[$i] == $user_numbers[$i])
	{
		$correct_numbers_lotto_one++;
	}

	if($lotto2[$i] == $user_numbers[$i])
	{
		$correct_numbers_lotto_two++;
	}
}

echo "Lotto 1: ".$correct_numbers_lotto_one." || \n";
echo "Lotto 2: ".$correct_numbers_lotto_two;

?>
Medlem sedan maj 2002647 inlägg
#7

Hum... den är ju som min... skumt skumt.

Medlem sedan feb. 2003169 inlägg
#8

jo, jag vet... *lägger pannan i djupa veck*

Medlem sedan maj 2002647 inlägg
#9

Kan det vara så att det krånglar när jag hämtar från db'n eller nått? Att det blir nå knas när den loopar ut användarna...? Humm... jag sätter mig och klurar lite nu...

Medlem sedan feb. 2003169 inlägg
#10

jo, jag kom faktiskt att tänka på det nu... är du säker på att datan i db:n har samma syntax som du vill att den ska ha?

Medlem sedan maj 2002647 inlägg
#11

BTW... om det hjälper så är detta hela koden:

<?PHP
require ("variables.php");

$week_sql = "SELECT * FROM test_lotto_weeks ORDER BY week_number DESC";
$week_query = mysql_query("$week_sql");
while($week_row = mysql_fetch_array($week_query)){
  echo "<table width=\"500\" cellspacing=\"0\">\n";
  echo "<tr><td align=\"center\" colspan=\"3\" class=\"top\"><b>Vecka ".$week_row['week_number']."</b></td></tr>\n";
  echo "<tr><td class=\"second1\">Namn:</td><td align=\"center\" class=\"second\">Lotto1</td><td align=\"center\" class=\"second\">Lotto2</td></tr>\n";

  $sql = "SELECT * FROM test_lotto_users ORDER BY user_name ASC";
  $query = mysql_query("$sql");
  while($row = mysql_fetch_array($query)){

    $sql2 = "SELECT * FROM test_lotto_weeks WHERE week_number = '".$week_row['week_number']."'";
    $query2 = mysql_query("$sql2");
    while($row2 = mysql_fetch_array($query2)){

      $str1 = $row2['week_lotto_one'];
      $lotto1 = explode(".",$str1);

      $str2 = $row2['week_lotto_two'];
      $lotto2 = explode(".",$str2);

      $str3 = $row['user_number'];
      $user_numbers = explode(".",$str3);

      $correct_numbers_lotto_one = 0;
      $correct_numbers_lotto_two = 0;

      for($i=0;$i<7;$i++){
        if($lotto1[$i]==$user_numbers[$i]){
          $correct_numbers_lotto_one++;
        }
        if($lotto2[$i]==$user_numbers[$i]){
          $correct_numbers_lotto_two++;
        }
      }

      echo "<tr><td class=\"name\"><b>".$row['user_name']."</b></td><td align=\"center\" class=\"main\">";
      if($correct_numbers_lotto_one>=4){
        echo "<font color=\"green\">";
      }
      else{
        echo "<font color=\"red\">";
      }
      echo "<b>".$correct_numbers_lotto_one."</b></font></td><td align=\"center\" class=\"main\">";

      if($correct_numbers_lotto_two>=4){
        echo "<font color=\"green\">";
      }
      else{
        echo "<font color=\"red\">";
      }
      echo "<b>".$correct_numbers_lotto_two."</b></td></tr>";

    }
  }
  echo "</table>\n<br>";
}
mysql_close($connect);
?>
Medlem sedan maj 2002647 inlägg
#12

rIkLuNd skrev:

jo, jag kom faktiskt att tänka på det nu... är du säker på att datan i db:n har samma syntax som du vill att den ska ha?

I db'n så är formatet varchar... eftersom jag har punkter med.

Medlem sedan feb. 2003169 inlägg
#13

jo, men jag menar, är du säker på att datan ser ut t ex så här:

55.23.73.12.32.45

Medlem sedan maj 2002647 inlägg
#14

Oja... den är inskriven på samma sätt med punkt som skiljer varje "set" med siffror åt...

Medlem sedan feb. 2003169 inlägg
#15

ok, ska kolla lite till på den, och se om jag hittar nåt som är galet...

Medlem sedan maj 2002647 inlägg
#16

Jag ska ringa killen som står för lottoraderna och se om han har lagt in allt rätt... igen :)

Medlem sedan feb. 2003169 inlägg
#17

gör så... vem vet, det kanske är hans fel... ;)

Medlem sedan maj 2002647 inlägg
#18

Hehe... ja, det vet man ju aldrig. Han har kollat alla användarnas nummer och de stämmer... men jag tror han glömt kolla lotto1 och lotto2. Men det knepiga är när jag testar exakt samma kod med några tal från en db och det irriterande är att de som ska ha 0 rätt får i alla fall 1 rätt... riktigt irriterande.

Medlem sedan feb. 2003169 inlägg
#19

det måste vara nåt med datan från db:n som är galet, eftersom det verkar som att själva koden funkar utmärkt, om man använder värden från lokala variablar...

Medlem sedan maj 2002647 inlägg
#20

Hum... jo. Men vad? Ikke så bra på databaser...

136 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)