Thread: PHP: probleempje met mysql query
-
19-09-2007, 01:06 #1Approved 9-lifer
- Registered
- 01/08/02
- Location
- Gent
- Posts
- 9,675
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/361
PHP: headers already sent
kvoel me nogal stom dak hier weer een thread moet komen maken over hoogstwaarschijnlijk iets onnozel dat ik over het hoofd zie, maar goed, here goes.
Oud probleem opgelost, nieuw: zie post #3
Ik heb een tabel met items voor m'n navigatie: id, parent id, positie en dan de 4 verschillende talen.
In m'n cms loop ik door deze gegevens en stel zo een tabel op met de gegevens van elk item, om deze te updaten. Opdat ik unieke namen zou hebben voor m'n input velden en selects gebruik ik dingen als echo $row['id'].'-id'; enzovoort...
Als ik het script wil afhandelen loop ik weer door deze gegevens als volgt:
Alsek print_r($_POST); doe, zie ik dat alles in orde is en alles juist wordt doorgegeven, maar ergens in m'n while loop gaat het fout, want er wordt niet geupdate...PHP Code:if(isset($_POST['submNavEdit'])) {
//get highest id
$g = mysql_fetch_assoc(mysql_query("SELECT id FROM nav ORDER BY id DESC LIMIT 0, 1"));
$lp = $g['id']; //highest id
$i = 1;
while($i <= $lp) {
$curbn = $i.'-bn';
$curbf = $i.'-bf';
$curfr = $i.'-fr';
$curde = $i.'-de';
$curpid = $i.'-pid';
$curid = $_POST['id'];
$pid = isset($_POST[$curpid]) ? $_POST[$curpid] : '';
$bn = isset($_POST[$curbn]) ? $_POST[$curbn] : '';
$bf = isset($_POST[$curbf]) ? $_POST[$curbf] : '';
$fr = isset($_POST[$curfr]) ? $_POST[$curfr] : '';
$de = isset($_POST[$curde]) ? $_POST[$curde] : '';
$qry = "UPDATE nav SET pid = '$pid', bn = '$bn', bf = '$bf', fr = '$fr', de = '$de' WHERE id = '$curid'";
if(mysql_query($qry)) {
header("Location: ".REFERER);
} else {
die(mysql_error());
}
$i++;
}
}
Last edited by Bram; 19-09-2007 at 11:54.
If I had a nickel for every time someone told me that my idea for melting down coins to make a giant robotic parrot was a bad idea, I would have one kicka$$ giant robotic parrot.no votes
-
-
19-09-2007, 11:25 #2Member
- Registered
- 07/06/06
- Location
- Antwerpen
- Posts
- 157
- iTrader
- 0
- Mentioned
- 0 Post(s)
Steekt er wel een waarde in uw $curid ?
Print de query eens af zodat je kan zien wat hij er van maakt en of alles wel effectief ingevuld is...no votes
-
19-09-2007, 11:38 #3Approved 9-lifer
- Registered
- 01/08/02
- Location
- Gent
- Posts
- 9,675
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/361
da was dus het probleem... gvd, laat werken is nooit een goed idee

ik moest ook nog een current id maken, de gewone id werkte dus niet. alvast bedankt!
edit: ander probleem: m'n header("Location: ".REFERER) doet het niet meer... Headers allready sent error, maar nochtans wordt de php afgehandeld voor de HTML (admin.inc.php wordt geinclude voordat admin.tpl wordt weergegeven)...
Waarom geeft ie dan deze bug? Omdat er hoger in het document al een header() staat? (na het inlogform)
edit: opgelost: gewoon ipv van de header() te zetten, staat er nu $refer = TRUE; op het einde van het document controleert hij...Last edited by Bram; 19-09-2007 at 11:57.
If I had a nickel for every time someone told me that my idea for melting down coins to make a giant robotic parrot was a bad idea, I would have one kicka$$ giant robotic parrot.no votes
-
20-09-2007, 13:23 #4Approved 9-lifer
- Registered
- 01/08/02
- Location
- Gent
- Posts
- 9,675
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/361
v dit topic gebruik makend om geen nieuwe te hoeven starten:
M'n nav database heeft een veld id met unieke waarden. Nu normaal gezien zou je dat op auto-increment zetten, maar ik ga echter eerst de hoogste id waarde gaan achterhalen en vermeerder die dan met 1, opdat ik in m'n nav edit formulier er zou kunnen doorlopen als volgt:
(ik gebruik smarty)HTML Code:{foreach from=$all item=row} <input type="text" name="{$row.id}-bn" value="{$row.bn}" /> {/foreach—
en in m'n php loop ik door al deze waarden met
Nu zit ik echter met het probleem (of ik nu auto-increment gebruik of mijn systeem) dat, wanneer ik een menu-item delete (bv 5) de id's overspringen van 4 op 6. In m'n php while lus geeft dat echter een probleem, aangezien ie gaat zoeken naar een id nummer 5, dat niet bestaat. Gevolg: error.PHP Code:$i = 1;
while($i <= $lp) {
$curbn = $i.'-bn';
$bn = isset($_POST[$curbn]) ? $_POST[$curbn] : '';
}
Iemand een suggestie hoe dit op te lossen?If I had a nickel for every time someone told me that my idea for melting down coins to make a giant robotic parrot was a bad idea, I would have one kicka$$ giant robotic parrot.no votes
-
20-09-2007, 15:11 #5Verwarmingselement
- Registered
- 01/07/02
- Location
- Brussel
- Posts
- 3,810
- iTrader
- 14 (100%)
- Mentioned
- 1 Post(s)
- Reputation
- 0/22
Ik heb nu 5x uw code gelezen maar versta de bedoeling nog altijd niet.
Maar waarom bereken je als het ware die IDs ? Haal ze gewoon op uit je database en toon ze in je list ?no votes
-
20-09-2007, 16:12 #6Approved 9-lifer
- Registered
- 01/08/02
- Location
- Gent
- Posts
- 9,675
- iTrader
- 3 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/361
ja sorry, kwas nog nie lang wakker
kheb het ondertussen al kunnen oplossen. De code ging op zoek naar iets wat er niet was (door die while loop). Ik moest gewoon nog een if inbouwen die controleert of den mysql result wel bestond, en zo niet, dat oversloeg in de lus.
Kzit ondertss met een ander ei
kmoet een aantal records selecteren uit tabel nav, maar als een overeenkomend navid voorkomt in de tabel content, dan mogen ze niet in de resulterende array opgenomen worden. khad geprobeerd met nen inner join, ma da werkt precies niet (tenzij ik iets verkeerd doe)
lang leve de mannen op ircPHP Code:$fetchid = mysql_query("SELECT * FROM nav INNER JOIN content ON content.navid != nav.id");
PHP Code:"SELECT * FROM nav WHERE NOT EXISTS (SELECT * FROM content WHERE content.navid = nav.id)"
Last edited by Bram; 20-09-2007 at 16:29.
If I had a nickel for every time someone told me that my idea for melting down coins to make a giant robotic parrot was a bad idea, I would have one kicka$$ giant robotic parrot.no votes
