ugrás a tartalomhoz

Checkbox-al bevitel MySQL-be

Armageddon95 · 2011. Jún. 2. (Cs), 23.01
Sziasztok!
Az lenne a problémám hogy hogyan lehetnek egy értéket megváltoztatni MySQL-ben Checkbox-al?
Itt az én promblémám:
<?php
$u = $this->_tpl_vars['user']['id'];
$query_settings = "SELECT * FROM `users` WHERE `id` = '$u'";
$settings = mysql_fetch_array(mysql_query($query_settings));
$checkbox = $_POST['awards'] ? 1 : 0;
?>
<script src="http://code.jquery.com/jquery-1.5.min.js" type="text/javascript"></script>
<script src="kala.js" type="text/javascript"></script>
<h3>Jutalmak</h3>



<form action="/game.php?village=<?php echo $this->_tpl_vars['village']['id']; ?>&amp;screen=settings&amp;mode=awards&amp;action=change_award_settings&amp;h=2fa3" method="post">

<table class="vis settings">
<tbody><tr><th>Beállítások</th></tr>
<tr>
<td>
                    <input type="checkbox" id="awards" name="checkbox[]" <?php if($settings[awards]){ echo "checked='yes'";}?> onclick="addcheck('<?php echo $u;?>','awards');"/>Jutalmaim megjelenítése
                </td>
</tr>

<tr><td colspan="2"><input type="submit" value="OK"></td></tr>
</tbody></table>
</form>
Nah és megjeleníti hogy az adott tábláztban (awards) jelenleg 1 az érték, vagyis be van pipálva, de amint leveszem róla a pipát és frissitem ujra be van pipálva, vagyis még mindig 1 az értéke, nem vitte be. (ugy kéne ha be van pipálva:1; ha nincs:0)
Nekem ugy is jó ha rögtön be rakja, vagy ha "OK" gomb megnyomásával vigye be, csak vigye be :D

A segítséget előre is köszönöm!
 
1

Hogyan mented el?

Poetro · 2011. Jún. 2. (Cs), 23.16
Én itt nem láttam semmi nyomát annak, hogy az adatot el is mentetted volna. Sőt azt sem, hol töltődik fel a $settings változó. Egyáltalán a checkbox az miért tömb (checkbox[])? És ha már tömb, akkor miért nem annak megfelelően kezeled? Ráadásul nem is látom sehol, hogy ezzel a checkbox[] tömbbel bármit csinálnál bárhol is.
2

Kezdő vagyok :S

Armageddon95 · 2011. Jún. 2. (Cs), 23.18
Aza baj hogy nemrég keztem ebbe bele és még nem tiszta minden, mit hova kéne írni?
Tudnál ebben segíteni légyszíves?
3

HTML

Poetro · 2011. Jún. 2. (Cs), 23.31
Előbb kezdd a HTML megismerésével. Például mit takar egy input HTML elem id és name tulajdonsága? Melyiket mire használod? Mi kerül elküldésre a form elküldésekor?
4

Fogalmam sincs :S

Armageddon95 · 2011. Jún. 3. (P), 14.55
Fogalmam sincs :S
6

Olvasni

Poetro · 2011. Jún. 3. (P), 15.09
Mert eléggé fontos lenne.

Akkor érdemes lenne utána olvasni. Gondolom van pár perced, órád erre, ha tényleg fontos. Ha nincs, akkor nem lehet igazán fontos. De adok egy kis segítséget. Egy rövid leírás arról, mit is jelent a name és az id attribútum, valamint egy leírás, hogyan is működik a űrlapok elküldése.
5

Segítene valaki kiküszöbölni

Armageddon95 · 2011. Jún. 3. (P), 14.56
Segítene valaki kiküszöbölni ezt a gondot?
Mert eléggé fontos lenne.
7

A kód elég értelmetlen

bb0072 · 2011. Jún. 3. (P), 16.08
A kód elég értelmetlen zagyvaság, önmagában nem is működőképes. A kérdésed szintén nem tiszta, és az látszik , hogy alapvető dolgokkal nem vagy tisztában. Te írtad egyáltalán ezt a kódot?

Ha nem vagy hajlandó utánaolvasni és tanulni, akkor csak az fog segíteni, akit megfizetsz, hogy írja meg helyetted.

Azért néhány tipp/tanács:
1) Az inputok name attributuma kerül föl a szerverre a $_POST tömbben (most pl. $_POST['checkbox'], ami egy tömb lesz, föltéve hogy be van pipálva).
2) Checkbox típusú input értéke csak akkor kerül elküldésre, ha a checkbox be van pipálva.
3) Checkbox típusú input-nak nem árt megadni valamilyen value értéket.
4) Submit után, server oldalon érdemes a kapott változókat adatbázisba (esetleg session-be) menteni, hogy legközelebb is vissza tudd olvasni.
8

Nem én írtam a kódot ez a

Armageddon95 · 2011. Jún. 3. (P), 17.23
Nem én írtam a kódot ez a Klánháború online játék Lan verziójához kell, lényege az lenne hogy ha be van pipálva bevigye adatbázisba az "1" értéket és a oldalon amit beállítottam ez lenne:
<?php if ($this->tpl_vars['users']['awards'] == 1): ?>Ide jön aza rész ami eltünne/megjelenne.<?php endif ?>
A lényeg ha bepipálom megjelenít valamit ha nincs kipipálva akkor el van rejtve az a szöveg.

Amúgy ez ugy van hogy van egy action mappa és ott tárolja az ilyen adatokat, ugyértem hogy a változókat meg ilyeneket, azok titkosítva vannak ezért írnám ebbe a fájlba, de amugy mind1 hol van ugyanugy megy.

És ez a kód is generálva volt egy .tpl fájlból.

(Mielőtt megkérdi valaki hogy legális-e másolni egy hivatalos online játékot: Igen, lan verzióra kaptam engedélyt)
9

Náluk működik?

Poetro · 2011. Jún. 3. (P), 17.31
És akkor hogyan lehet, hogy náluk működik, és nálad nem? Mert azért ez a kód leginkább egy alfa verziónak néz ki, nem gondolnám, hogy végleges környezetben bármilyen formában megállná a helyét.

Remélem a kapott segítség alapján sikerül elindulni, vagy összejön megfelelő összeg, hogy valakit megfizessetek, hogy kijavítsa / megírja a hibás illetve hiányzó részeket.
10

Ezt én adtam hozzá +-ba azért

Armageddon95 · 2011. Jún. 3. (P), 17.56
Ezt én adtam hozzá +-ba azért nem teljes, kéne egy php rész.
hogy küldje az adatbázisba az adatokat.
ugy kéne megírni mint általában egy ilyen tipust csak én ilyet még nem csinálam.
Egy általános checkbox beviteli példát tudnál mutatni?
11

Példa

Poetro · 2011. Jún. 3. (P), 18.25
<?php
require_once "database.php";
$adat = isset($_POST['adat']) ? $_POST['adat'] : '';
if (isset($_POST) && count($_POST)) {
  $sql = sprintf(
    'UPDATE tabla SET adat = "%s" WHERE id = %d',
    mysql_real_escape_string($adat),
    $_POST['id']
  );
  mysql_query($sql);
}
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Checkbox</title>
</head>
<body>
  <form action="" method="post">
    <div class="form-item">
      <label for="adat">Adatom</label>
      <input type="checkbox" id="adat" value="ertek" name="adat"
        <?php if ($adat) echo 'checked="checked"' ?> />
    </div>
    <div class="form-submit">
      <input type="hidden" name="id" value="1" />
      <input type="submit" name="op" value="Mentés" />
    </div>
  </form>
</body>
</html>
12

Köszi, megpróbálom

Armageddon95 · 2011. Jún. 3. (P), 18.31
Köszi, megpróbálom megcsinálni :DD
örök hála :D
13

require_once "database.php";

Armageddon95 · 2011. Jún. 3. (P), 18.33
require_once "database.php";
a database.php helyére mit írjak, vagy hozzak létre egy olyat? És abba a mysql kapcsolódást kell rakni?
14

database.php

Poetro · 2011. Jún. 3. (P), 18.48
Monduk rakhatod bele a kapcsolódást. De ez csak egy példa, és ezért ebben a formában nem fog működni.
15

nem tudnád kicsit

Armageddon95 · 2011. Jún. 3. (P), 18.54
nem tudnád kicsit kiegészíteni légyszíves?
ezekkel az adatokkal:
Táblázat: users
id:
$this->_tpl_vars['user']['id'];
(külön változóban kell megadni, pl:
$id = $this->_tpl_vars['user']['id'];
majd az "id" sorában lévő "awards" táblába postolja az 1-et vagy a 0-át a többi nem lényeg számomra csak változtassa a számot
a kapcsolódás pedig: localhost, pass:nincs, vagyis "" adatbázis:"lan"
Már eddig is sokat segítettél amit köszönök, remélem ebben is tudsz segíteni.
Előre is köszi
16

kívánságműsor...

TeeCee · 2011. Jún. 4. (Szo), 22.04
... vége szerintem.
Poetro, még mindig túl sokat segítesz azokon, akik nem akarnak tanulni, csak egy (aztán csak még egy és még egy...) problémát megoldani.

Ha már itt tartunk, nincs véletlen kimaradt ajándékba osztogatott nowpublic-os Eiffel-tornyos pólód véletlen? Öcsém rákattant, de az enyémet nem adom neki :D