Hoe lege waarden uit tabel halen?..moet dit met SELECT eerst
Christiaan Scheermeijer op 05/05/2012 01:30:36:
Maakt het beeld niet veel completer, maar waarom gebruik je 2 verschillende extra fields contributions?
De code wat ik je gaf is van `Product Extra Fields` en wat je nu laat zien is van `Extra Product Fields 1.0` voor Online Merchant.
Dat maakt het niet veel duidelijker zeg maar..
De code wat ik je gaf is van `Product Extra Fields` en wat je nu laat zien is van `Extra Product Fields 1.0` voor Online Merchant.
Dat maakt het niet veel duidelijker zeg maar..
Probleem is dat ik deze contributie er niet zelf heb opgezet voor de ajax search
en misschien dat ik weleens een extra fields contributie er eerder heb opgezet..weet het niet meer..viel me al eerder op
Online merchant zegt me niets omdat ik oscommerce gebruik..helaas is dit verwarrend
Ik heb tientallen contributies eropgezet en niet 100 % administratief kloppend dat ik precies weet wat ik gedaan heb
In proncipe zou het met de aanwijzingen te achterhalen zijn
Het is niet goed gedocumenteerd zoals het professioneel zou gebeuren
Ik kan maar één $epf array vinden...
Gewijzigd op 05/05/2012 01:42:59 door Jan Douma
De resultaten van het eerste stuk code wat jij liet zien is voor de eerste Contri het gene wat jij wilt veranderen is de tweede Contri.
Helaas heb ik geen ervaring met die tweede en ziet er voor dit tijdstip erg verwarrend uit!
Wat hecht ik toch veel waarde aan OOP/MVC als je dit weer ziet :)
Gewijzigd op 05/05/2012 01:43:40 door Christiaan Scheermeijer
Ik dacht dat het wel relatief eenvoudig op te lossen zou zijn en heb die rus niet nodig, maar ja
Een andere mogelijkheid is dat ik een extra veld toevoeg op de shopadmnistratie die ja of nee laat zien in de kolom van de produktlijst als er een veld is toegevoegd
Liever niet, omdat het extra handelingen zijn
Niet alle contributies zijn meer voor oude versies oscommerce te gebruiken, begrijp ook niet dat er een contributie voor d elaatst eoscommerce versie op deze oud eversie kan werken..misschien weer met een kleine code aanpassing?
Christiann .. bedankt voor je inzet en het is al laat
Toevoeging op 05/05/2012 01:52:35:
Christiaan Scheermeijer op 05/05/2012 01:43:09:
Om het duidelijker te maken, de eerste contributie is voor de `oude` OsCommerce de tweede is voor de nieuwste versie.
De resultaten van het eerste stuk code wat jij liet zien is voor de eerste Contri het gene wat jij wilt veranderen is de tweede Contri.
Helaas heb ik geen ervaring met die tweede en ziet er voor dit tijdstip erg verwarrend uit!
Wat hecht ik toch veel waarde aan OOP/MVC als je dit weer ziet :)
De resultaten van het eerste stuk code wat jij liet zien is voor de eerste Contri het gene wat jij wilt veranderen is de tweede Contri.
Helaas heb ik geen ervaring met die tweede en ziet er voor dit tijdstip erg verwarrend uit!
Wat hecht ik toch veel waarde aan OOP/MVC als je dit weer ziet :)
Ja dit is verouderde software waar ik nog wat functionaliteit probeer aan toe te voegen, maar de shop draait al 10 jaar
Ik begrijp dat je er niet uitkomt?
Gewijzigd op 05/05/2012 01:57:47 door Jan Douma
Ik denk dat jouw programmeur als die het nog herinnerd sneller klaar is dan nu.
Ik heb mijn best gedaan ;)
Christiaan Scheermeijer op 05/05/2012 01:58:48:
Nee dan zou ik eerst die contributie moeten doorlezen (2200 regels) en daarna kijken wat er mis gaat, want dit probleem gaat ook weer samen met Ajax Search begrijp ik..
Ik denk dat jouw programmeur als die het nog herinnerd sneller klaar is dan nu.
Ik heb mijn best gedaan ;)
Ik denk dat jouw programmeur als die het nog herinnerd sneller klaar is dan nu.
Ik heb mijn best gedaan ;)
Zeker weten..jammer had ik nog wel wat van je kunnen leren
Bedankt Christiaan!
Als ik het goed begrijp heb je een tabel met producten, een tabel met extra velden en op die twee een koppeltabel. Een voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT p.prd_name, p.prd_price, pef.label, pef.value [....]
FROM
(SELECT prd_name, prd_price
FROM products
ORDER BY prd_price
LIMIT 15,15) AS p
LEFT JOIN
prd_extra_fields_join AS pefj
ON p.prd_id = pefj_prd_id
LEFT JOIN
prd_extra_fields AS pef
ON pef.pef_id = pefj.pef_id
ORDER BY
p.prd_price, p.prd_id, pef.sort_order
FROM
(SELECT prd_name, prd_price
FROM products
ORDER BY prd_price
LIMIT 15,15) AS p
LEFT JOIN
prd_extra_fields_join AS pefj
ON p.prd_id = pefj_prd_id
LEFT JOIN
prd_extra_fields AS pef
ON pef.pef_id = pefj.pef_id
ORDER BY
p.prd_price, p.prd_id, pef.sort_order
Om dezelfde veldwaarden t ekrijgen nu voor 1 produkt heeft ie wel 1 query gebruikt
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
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
$products_id = (int)$HTTP_GET_VARS['products_id'];
$extra_fields_query = tep_db_query("
SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
ON ptf.products_extra_fields_id=pef.products_extra_fields_id
WHERE ptf.products_id=". (int) $products_id ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$languages_id."')
ORDER BY products_extra_fields_order");
while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
if (! $extra_fields['status']) // show only enabled extra field
continue;
echo /* Advance software search bof */ '<tr>
<td>
<table border="0" width="50%" cellspacing="0" cellpadding="2px"><tr>
<td class="main" align="left" vallign="middle" nowrap><b><font size="1" color="#666666">'.$extra_fields['name'].': </b></font></td>';
echo '<td nowrap><font size="1" color="#666666">' .$extra_fields['value'].'<BR></font> </tr>
</table>
</td>
</tr>';
}
?>
$products_id = (int)$HTTP_GET_VARS['products_id'];
$extra_fields_query = tep_db_query("
SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
ON ptf.products_extra_fields_id=pef.products_extra_fields_id
WHERE ptf.products_id=". (int) $products_id ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$languages_id."')
ORDER BY products_extra_fields_order");
while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
if (! $extra_fields['status']) // show only enabled extra field
continue;
echo /* Advance software search bof */ '<tr>
<td>
<table border="0" width="50%" cellspacing="0" cellpadding="2px"><tr>
<td class="main" align="left" vallign="middle" nowrap><b><font size="1" color="#666666">'.$extra_fields['name'].': </b></font></td>';
echo '<td nowrap><font size="1" color="#666666">' .$extra_fields['value'].'<BR></font> </tr>
</table>
</td>
</tr>';
}
?>
Dit zou je nu voor produkten meer dan 1 kunnen gebruiken omhiervan ook een produktlijst te gaan maken?
In een plaatje en in het begin van deze topic heb ik uitgelegd wat die foreach fout doet..dus mogelijk dat het niets met de database zelf te maken heeft?
Toevoeging op 05/05/2012 11:46:10:
http://www.zerospec.com/testmap/produktlijst1produkt.jpg
Laat ik proberen om het programmeerprobleem vereenvoudigen tot het weergeven van d e veldwaarde voor 1 produkt-- zie plaatje
------------------------------------------------------------
De foreach word hier niet meer gebruikt !
-------------------------------------------------
Op de shopadministratie is het mogelijk om in de produktlijst één voor één door de produkten te lopen..je opent de produktinvoer bladzijde voor 1 produkt ( te zien in de produktlijst aan het grijze selectie driehoek ..welk produkt is geselecteerd )
De bestaande code die het éne produkt selecteert moet ook dan de querie die hierboven staat gaan gebruiken, want dat is voor 1 produkt
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
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
$products_id = (int)$HTTP_GET_VARS['products_id'];
$extra_fields_query = tep_db_query("
SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
ON ptf.products_extra_fields_id=pef.products_extra_fields_id
WHERE ptf.products_id=". (int) $products_id ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$languages_id."')
ORDER BY products_extra_fields_order");
while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
if (! $extra_fields['status']) // show only enabled extra field
continue;
echo /* Advance software search bof */ '<tr>
<td>
<table border="0" width="50%" cellspacing="0" cellpadding="2px"><tr>
<td class="main" align="left" vallign="middle" nowrap><b><font size="1" color="#666666">'.$extra_fields['name'].': </b></font></td>';
echo '<td nowrap><font size="1" color="#666666">' .$extra_fields['value'].'<BR></font> </tr>
</table>
</td>
</tr>';
}
?>
$products_id = (int)$HTTP_GET_VARS['products_id'];
$extra_fields_query = tep_db_query("
SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
ON ptf.products_extra_fields_id=pef.products_extra_fields_id
WHERE ptf.products_id=". (int) $products_id ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$languages_id."')
ORDER BY products_extra_fields_order");
while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
if (! $extra_fields['status']) // show only enabled extra field
continue;
echo /* Advance software search bof */ '<tr>
<td>
<table border="0" width="50%" cellspacing="0" cellpadding="2px"><tr>
<td class="main" align="left" vallign="middle" nowrap><b><font size="1" color="#666666">'.$extra_fields['name'].': </b></font></td>';
echo '<td nowrap><font size="1" color="#666666">' .$extra_fields['value'].'<BR></font> </tr>
</table>
</td>
</tr>';
}
?>
Opmerking: voor Christiaan zou dit mogelijk wel op te lossen zijn?
Het lijkt me dat je die tweede wil controleren, maar de bovenstaande code is weer voor die eerste..
Ik denk toch dat het handig is als je eerst duidelijk het probleem beschrijft, met de juiste code.
Dus niet verschillende problemen door elkaar..
Het is een beetje een zootje aan het worden. En eerlijk gezegd denk ik dat niemand er wat van snapt :)
Het probleem met 1 query is dat je dan niet de resultaten terug krijgt die niet bestaan (logisch).
Dit is juist zijn probleem, aangezien voor 1 product meerdere rijen in de extra velden tabel staan.
Om te schetsen:
Producten Extra Velden
Product1 - Merk -> Peugeot
Type -> 106
Product2 - Merk -> Honda
Product3 - Merk -> VW
Type -> Golf
Jaar -> 2005
Gewijzigd op 05/05/2012 19:37:44 door Christiaan Scheermeijer
Ik heb goed nieuws voor je dat mijn russische programmeur net een uurtje terug me e-mailde dat ie het gefixed had..is een expert.
Inderdaad werkt de foreach() nu correct!..super.
Ik heb er vandaag wel een nieuw ernstig probleem bij gekregen, zodanig dat er geen bestelling meer gedaan kan worden omdat de check-out niet meer werkt.
De payment modules zijnn niet meer te zien..lijkt op een configuratieprobleem
Kan me nog wel iets herinneren dat ik iets aan de database heb toegevoegd..iets met configuratie vorig week..misschien iets overschreven?
Ben blij met de nieuwe functionaliteit en geprobeerd het hier ook op te lossen, maar het probleem duidelijk te presenteren met de ee4nduidge startcode blijkt lastig te zijn..nou ja het is opgelost en nu nog weer de checkout werkend krijgen?
Bedankt!