Wat heb je nou aan een random session ID als je er nog een random hash (nog een session ID) tegenaan gooit? Laat die hele hash achterwege en gebruik gewoon één session IDquote:Op woensdag 12 juli 2006 12:33 schreef mschol het volgende:
[..]
hmm ik ging er juist vanuit dat je je session id nooit moet opslaan in je cookie...
en dat je dus een eigen radom iets moet hebben om je session id op te halen...
maar die hash zou je opzich moeten kunnen blijven gebruikenm, mits je er maar genoeg unieke dingen in propt tohch (ik doe eens gek: username+wachtwoord +email er ook nog bij)
[tijd_nieuw] => 1 [km_nieuw] => 1 [prijs_nieuw] => 1quote:Op woensdag 12 juli 2006 12:30 schreef JeRa het volgende:
[..]
Doe eens een print_r($_POST) en kom erachter wat er nu eigenlijk naar PHP wordt gestuurddie $i kun je dus achterwege laten.
En dat was in een formulier met namen voor de velden als km_nieuw[], tijd_nieuw[], etc? Laat eens de HTML zienquote:Op woensdag 12 juli 2006 12:53 schreef qu63 het volgende:
[..]
[tijd_nieuw] => 1 [km_nieuw] => 1 [prijs_nieuw] => 1
en dat terwijl ik in totaal 5 nieuwe regels heb ingevuld.
quote:Op woensdag 12 juli 2006 12:59 schreef JeRa het volgende:
[..]
En dat was in een formulier met namen voor de velden als km_nieuw[], tijd_nieuw[], etc? Laat eens de HTML zien
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | function form() { if ($_GET['order'] == 'km' ) { $result = mysql_query('SELECT tijd, km, prijs FROM qu63 ORDER BY km, tijd'); } elseif ($_GET['order'] == 'tijd') { $result = mysql_query('SELECT tijd, km, prijs FROM qu63 ORDER BY tijd, km'); } else { $result = mysql_query('SELECT tijd, km, prijs FROM qu63 ORDER BY km, tijd'); } <form method="get" action="update.php"> <input type="text" name="an" value="0" maxlength="2" size="1"><input type="submit" value="Submit"> </form> <form method="post" action="update.php"> <table> <tr><td><a href="update.php?order=tijd">Tijd (uren)</a></td><td><a href="update.php?order=km">Afstand (km)</a></td><td>Prijs</td></tr> php while ($row = mysql_fetch_assoc($result)) { echo '<tr><td>'.$row['tijd'].'</td>'; echo '<td>'.$row['km'].'</td>'; echo '<td><input type="text" name=prijs['.$row['tijd'].']['.$row['km'].'] value='.$row['prijs'].'>'; echo '<input type="hidden" name=oud['.$row['tijd'].']['.$row['km'].'] value='.$row['prijs'].'></td></tr>'; } for($i = 0; $i < $_GET['an']-1; $i++) { echo "<tr><td><input name=\"tijd_nieuw[$i]\"></td>"; echo "<td><input name=\"km_nieuw[$i]\"></td>"; echo "<td><input name=\"prijs_nieuw[$i]\"></td></tr>"; } <tr><td><input name="tijd_nieuw"></td> <td><input name="km_nieuw"></td> <td><input name="prijs_nieuw"></td></tr> </table> <input type="submit" value="Update"> </form> php } function update() { $aangepast = 0; echo print_r($_POST); nieuwe waarden? if (($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] >0) && ($_POST['prijs_nieuw'] >0)) { mysql_query('INSERT INTO qu63 (prijs, tijd, km) VALUES ('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].')'); $aangepast++; } //Bij het begin beginnen :) reset($_POST['oud']); //De array bevat tijd, afstand en prijs. //Dat is niet in 1 lus uit te lezen, dus doen we het met twee. while (list($tijd, $tmp) = each($_POST['oud'])) { while (list($km, $prijs) = each($tmp)) { //Als er een andere prijs staat dan zetten we die in de database if($_POST['prijs'][$tijd][$km] != $prijs) { mysql_query('UPDATE qu63 SET prijs = '.intval($_POST['prijs'][$tijd][$km]).' WHERE tijd = '.$tijd.' AND km = '.$km); $aangepast++; } } } $refresh = 3; echo '<meta http-equiv="refresh" content="'.$refresh.'; URL="'.$_SERVER['PHP_SELF'].'" />'; echo 'Update uitgevoerd, '.$aangepast.' waarden aangepast.<br />'; echo 'Refresh in '.$refresh.' seconden.'; } //Een eventuele addslashes ongedaan maken. Niet echt nuttig met alleen cijfers, maar wel zo duidelijk. if (get_magic_quotes_gpc()) { function stripslashes_deep(&$value, $key) { if(is_array($value)) { array_walk($value, 'stripslashes_deep'); } else { $value = stripslashes($value); } } array_walk($_GET, 'stripslashes_deep'); array_walk($_POST, 'stripslashes_deep'); array_walk($_COOKIE, 'stripslashes_deep'); } mysql_connect(DB_HOST, DB_USER, DB_PASS); mysql_select_db(DB_DATABASE); { if (count($_POST)) { update(); } else { form(); } ?> |
de whilie-loop werkt wel, die wordt gewoon geupdatequote:Op woensdag 12 juli 2006 13:33 schreef JeRa het volgende:
@qu63
Zet de veldnamen tussen aanhalingstekens, grote kans dat het dan wél werkt.
Sowieso doe je er goed aan alle attributes tussen aanhalingstekens te zetten.
1 2 3 4 5 | echo "<tr><td><input name=\"tijd_nieuw[$i]\"></td>"; echo "<td><input name=\"km_nieuw[$i]\"></td>"; echo "<td><input name=\"prijs_nieuw[$i]\"></td></tr>"; } |
Dus je hebt wel verschillende waarden uit $_POST, maar je weet niet hoe je de INSERT/UPDATE-query moet schrijven voor meerdere waarden? Met een INSERT kun je standaard meerdere values meegeven (zie de MySQL manual) maar voor een UPDATE zul je een loopje moeten maken over alle waarden.quote:Op woensdag 12 juli 2006 13:50 schreef qu63 het volgende:
alleen kan ik die ene regel die alles in mn sql-tabel moet proppen niet goed maken, omdat er dus verschillende $_POST['km_nieuw'] waarden zijn.. dat is het enige punt eigenlijk.
de Update loop zit er ook al in en werkt ook.quote:Op woensdag 12 juli 2006 14:06 schreef JeRa het volgende:
[..]
Dus je hebt wel verschillende waarden uit $_POST, maar je weet niet hoe je de INSERT/UPDATE-query moet schrijven voor meerdere waarden? Met een INSERT kun je standaard meerdere values meegeven (zie de MySQL manual) maar voor een UPDATE zul je een loopje moeten maken over alle waarden.
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);quote:Op woensdag 12 juli 2006 14:06 schreef JeRa het volgende:
[..]
Dus je hebt wel verschillende waarden uit $_POST, maar je weet niet hoe je de INSERT/UPDATE-query moet schrijven voor meerdere waarden? Met een INSERT kun je standaard meerdere values meegeven (zie de MySQL manual) maar voor een UPDATE zul je een loopje moeten maken over alle waarden.
Normaal gesproken maakt ie de afbeelding 'on-the-fly'. Anders zou je er geen GD voor nodig hebben.quote:Op woensdag 12 juli 2006 10:15 schreef Desdinova het volgende:
[..]
ja hoe werkt dat precies? is het gewoon een hidden field ofzoiets die je een random waarde geeft, alsmede een selectie afbeeldingen met dezelfde tekens maar dan wat onduidelijker?
maar hoe kan ik er voor zorgen dat 4,5,6 niet hetzelfde is als 1,2,3?quote:Op woensdag 12 juli 2006 14:34 schreef Darkomen het volgende:
precies zoals het er staatipv in de while loopt steeds " INSERT INTO tbl_name (a,b,c) VALUES(1,2,3)" te doen voeg je achter (1,2,3) ,(4,5,6) toe.
1 2 3 4 5 6 7 8 9 | if (($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] >0) && ($_POST['prijs_nieuw'] >0)) { foreach($_POST['km_nieuw'] as $km_nieuw) { mysql_query('INSERT INTO qu63 (km) VALUES ('$km_nieuw')'); $aangepast++; } foreach($_POST['tijd_nieuw'] as $tijd_nieuw) { mysql_query('INSERT INTO qu63 (tijd) VALUES ('$tijd_nieuw')'); $aangepast++; } foreach($_POST['prijs_nieuw'] as $prijs_nieuw) { mysql_query('INSERT INTO qu63 (prijs) VALUES ('$prijs_nieuw')'); $aangepast++; } ?> |
niet dusquote:Op woensdag 12 juli 2006 15:47 schreef qu63 het volgende:
[..]
maar hoe kan ik er voor zorgen dat 4,5,6 niet hetzelfde is als 1,2,3?
ik heb nu dit:
[ code verwijderd ]
kan dat
Ehm...door te controleren of ze hetzelfde zijn? Ik snap je niet.quote:Op woensdag 12 juli 2006 15:47 schreef qu63 het volgende:
[..]
maar hoe kan ik er voor zorgen dat 4,5,6 niet hetzelfde is als 1,2,3?
Ze hebben PHP in CGI-modus draaien. Je moet ervoor zorgen dat het bestand dat je opvraagt ook daadwerkelijk bestaat en dat de rechten goedstaan voor de webserver/je gebruiker om het bestand te lezen.quote:Op woensdag 12 juli 2006 16:14 schreef wonderer het volgende:
Mijn chatbox kwam ineens met de melding "no input file specified". Heeft iemand daar wel eens mee te maken gehad en hoe is dat op te lossen? Ik vermoed dat de host iets aan PHP heeft veranderd, maar ik snap de uitleg op internet niet zo goed.
ik heb een hele rij al ingevulde tabellen, waarbij ik alleen de prijs kan aanpassen.quote:Op woensdag 12 juli 2006 16:52 schreef JeRa het volgende:
[..]
Ehm...door te controleren of ze hetzelfde zijn? Ik snap je niet.
1 2 3 4 5 6 7 8 9 | while (list($km, $prijs) = each($tmp)) { //Als er een andere prijs staat dan zetten we die in de database if($_POST['prijs'][$tijd][$km] != $prijs) { mysql_query('UPDATE qu63 SET prijs = '.intval($_POST['prijs'][$tijd][$km]).' WHERE tijd = '.$tijd.' AND km = '.$km); $aangepast++; } } } |
dus:quote:Op woensdag 12 juli 2006 17:20 schreef JeRa het volgende:
@qu63
Dat kun je dus doen met deze methode
[ code verwijderd ]
ehm, maar dan wel met alle aanhalingstekens goed dusquote:Op woensdag 12 juli 2006 17:32 schreef qu63 het volgende:
[..]
dus:
INSERT INTO qu63 (km, tijd, prijs) VALUES ("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']'), ("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']'),("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']')
zoiets?
anders snap ik er echt geen hout meer van
Ik heb niets veranderd en gister deden ze het nogquote:Op woensdag 12 juli 2006 16:53 schreef JeRa het volgende:
[..]
Ze hebben PHP in CGI-modus draaien. Je moet ervoor zorgen dat het bestand dat je opvraagt ook daadwerkelijk bestaat en dat de rechten goedstaan voor de webserver/je gebruiker om het bestand te lezen.
Inderdaad, zoiets. Nu moet je alleen nog een handige manier zien te vinden om zo'n query op te bouwenquote:Op woensdag 12 juli 2006 17:32 schreef qu63 het volgende:
[..]
dus:
INSERT INTO qu63 (km, tijd, prijs) VALUES ("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']'), ("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']'),("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']')
zoiets?
anders snap ik er echt geen hout meer van
en daar loop ik dus al de hele middag tegen aanquote:Op woensdag 12 juli 2006 17:37 schreef JeRa het volgende:
[..]
Inderdaad, zoiets. Nu moet je alleen nog een handige manier zien te vinden om zo'n query op te bouwen
Bedenk je even hoe je het het simpelst kunt doen en welke acties/condities er moeten gelden. Voorbeeldje:quote:Op woensdag 12 juli 2006 17:40 schreef qu63 het volgende:
[..]
en daar loop ik dus al de hele middag tegen aan
if(($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] > 0) && ($_POST['prijs_nieuw'] > 0)) {quote:Op woensdag 12 juli 2006 17:44 schreef JeRa het volgende:
[..]
Bedenk je even hoe je het het simpelst kunt doen en welke acties/condities er moeten gelden. Voorbeeldje:
Je gaat géén INSERT uitvoeren als er geen nieuwe velden zijn ingevuld. Als je wel iets insert ziet het er minstens zo uit:
INSERT INTO tabel (a,b,c) VALUES (1,2,3)
Bij meerdere rows ziet het er zo uit:
INSERT INTO tabel (a,b,c) VALUES (1,2,3),(4,5,6),etc
Dus je begint met die eerste query, en plakt er voor elke extra row een stukje string in de vorm van ",(a,b,c)" aan(let op de komma op het begin)
Uiteindelijk voer je de query gewoon uit.
INSERT INTO `qu63` (`km`,` tijd`,`prijs`)quote:Op woensdag 12 juli 2006 17:32 schreef qu63 het volgende:
[..]
dus:
INSERT INTO qu63 (km, tijd, prijs) VALUES ("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']'), ("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']'),("$_POST['km_nieuw']', '$_POST['tijd_nieuw']','$_POST['prijs_nieuw']')
zoiets?
anders snap ik er echt geen hout meer van
quote:Op woensdag 12 juli 2006 17:47 schreef guitarist.nl het volgende:
[..]
INSERT INTO `qu63` (`km`,` tijd`,`prijs`)
VALUES ( ' "$_POST['km_nieuw']" ', ' "$_POST['tijd_nieuw']" ', ' "$_POST['prijs_nieuw']" ', );
quote:Op woensdag 12 juli 2006 17:47 schreef qu63 het volgende:
[..]
if(($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] > 0) && ($_POST['prijs_nieuw'] > 0)) {
mysql_query('INSERT INTO qu63 (prijs, tijd, km) VALUES ('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].')');
dat was mn oude dus
dus ik hoef er dan nu alleen nog ,('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].') achter plakken
Nee, want dat is natuurlijk exact hetzelfde. Je moet rekening houden met het feit dat je nu met een array werkt en niet met slechts één waarde. Maar het principe blijft hetzelfde jaquote:Op woensdag 12 juli 2006 17:47 schreef qu63 het volgende:
[..]
if(($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] > 0) && ($_POST['prijs_nieuw'] > 0)) {
mysql_query('INSERT INTO qu63 (prijs, tijd, km) VALUES ('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].')');
dat was mn oude dus
dus ik hoef er dan nu alleen nog ,('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].') achter plakken
[1] etc er achterquote:Op woensdag 12 juli 2006 17:54 schreef JeRa het volgende:
[..]
Nee, want dat is natuurlijk exact hetzelfde. Je moet rekening houden met het feit dat je nu met een array werkt en niet met slechts één waarde.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |