webForumDet fria alternativet

Foreachfelmeddelande?

PHP

2 svar · 298 visningar · startad av eklof00

Medlem sedan jan. 200737 inlägg
Frågan#1

Är det någon som kan hjälpa mig och se vad som är fel. Antar att jag har fel värden på rad 17.

Warning: Invalid argument supplied for foreach() in C:\wamp\www\spel.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\spel.php:17) in C:\wamp\www\spel.php on line 22
<?php 
session_start(); // Alltid överst på sidan 

include "conn.php"; // Databasanslutningen 

// Kolla om inloggad = sessionen satt 
if (!isset($_SESSION['sess_date'])){ 
  header("Location: test.php"); 
  exit; 
} 
if (!isset($_SESSION['sess_user_id'])){ 
  header("Location: index.php"); 
  exit; 
} 
if (isset($_POST['submit'])) { 
    $i = 0; 
foreach($_POST['tips'] as $tips) {  //RAD 17
        $sql = "INSERT INTO spel_allsv2007 (user_id, match_id, tips) VALUES('{$_SESSION['sess_user_id']}','{$_POST['match_id'][$i]}','{$_POST['tips_'.$_POST['match_id'][$i]]}'))"; 
        mysql_query($sql) or die("SQL: $sql <br>".mysql_error()); 
        $i++; 
    } 
     header("Location: user_tips.php"); 
     exit; 
} 

?> 
<form action="spel.php" method="post" name="submit"> 
<?PHP 
$sql = "SELECT * FROM allsv2007 WHERE date > CURRENT_TIMESTAMP() AND date = ' {$_SESSION['sess_date']} '" or die(mysql_error()); 
$result = mysql_query($sql); 
   while ($row = mysql_fetch_assoc($result)) { 
$date[$row['date']][] = array($row['match_id'], $row['matcher']); 
} 

if (isset($date) && !empty($date)) { 
      echo '<table>';    
      foreach ($date as $day => $value){ 
          echo '<tr>'; 
         echo '<td></td>'; 
         echo '<td>' . '<b>' . $day. '</b>' . '</td>'; 
         echo '<td align="center"><b>1</b></td>'; 
         echo '<td align="center"><b>X</b></td>'; 
         echo '<td align="center"><b>2</b></td>'; 
      echo '</tr>'; 
        
        foreach ($value as $game) 
       { 
        echo '<tr>'; 
        echo '<td align ="right">'. $game[0].'.</td>'; 
       
       
         echo '<td>'. $game[1].'</td>'; 
         echo '<td><input type="radio" value="1" name="tips_'.$game[0].'"></td> 
                 <td><input type="radio" value="X" name="tips_'.$game[0].'"></td> 
                 <td><input type="radio" value="2" name="tips_'.$game[0].'"><input type="hidden" name="match_id[]" value="'.$game[0].'"></td>'; 
         echo '</tr>'; 
          
          } 

} 
echo '</table>'; 

}else{ 
echo 'Du kan inte spela på denna match, Spelstopp har inträtt!'; 

} 
?> 
<input type="submit" name="submit" value="Skicka"> 
</form>
Medlem sedan maj 2005562 inlägg
#2

Troligtvis innehåller inte $_POST['tips'] en array.
Testa använda var_dump($_POST); och testa så den innehåller vad du förväntar dig.

Medlem sedan jan. 200737 inlägg
#3

Så här blev det efter mycket om och men...

foreach($_POST['match_id'] as $match) {
267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)