for loop i ett sql anrop

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
orjan.is



Medlem i: 3220 dagar

Status: Offline



#742208
Inlägg Skrivet: 2018-05-16 12:14      Ämne: for loop i ett sql anrop Citera

Jag har ca 8,9 checkboxar i ett formulär som ska till mysql databas.
För att inte behöva ta reda på vilka boxar som är ifyllda i form av 8,9 IF satser så försöker jag med en for slinga, för att sen ta upp det i mysql_query raden.

Så har ser sql tabellen ut:
CREATE TABLE `grenar` (
`id` int(11) NOT NULL,
`g_sn` text NOT NULL,
`racerunner` text NOT NULL,
`60meter` text NOT NULL,
`100meter` text NOT NULL,
`langd` text NOT NULL,
`hojd` text NOT NULL,
`kula` text NOT NULL,
`trekamp` NOT NULL,
`innebandy` NOT NULL,
`boccia` text NOT NULL,
`futsal` text NOT NULL,
`staffet` text NOT NULL,
`provapa` text NULL
)

php koden:
PHP:
1:
 
2:
$agrenar $_POST['grenar'];
3:
        
4:
        $N count($agrenar);
5:
        
6:
            $val1 = array();
7:
    
8:
            for ($x=0$x<  count($agrenar); $x++){
9:
                $val1 $agrenar++;
10:
 
11:
            }
12:
            $val2 str_repeat(",x",$N);
13:
            
14:
 
15:
            $insert1 mysql_query("INSERT INTO grenar (g_sn,".implode(','$val1).")
16:
                                  VALUES ('$startnr''$val2')");
17:
            
18:
                if (!$insert1) {
19:
                    print_r ('g_sn,'.implode(','$val1).$startnr.$val2.(mysql_error()));
20:
                }
21:
 

Som felmeddelande får jag: g_sn,trekamp,boccia,futsal45,x,x,xColumn count doesn't match value count at row 1

Min fråga är. Hur får jag for uppgifterna i mysql anropet?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Biasse



Medlem i: 5457 dagar

Status: Offline



#742209
Inlägg Skrivet: 2018-05-17 09:53      Ämne: Ett sätt Citera

KOD:
1:
 
2:
<?php
3:
echo "
4:
<form action='sida.php?check=selected' method='post'>
5:
  g_sn<input type='checkbox' name='grenar[]' id='grenar' value='g_sn'>
6:
  racerunner<input type='checkbox' name='grenar[]' id='grenar' value='racerunner'>
7:
  60meter<input type='checkbox' name='grenar[]' id='grenar' value='60meter'>
8:
  100meter<input type='checkbox' name='grenar[]' id='grenar' value='100meter'>
9:
  langd<input type='checkbox' name='grenar[]' id='grenar' value='langd'>
10:
  hojd<input type='checkbox' name='grenar[]' id='grenar' value='hojd'>
11:
  kula<input type='checkbox' name='grenar[]' id='grenar' value='kula'>
12:
  trekamp<input type='checkbox' name='grenar[]' id='grenar' value='trekamp'>
13:
  innebandy<input type='checkbox' name='grenar[]' id='grenar' value='innebandy'>
14:
  boccia<input type='checkbox' name='grenar[]' id='grenar' value='boccia'>
15:
  futsal<input type='checkbox' name='grenar[]' id='grenar' value='futsal'>
16:
  staffet<input type='checkbox' name='grenar[]' id='grenar' value='staffet'>
17:
  provapa<input type='checkbox' name='grenar[]' id='grenar' value='provapa'>
18:
  <input type='submit' value='submit'>
19:
</form>
20:
";
21:
 
22:
if((isset($_GET['check']) && $_GET['check'] == 'selected'))
23:
{
24:
  $name = $_POST['grenar'];
25:
  echo "Valda grenar: ";
26:
  foreach ($name as $grenar)
27:
  {
28:
    echo $grenar . ", ";
29:
  }
30:
}
31:
?>
32:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Saurid
Moderator



Medlem i: 5174 dagar
Från: Karlshamn
Status: Offline



#742210
Inlägg Skrivet: 2018-05-18 13:55      Ämne: Citera

Jag skulle rekommendera dig att titta på PDO eller mysqli istället för att använda mysql-funktionerna, som är deprecated i PHP 5.5.0 och helt borttagna i PHP 7.

Hursomhelst så tänker jag att du är ute efter något liknande nedan?

Jag skulle tror att problemet med din kod är att du inte har koll på alla citattecken och apostrofer, vilket gör att SQL-satsen inte får rätt antal parametrar. Och så är det väl bättre att lagra flaggorna i databasen som en tinyint(1) istället för en sträng med "x"?

PHP:
1:
 
2:
    $grenar $_POST['grenar'];
3:
    $N count($grenar);
4:
 
5:
    $fieldstring implode($grenar"','");
6:
    $valuearray array_fill(0$N1);
7:
    $valuestring implode($valuearray",");
8:
 
9:
    $sql "INSERT INTO grenar ('$fieldstring') VALUES ($valuestring)";
10:
 
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic