De database bevat produkten zonder veldwaarde en word opgehaald met :
<?php
$products_extra_fields_query = tep_db_query("SELECT * FROM " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " WHERE products_id=" . (int)$products['products_id']);
while ($products_extra_fields = tep_db_fetch_array($products_extra_fields_query)) {
$extra_fields_array[$products_extra_fields['products_extra_fields_id']] = $products_extra_fields['products_extra_fields_value']; // VALUE
}

// $extra_fields_names_query = tep_db_query("SELECT * FROM " . TABLE_PRODUCTS_EXTRA_FIELDS. " WHERE (languages_id='0' or languages_id='".(int)$languages[$i]['id']."') and products_extra_fields_id in (120,156) ORDER BY products_extra_fields_order");
$extra_fields_names_query = tep_db_query("SELECT * FROM " . TABLE_PRODUCTS_EXTRA_FIELDS. " WHERE (languages_id='0' or languages_id='".(int)$languages[$i]['id']."') ORDER BY products_extra_fields_order");
while ($extra_fields_names = tep_db_fetch_array($extra_fields_names_query)) {
$extra_field_name[$extra_fields_names['products_extra_fields_id']] = $extra_fields_names['products_extra_fields_name'];
if ($extra_fields_array[$extra_fields_names['products_extra_fields_id']] != '')
echo '<B>'.$extra_fields_names['products_extra_fields_name'].':
</B>&nbsp;'.stripslashes($extra_fields_array[$extra_fields_names['products_extra_fields_id']]).'<BR>'."\n"

}
echo '&nbsp;';
?>
Moet er in het SELECT statement een optie komen om de lege veldwaarden voor bepaalde produkten in de resultaatlijst(resultset) t ekrijgen?
Christiaan Scheermeijer op 05/05/2012 00:09:27

Wanneer er een waarde wordt ingevoerd, komt deze in de tabel te staan.
Dus als er géén waarde is voor een `Extra Field` komt deze niet voor in extra_fields_to_products!

Ja, dan moet er een leeg veld(zonder waarde) staan op de produktlijst in de kolom

Ik zal de code testen !

update!, deze werkt:

http://www.rwbshop.nl/product_info2.php?cPath=38_799_33_246&products_id=6451

<?php
$extra_fields_array = array();
$products_extra_fields_query = tep_db_query("SELECT * FROM " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " WHERE products_id=" . (int)$products['products_id']); // $products of $product_info
while ($products_extra_fields = tep_db_fetch_array($products_extra_fields_query)) {
$extra_fields_array[$products_extra_fields['products_extra_fields_id']] = $products_extra_fields['products_extra_fields_value']; // VALUE
}
$extra_fields_names_query = tep_db_query("SELECT * FROM " . TABLE_PRODUCTS_EXTRA_FIELDS. " WHERE (languages_id='0' or languages_id='".(int)$languages[$i]['id']."') ORDER BY products_extra_fields_order");
while ($extra_fields_names = tep_db_fetch_array($extra_fields_names_query)) {
$extra_field_name[$extra_fields_names['products_extra_fields_id']] = $extra_fields_names['products_extra_fields_name'];

if(array_key_exists($extra_fields_names['products_extra_fields_id'], $extra_fields_array)){
echo '<B>'.$extra_fields_names['products_extra_fields_name'].': </B>&nbsp;'.stripslashes($extra_fields_array[$extra_fields_names['products_extra_fields_id']]).'<BR>'."\n";
}else{
echo '<B>'.$extra_fields_names['products_extra_fields_name'].': </B>&nbsp;Leeg!<BR>'."\n";
}

}
echo '&nbsp;'; ?>
Het werkt nog niet..ja wel net zo zoals bij jouw shop, maar dat is is niet praktisch opde shopadministratie..zie plaatje..daar moet alleen "leeg" komen te staan of gewoon niets( leeg kolomwaarde)
Kijk naar het plaatje ..die kolom waarde moet leeg zijn en dat mag met een woord "leeg" zijn..dat is mooi, want het is op de shopadministratie
Je hebt het if statement uitgebreid, als een produkt geen veldwaarde heeft,dan staat ie ook niet in de tabel, dus ook niet zijn products_id is bekend
zie http://www.zerospec.com/testmap/foreachteveel.jpg

Kijk ff naar het plaatje..als ik de testmotor geen veldwaarde geef dan zou het toch de veldwaarde Engine: Blowoff valve SQV UNIVERSAL krijgen , terwijl er geen veld is ingevoerd en de product_id dus niet bekend is

De foreach geeft toch een veldwaarde..mag niet..moet leeg zijn
Alle code hiervoor staat op deze draad..de database queries en de foreach dat is alles..er is niet meer code (gelukkig)
Dit plaatje is van de shopadministratie waarop de produktlijst te zien is
Dus het is te zien alleen op de shopadministratie.
Die veldwaardes zijn van een ajax search op de shop zelf door een klant te gebruiken
Wordt dit nou wel of niet gebruikt, aangezien de script die ik gaf al een resultaat laat zien.
Als het resultaat hierin verwerkt moet worden hoor ik dit graag :)

<?php
}
echo '&nbsp;';
// END: Extra Fields Contribution
// begin Extra Product Fields
foreach ($epf as $e) { // FUNCTIE ( arrayname as $index ) JD
if ($e['language'] == $languages[$i]['id']) {
if ($e['language_active']) {
if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
$value = tep_get_product_extra_value($e['id'], $pInfo->products_id, $languages[$i]['id']);
} else {
$value = tep_db_prepare_input($extra[$e['field']][$languages[$i]['id']]);
}
if (tep_not_null($value)) {
// if (tep_not_null($value)||($value == null)) { jd
echo '<b>' . $e['label'] . ': </b>';
if ($e['uses_list']) {
echo tep_get_extra_field_list_value($value, $e['show_chain']);
} else {
echo $value;
}
echo '<br>';
}
}
}
}
?>

Christiaan Scheermeijer op 05/05/2012 00:58:55

Wordt dit nou wel of niet gebruikt, aangezien de script die ik gaf al een resultaat laat zien.
Als het resultaat hierin verwerkt moet worden hoor ik dit graag :)

<?php
}
echo '&nbsp;';
// END: Extra Fields Contribution
// begin Extra Product Fields
foreach ($epf as $e) { // FUNCTIE ( arrayname as $index ) JD
if ($e['language'] == $languages[$i]['id']) {
if ($e['language_active']) {
if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
$value = tep_get_product_extra_value($e['id'], $pInfo->products_id, $languages[$i]['id']);
} else {
$value = tep_db_prepare_input($extra[$e['field']][$languages[$i]['id']]);
}
if (tep_not_null($value)) {
// if (tep_not_null($value)||($value == null)) { jd
echo '<b>' . $e['label'] . ': </b>';
if ($e['uses_list']) {
echo tep_get_extra_field_list_value($value, $e['show_chain']);
} else {
echo $value;
}
echo '<br>';
}
}
}
}
?>



Word het al wat duidelijker Christiaan ;)
Ja deze code hoort er ook bij dit is een foreach functie wat erbij hoort die de kolom vult voor elk produkt met veldwaarde..zie plaatje van de produktlijst op de shopadministratie

Dit is de code
<?php
foreach ($epf as $e) { // FUNCTIE ( arrayname as $index ) JD
if ($e['language'] == $languages[$i]['id']) {
if ($e['language_active']) {
if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
$value = tep_get_product_extra_value($e['id'], $pInfo->products_id, $languages[$i]['id']);
} else {
$value = tep_db_prepare_input($extra[$e['field']][$languages[$i]['id']]);
}
if (tep_not_null($value)) {
// if (tep_not_null($value)||($value == null)) { jd
echo '<b>' . $e['label'] . ': </b>';
if ($e['uses_list']) {
echo tep_get_extra_field_list_value($value, $e['show_chain']);
} else {
echo $value;
}
echo '<br>';
}
}
}
}
?>


[size=xsmall]Toevoeging op 05/05/2012 01:10:14:[/size]

Ik denk dat de foreach() geen produkten zonder veldwaarde erin betrekt
In het Engels word dat alle niet .. nonempty extra fields
Ik zie nergens code voor de $epf array?, en er zit achter deze contributie heel veel meer code dan dat je hier post;)
Christiaan Scheermeijer op 05/05/2012 01:12:29

Ik zie nergens code voor de $epf array?

vroeg ik me ook weleens waar ie stond
Als het goed is ..is dit het..poeh hoe hier uit te komen
<?php
// begin Extra Product Fields
$epf_query = tep_db_query("select e.epf_id, e.epf_uses_value_list, e.epf_show_parent_chain, e.epf_size, l.epf_label, l.languages_id, l.epf_active_for_language from " . TABLE_EPF . " e join " . TABLE_EPF_LABELS . " l where e.epf_status and (e.epf_id = l.epf_id) order by e.epf_order");
$epf = array();
$xfields = array();
while ($e = tep_db_fetch_array($epf_query)) { // retrieve all active extra fields for all languages
$field = 'extra_value' . ($e['epf_uses_value_list'] ? '_id' : '') . $e['epf_id'];
$epf[] = array('id' => $e['epf_id'],
'label' => $e['epf_label'],
'uses_list' => $e['epf_uses_value_list'],
'show_chain' => $e['epf_show_parent_chain'],
'size' => $e['epf_size'],
'language' => $e['languages_id'],
'language_active' => $e['epf_active_for_language'],
'field' => $field);
if (!in_array( $field, $xfields))
$xfields[] = $field; // build list of distinct fields
}
// end Extra Product Fields
?>



[size=xsmall]Toevoeging op 05/05/2012 01:22:49:[/size]

Christiaan Scheermeijer op 05/05/2012 01:12:29

Ik zie nergens code voor de $epf array?, en er zit achter deze contributie heel veel meer code dan dat je hier post;)


Dan zou ik de hele admin/categories.php hier moeten posten..wil je dat ?


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..

Reageren