While vraag
ik heb een siteeditor gemaakt waarmee je klik + sleep doet en als ie op opslaan klikt dat alles word opgeslagen.
Nu mijn vraag is: pageid nummer 1 gaat. Maar vanaf ik een page vanaf nummer 5 wil opslaan werkt ie plots niet.
Code (php)
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
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
<?PHP
// Session starten
session_start();
// Errors? Meld ze!
error_reporting(E_ALL);
// Connect file includen
include_once('connect.php');
// Verbinding gemaakt, sessie gestart nu kijken of er iets gepost is.
// Oja, en ook nog een optel var
$i = 1;
$p = $_POST['pageid'];
while(isset($_POST['outputtop'.$i], $_POST['outputleft'.$i], $_POST['id'.$i])){
// Yeaaah ! Er is iets gepost! Nu ff alles opslaan.
mysql_query("UPDATE beta_editor SET position_left='".$_POST['outputleft'.$i]."' WHERE elid='".$_POST['id'.$i]."'") or die (mysql_error());
mysql_query("UPDATE beta_editor SET top='".$_POST['outputtop'.$i]."' WHERE elid='".$_POST['id'.$i]."'") or die (mysql_error());
echo "Element ".$_POST['id'.$i]." is opgeslagen.<br />";
}
?>
// Session starten
session_start();
// Errors? Meld ze!
error_reporting(E_ALL);
// Connect file includen
include_once('connect.php');
// Verbinding gemaakt, sessie gestart nu kijken of er iets gepost is.
// Oja, en ook nog een optel var
$i = 1;
$p = $_POST['pageid'];
while(isset($_POST['outputtop'.$i], $_POST['outputleft'.$i], $_POST['id'.$i])){
// Yeaaah ! Er is iets gepost! Nu ff alles opslaan.
mysql_query("UPDATE beta_editor SET position_left='".$_POST['outputleft'.$i]."' WHERE elid='".$_POST['id'.$i]."'") or die (mysql_error());
mysql_query("UPDATE beta_editor SET top='".$_POST['outputtop'.$i]."' WHERE elid='".$_POST['id'.$i]."'") or die (mysql_error());
echo "Element ".$_POST['id'.$i]." is opgeslagen.<br />";
}
?>
en fatsoenlijk foutafhandelijk kan ook geen kwaad.
Hoeveel bezoekjes breng jij per dag aan het kerkhof
die while loop klopt van geen kant en leer eens met array te werken
Gewijzigd op 27/06/2010 18:52:21 door Noppes Homeland
Maar kraak me aub niet af ;)
ik heb het gedaan.
Hij slaat nog steeds alleen page id 1 op.
Vreemd...
Ik denk dat er iets mis is met de $i
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['outputtop']) && trim($_POST['outputtop']) != ''
&& isset($_POST['outputleft']) && trim($_POST['outputleft']) != ''
&& isset($_POST['id']) && ctype_digit($_POST['id'])
) {
$sql = "UPDATE beta_editor
SET left = '".mysql_real_escape_string($_POST['outputleft'])."'
, top = '".mysql_real_escape_string($_POST['outputtop'])."'
WHERE elid = ".mysql_real_escape_string($_POST['id']);
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br />'.$sql;
}
}
else {
echo 'Helaas er is bij het bezorgen van de post wat fout gegaan!';
}
?>
ini_set('display_errors',1);
error_reporting(E_ALL | E_STRICT);
if ( $_SERVER['REQUEST_METHOD'] == 'POST'
&& isset($_POST['outputtop']) && trim($_POST['outputtop']) != ''
&& isset($_POST['outputleft']) && trim($_POST['outputleft']) != ''
&& isset($_POST['id']) && ctype_digit($_POST['id'])
) {
$sql = "UPDATE beta_editor
SET left = '".mysql_real_escape_string($_POST['outputleft'])."'
, top = '".mysql_real_escape_string($_POST['outputtop'])."'
WHERE elid = ".mysql_real_escape_string($_POST['id']);
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br />'.$sql;
}
}
else {
echo 'Helaas er is bij het bezorgen van de post wat fout gegaan!';
}
?>
Let wel dit is 1 enkele verwerking
"Nou, ik ben pas beginner "
En wat wil je daarmee zeggen? Als je eerst wat rondneust op php.net en forums als deze, dan hoef je dit soort vragen niet meer te stellen er zijn er velen voor jou geweest met het zelfde probleem
http://www.phphulp.nl/php/tutorials/
http://wiki.phpfreakz.nl
"Maar kraak me aub niet af ;)"
Ik schrijf wat ik wil schrijven, dus hoe jij mijn woorden leest dan wel opvat is geheel aan jou.
http://docs.google.com/fileview?id=0B_2VqW180llxM2Q5Njc3YmEtNGEwZS00ZDI1LTljOTQtMGUyNDcwYzM0ZjZl&hl=en
Gemaakt toen ik niks te doen had. Info van W3SCHOOLS, aangepast, geüpdatet en layout veranderd. Vrij te gebruiken!
Gemaakt toen ik niks te doen had. Info van W3SCHOOLS, aangepast, geüpdatet en layout veranderd. Vrij te gebruiken!
Raoul Van den Berge op 27/06/2010 19:05:21:
Piet:
ik heb het gedaan.
Hij slaat nog steeds alleen page id 1 op.
Vreemd...
Ik denk dat er iets mis is met de $i
ik heb het gedaan.
Hij slaat nog steeds alleen page id 1 op.
Vreemd...
Ik denk dat er iets mis is met de $i
Wat is nu je huidige script? Want lijkt me dat je die $i++; dan toch ergens verkeerd hebt neergezet.
Probleem opgelost.
while (isset($_POST['...'],$_POST['...'],....) {
te doen!
Als je meerdere records in 1 keer wilt verwerken dan dien je te zorgen dat je form array element bevat
<input name="id[]"
<input name="outputtop[]"
<input name="outputleft[]"
dat is dan veel makkelijker te verwerken dan dat je het nu hebt!
Een array is een verzameling variabelen. De $_POST-variabelen vormen dus een array:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$_POST = array(
'outputtop' => array(
0 => 'text',
1 => 'output'),
'outputmiddle' => true
)
'outputtop' => array(
0 => 'text',
1 => 'output'),
'outputmiddle' => true
)
De $_POST variabele kent bij bovenstaand voorbeeld twee waarden: $_POST['outputtop'] en $_POST['outputmiddle']. De outputtop-waarde is echter ook weer een array, bestaande uit $_POST['outputtop'][0] EN $_POST['outputtop'][1].
Dit is trouwens het voorbeeld, de array kan zo lang worden als je zelf wilt; 10, 20, 100, 1000 etc. etc.
Nu is er de foreach-loop. Deze loopt een array door. Dus als je bijvoorbeeld hebt:
Code (php)
Dan komt hieruit:
de waarde van outputtop is een array, waardoor deze - mits ge-echo'd - veranderd in de string Array. De waardes blijven uiteraard in de array zitten, maar je kunt ze niet direct naar de browser sturen. Hier komt de functie print_r(); van pas, maar nu dwaal ik af.
de $key variabele is niet noodzakelijk bij een foreach-loop. Dan zou de foreach-loop worden: foreach ($_POST as $value) {
Jouw foreach-loop is precies andersom. Ook word $_POST['outputtop[0]'] normaal zo geschreven: $_POST['outputtop'][0]. Geen idee of PHP het op jouw manier aanneemt, maar ikzelf zou het niet aannemen. Dit kun je uiteraard zelf wel even testen, of hij het aanneemt. Voor jouw loop is dit trouwens niet eens nodig ;) Want je wilt dat hij door de $_POST['outputtop']-waarden loopt.
Hierbij hoop ik dat je genoeg informatie hebt. Zo niet; W3Schools heeft een tutorial over arrays en er zullen vast wel meer te vinden zijn op internet.
Succes!
P.S. een vraag als 'kan ik het zo doen' is nogal laf. Je kunt het namelijk zelf testen. Je computer/server zal er niet van crashen ofzo hoor. Je kunt beter vragen HOE het moet, of gewoon naar een tutorial erover zoeken. Tutorials rule!
Gewijzigd op 28/06/2010 18:26:32 door Mark L
Ik heb nu dit:
Code (php)
1
2
3
4
2
3
4
foreach ($_POST['outputtop'][0] => $value as $top){
echo "Top dinges: ".$value."<br />";
}
echo "Top dinges: ".$value."<br />";
}
Maar ik krijg error:
Code (php)
1
Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 10
:S
Gewijzigd op 28/06/2010 18:53:19 door - Raoul -
Kijk nog eens goed naar mijn voorbeeld.
ik wil bv 2 for eachen voor de top en een left.
en als ik ze in 1 foreach moet doen , moet ik dan
if ($_POST == "outputtop") ofzo doen?
Gewijzigd op 28/06/2010 19:06:03 door - Raoul -
Ik snap dr echt niets van :|
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
error_reporting(E_ALL);
include_once('connect.php');
foreach ($_POST as $key => $value) {
echo "Top dinges: ".$value."<br />";
}
?>
session_start();
error_reporting(E_ALL);
include_once('connect.php');
foreach ($_POST as $key => $value) {
echo "Top dinges: ".$value."<br />";
}
?>
krijg ik alle waardes
ik wil elke for each apart
dus bv
foreach($_POST['outputtop']) voor de top
foreach($_POST['outputleft']) voor left
maar ik weet niet hoe ik dat kan doen
snap je het nu ?
Code (php)
Zo simpel is het.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
Notice: Undefined index: outputtop in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 10
Warning: Invalid argument supplied for foreach() in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 10
Notice: Undefined index: outputleft in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 13
Warning: Invalid argument supplied for foreach() in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 13
Warning: Invalid argument supplied for foreach() in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 10
Notice: Undefined index: outputleft in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 13
Warning: Invalid argument supplied for foreach() in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 13
Dat komt omdat er geen <input name="outputtop"> bestaat.
Ik moet dus iets achter die foreach($_POST['outputtop'] krijgen
Gewijzigd op 28/06/2010 19:20:40 door - Raoul -
Warning: Invalid argument supplied for foreach() in /home/raoul/domains/raoul.v3host.be/public_html/editor_save.php on line 12