Kezdőoldal » Számítástechnika » Weblapkészítés » Multiple select adatbázisba...

Multiple select adatbázisba írása?

Figyelt kérdés

Sziasztok!

Adott egy oldal, ahol adatokat lehet felvinni, és van egy select amibe több dolgot is ki lehet jelölni. A selectbe azok szerepelnek, amik adatbázisba egy set-be meg lettek adva.

Hogy lehet azt megcsinálni, hogy egy változóba legyenek az elemek? Minden adatot egy sorba szeretnék, így a foreach nem jó.

Egy sor így néz ki: name, sports*, status

* ebbe kerülnének a selectből jövő adatok

Előre is köszönöm a segítséget!



2015. márc. 29. 21:05
1 2
 1/15 Tengor ***** válasza:
Több-a-többhöz kapcsolat, amit egy segédtáblával lehet feloldani.
2015. márc. 29. 21:24
Hasznos számodra ez a válasz?
 2/15 anonim ***** válasza:

Nehezen esett le, hogy php-ról van szó.


Nem tudom, hogy most a bevitel nem megy, vagy a kiíratás, de a foreach() miért is nem jó? Fv.-en belül simán összefűzöd az elemeket egy változóba, utána meg azt a változót kiíratod, vagy berakod adatbázisba.


foreach($_POST['select'] as $v)

$ki .= $v.",";


Ha nem akarod, hogy a legvégére is rakjon vesszőt, akkor meg csinálsz előtte egy ellenőrzést, hogy csak addig rakjon vesszőt, amíg nem ér el az utolsó elemhez.

2015. márc. 29. 21:30
Hasznos számodra ez a válasz?
 3/15 Tengor ***** válasza:

Lehet, hogy félre értettem?

Tehát neked az kell, hogy az adatbázisban a rekord egyik mezője jelentse azt, hogy kiválasztott-e az X elemet, egy másik meg azt, hogy kiválasztotta-e az Y elemet?

Ebben mi a bonyolult?

2015. márc. 29. 21:33
Hasznos számodra ez a válasz?
 4/15 A kérdező kommentje:
amit foreach-en belül használok, az azon kívül nem működik - legalábbis én így tudom
2015. márc. 29. 21:50
 5/15 Tengor ***** válasza:
Változókról beszélsz? Amit a foreachen belül hozol létre, azt nem tudod azon kívül használni. Amit előtte létrehoztál, azt használhatod benne és utána is.
2015. márc. 29. 21:55
Hasznos számodra ez a válasz?
 6/15 A kérdező kommentje:

itt a kód:

<?php

if(isset($_POST["submit"])) {

$name=$_POST["name"];

$sports=$_POST["sports"];

$status=$_POST["status"];


$sql="INSERT INTO `users` (name, sports, status) VALUES ('$name', '$sports', '$status')";

$query=mysqli_query($db, $sql);

}

?>

<form method="post">

<input type="text" id="name" name="name" placeholder="name" />

<br />

<select name="sports[]" size="3" multiple>

<option value="k1">k1</option>

<option value="box">box</option>

<option value="karate">karate</option>

<option value="judo">judo</option>

</select>

<br />

<input type="hidden" name="status" value="0" />

<input type="checkbox" id="status" name="status" />

<br /><br />

<input type="submit" id="submit" name="submit" value="" />

</form>


Azt szeretném elérni, hogy a $sports-ba a kiválasztott elemek úgy, hogy sql-be be tudjam illeszteni (mivel a mező set, így kb ilyen formába: 'k1', 'box').

2015. márc. 29. 22:01
 7/15 Tengor ***** válasza:

1.) SQL-be így nem viszünk be adatot! prepared statement

2.) Gondold át az adatbázist és normalizáld!

3.) Ezen neked kell dolgozni. Illeszt be a nevet és a státuszt. Kérd vissza a létrehozott ID-t, majd azzal az ID-vel a segéd táblába (#1 hozzászólás) illeszd be a sportoknak megfelelő ID-s sorokat.

2015. márc. 29. 22:06
Hasznos számodra ez a válasz?
 8/15 A kérdező kommentje:

arra nem is gondoltam, amit az #5-be írsz Tengor, köszi :-)

így már majdnem jó is, már csak valahogy le kéne vágni az utolsóról a ,-t


$asd="";


foreach($sports as $key=>$value) {

//echo $value."<br />";

$asd.="'".$value."',";

}


echo $asd."<br />";


ebbe még tudnál segíteni, vagy van ennél jobb megoldás is (biztos van :D)?

2015. márc. 29. 22:07
 9/15 A kérdező kommentje:

végül a levágásra is találtam egy megoldást


echo mb_substr($asd, 0, -1);"<br />";


biztos, hogy nem ez a legjobb megoldás, de egyenlőre jó lesz...


az adatbázisba a sports SET típusú mező, így az abba felsoroltak vannak a kódba is, ezért kellett ez a megoldás


köszönöm szépen a segítséget és a tanácsokat!

2015. márc. 29. 22:15
 10/15 anonim ***** válasza:

"amit foreach-en belül használok, az azon kívül nem működik"


Ezt nem tudom hogy gondoltad, de amint te is látod, működik :D $asd benne van a foreach-ben, utána meg ki is tudod íratni, sőt új értéket is fűzhetsz hozzá.


Vessző eltávolításra egyébként ez az mb_substr() jó, de ahogy mindenre, úgy erre is van ezerféle megoldás.

2015. márc. 30. 07:48
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!