
Geeb
Kezdő
|
1
| <input type="hidden" name="id" value="'.$row['id'].'"> |
Helyett:
1
| <input type="hidden" name="id" value="<?'.$row['id'].?>'"> |
Csak a kódodban ezeket próbáld javítani akkor mit mutat:
Eredeti amit találtál:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <?php
include_once('db.php');
if( isset($_GET['edit']) )
{
$id = $_GET['edit'];
$res= mysql_query("SELECT * FROM proba WHERE id='$id'");
$row= mysql_fetch_array($res);
}
if( isset($_POST['newName']) )
{
$newName = $_POST['newName'];
$id = $_POST['id'];
$sql = "UPDATE proba SET name='$newName' WHERE id='$id'";
$res = mysql_query($sql)
or die("Could not update".mysql_error());
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
?>
<form action="edit.php" method="POST">
Name: <input type="text" name="newName" value="<?php echo $row[1]; ?>"><br />
<input type="hidden" name="id" value="<?php echo $row[0]; ?>">
<input type="submit" value="Szerkesztés"/>
</form>
|
Ez pedig, amit nekünk mutattál hogy csináltad:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| include_once('db.php');
if( isset($_GET['edit']) )
{
$id = $_GET['edit'];
$res= mysql_query("SELECT * FROM proba WHERE id='$id'");
$row= mysql_fetch_array($res);
}
if( isset($_POST['id']) )
{
".$row['nev']."
".$row['gyumolcs']."
".$row['zoldseg']."
$sql = "UPDATE tippmix SET Nev='$nev', Gyumolcs='$gyumolcs', zoldseg='$zoldseg' WHERE id='$id'";
$res = mysql_query($sql) or die("Could not update".mysql_error());
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
echo '<form action="edit.php" method="POST">
Neve: <input type="text" name="nev" value="<?'.$row['nev'].'?>">
Mit szeret gyümölcs: <input type="text" name="gyumolcs" value="<?'.$row['gyumolcs'].'?>">
Mit szeret zöldség: <input type="text" name="zoldseg" value="<?'.$row['zoldseg'].'?>">
<br />
<input type="hidden" name="id" value="'<?'.$row['id'].'?>">
<br />
<input type="submit" value=" Szerkesztés "/>
</form>'; |
Utoljára szerkesztette: Geeb 2014.06.17. 09:30
|

anti
Kezdő
|
Szia!
Részemről ennyi fért bele, de azt gondolom, hogy ez a feladat menni fog neked is, ha végigjutsz egy alap PHP könyv elolvasásán.
|

user23
Kezdő
|
Szia!
Köszönöm a választ. Szóval elrontettam. :/
Ez az eredeti, amit találtam:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <?php
include_once('db.php');
if( isset($_GET['edit']) )
{
$id = $_GET['edit'];
$res= mysql_query("SELECT * FROM proba WHERE id='$id'");
$row= mysql_fetch_array($res);
}
if( isset($_POST['newName']) )
{
$newName = $_POST['newName'];
$id = $_POST['id'];
$sql = "UPDATE proba SET name='$newName' WHERE id='$id'";
$res = mysql_query($sql)
or die("Could not update".mysql_error());
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
?>
<form action="edit.php" method="POST">
Name: <input type="text" name="newName" value="<?php echo $row[1]; ?>"><br />
<input type="hidden" name="id" value="<?php echo $row[0]; ?>">
<input type="submit" value="Szerkesztés"/>
</form> |
Ezt próbáltam átalakítani, hogy nekem megfelelő legyen.
Ebben a szerkesztés gomb lenymása után csak 1 mező van amit lehet "javítani".
Nekem három mezőm lenne, amit szeretnék.
név
gyümölcs
zöldség
Még tudnál egy kicsit ebben segíteni ?
Köszönöm.
|

anti
Kezdő
|
Szia!
Geeb jól mondja, az üzenet arra figyelmeztet, hogy a változó a kiírás előtt nem kapott még értéket.
Ha jól következtetek, akkor a $_GET['edit'] nem kap értéket.
Ahhoz, hogy kapjon valami ilyesmi URL-en kéne betölteni az oldalt: /akarmi?edit=1
Ahol az edit utáni szám a szerkesztendő rekordot jelöli.
15-17-ig tartó sorokat látom csupán értelmetlennek.
Egyúttal hiányoznak a POST után történő változó feltöltések ahhoz, hogy a 19. sorban összeállított SQL kifejezés működőképes legyen.
Másik, hogy ha működőképesre sikerül összehozni, akkor az SQL update után ajánlott a $row-ba visszatölteni a friss változtatást, különben úgy fog kinézni az oldal post után, mintha semmi nem változott volna.
|

Geeb
Kezdő
|
Nincs definiálva.
|

user23
Kezdő
|
Szia!
Köszi szépen, megsikerült oldanom. :)
De lenne egy újabb kérdésem, csináltam 1 edit.php -t, hogy ha véletlen rossz adatot viszek be, akkor ne keljen az adatbázisba felmenni.
Itt a kód:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
include_once('db.php');
if( isset($_GET['edit']) )
{
$id = $_GET['edit'];
$res= mysql_query("SELECT * FROM proba WHERE id='$id'");
$row= mysql_fetch_array($res);
}
if( isset($_POST['id']) )
{
".$row['nev']."
".$row['gyumolcs']."
".$row['zoldseg']."
$sql = "UPDATE tippmix SET Nev='$nev', Gyumolcs='$gyumolcs', zoldseg='$zoldseg' WHERE id='$id'";
$res = mysql_query($sql) or die("Could not update".mysql_error());
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
echo '<form action="edit.php" method="POST">
Neve: <input type="text" name="nev" value="'.$row['nev'].'">
Mit szeret gyümölcs: <input type="text" name="gyumolcs" value="'.$row['gyumolcs'].'">
Mit szeret zöldség: <input type="text" name="zoldseg" value="'.$row['zoldseg'].'">
<br />
<input type="hidden" name="id" value="'.$row['id'].'">
<br />
<input type="submit" value=" Szerkesztés "/>
</form>'; |
Működik a szerkesztés, mert adatbázisban látom, felmentem megnéztem.
Viszont ezt írja ki :
Undefined variable: row
Mit rontottam el ? Vagy ez most egy nagy marhaság lett ? :S
Bocsánat, köszönöm.
|

anti
Kezdő
|
Szia!
A while-os lekérdezésed bővitsd egy ilyen sorrál:
Az if ( isset ( $_POST['submit'] ) ) részben a
1
| $date = $_POST["date"]; |
részt cseréld:
1
| $date = date('Y-m-d H:i:s'); |
sorra.
Ezzel mentéskor te magad adod meg a dátumot a mentés pillanatában ahelyett, hogy POST-ból várnád.
Valamin lekérdezés során vissza is nyered a while-on belül.
|

user23
Kezdő
|
Szia!
Köszönöm a segítséget.
" kiíró résznél a date = date('Y-m-d H:i:s') helyett kellene azt a változót beírnod, ami a korábban mentett dátumot tartalmazza. "
Elnézést, hogy idézek.
A kiírásban a lekérdezésem ilyen:
1
2
3
4
5
6
7
| $kiir = "SELECT * FROM gyumolcs ORDER BY 'id' ";
$result = mysql_query($kiir) or die(mysql_error());
while ($row = mysql_fetch_array($result)){
".$row['nev']."
".$row['m_gyumolcs']."
".$row['gyumolcs']."
} |
Ezt raktam most bele: ".$row['date']." , amiben a dátumozás lenne.
(A dátum változója, ha jól értelek.)
De azt látom, hogy minden sorban: 0000-00-00 van.
Felirásnál így van:
if ( isset ( $_POST['submit'] ) )
{
$nev = $_POST["nev"];
$m_gyumolcs = $_POST["m_gyumolcs"];
$gyumolcs = $_POST["gyumolcs"];
$date = $_POST["date"];
}
A hiden sort kivettem.
Az INSERT -be ezt raktam még hozzá: .. date, VALUES ('".$date."', ..
Elméletielg most akkor jó minden, de akkor miért nulláz ki mindent ? :S
Köszönöm a segítséget.
Utoljára szerkesztette: user23 2014.06.15. 14:42
|

anti
Kezdő
|
Szia!
A kiíró résznél a date = date('Y-m-d H:i:s') helyett kellene azt a változót beírnod, ami a korábban mentett dátumot tartalmazza.
Úgy, ahogy a belküldő neve és az, hogy milyen gyümölcsöt szeret, egy változóból jön (pl. $adat['nev'], $adat['gyumolcs']), ugyanígy a mentett dátumot is elérheted (pl. $adat['date']).
Apróság, de érdekes lehet, hogy nem szükséges rejtett mezőben elküldened a dátumot. Mert amikor a küldött adatokat feldolgozod, akkor $date = $_POST["date"]; helyett simán írhatod a $date = date('Y-m-d H:i:s'); formát.
Logikailag is helyesebb, mert a rejtett mezőbe gyakorlatilag az űrlap generálás időpontja kerül be. Ha valaki betölti az oldalt, majd mereven bámulja 1 órát a képernyőt és csak utána küldi el az űrlapot, akkor nem a küldés időpontja kerül tárolásra, hanem az, amikor betöltötte az oldalt, tehát az 1 órával korábbi időpont.
|

user23
Kezdő
|
Sziasztok!
Csináltam egy Űrlapot, annak van 1 adatbázisa ahol tárolja az értékeket.
A lapon van 1 lekérdezés, amiben szépen lehet látni is.
Szeretnék bele tenni, egy dátumot is, aki beküldte, azaz megnyomta a submit gombot annak a neve mellé egy következő oszlopban írja ki a dátumot.
Így próbáltam, találtam.
... űrlapom részlet:
1
2
| <input type="hidden" name="date" value="<?= $date ?>">
<input type="submit" value="Submit" /></form> |
// Submit után
1
2
| $date = $_POST["date"];
|
// Ahol pedig ki írja az eredményt
1
| <td align='center' class=''><font color='#159aed'>".date = date('Y-m-d H:i:s')."</font></td> |
Az történik, hogy a Dátum oszlopban, az összes sorba azt a dátumot írja ki, amit utóljára beküldtem.
Tehát sajnos nem jó, mert mindenhol ugyan az a dátum van. :/
Hogyan tudnám megoldani, hogy minden sorba a megfelelő dátum legyen, tehát példa:
Beküldő neve: Béla Milyen gyümölcsöt szeret?: Alma Dátum: Itt az ő beköldési ideje
Beküldő neve: Géza Milyen gyümölcsöt szeret?: Körte Dátum: Itt az ő beköldési ideje
Nem tanulom a programozást, hobbi, kérem segítsen valaki.
Lehet hülyeség, amit ide irtam dátumozásra is, ezt találtam.
Köszönöm.
|
|