Freitag, 10. Jan. 2003 17:01 wrote l0t3k: > Johannes, > could you perhaps show a bit of the schema and your expected array > output in print_r format ? >
Yes, it comes below and also a solution by me: So my questions ar now: 1.) Is this ok or make this a lot of memory leaks ? I hope, in the end of script, the zend engiene freed the lot of arrays, they ar build in while .... 2.) I'm not sure by using the last argument (1 | NULL) in zend_hash_xxx and add_assoc_string. 3.) Is there an easy way to build the grow-up strings without memory leaks and memory waste. ---------------------------------------------- print_r(my_wish_array): ---------------------------------------------- Array ( [felder] => Array ( [ObjektLand] => Array ( [name] => ObjektLand [type] => text [value] => [checked] => 0 [multiple] => 0 [size] => 0 [minlength] => 1 [maxlength] => 50 [length_e] => Zu viele oder zu wenige Zeichen ... [icase] => 1 [valid_regex] => ^[a-z]*$ [valid_e] => Falsche Zeichen im Feld Land. [cols] => 0 [rows] => 0 [wrap] => [extrahtml] => ) [Bundesland] => Array ( [name] => Bundesland [type] => select [value] => [checked] => 0 [multiple] => 0 [size] => 0 [minlength] => 1 [maxlength] => 0 [length_e] => [icase] => [valid_regex] => [valid_e] => [cols] => 0 [rows] => 0 [wrap] => [extrahtml] => [options] => Array ( [0] => Array ( [label] => Nordrhein-Westfalen [value] => NRW ) [1] => Array ( [label] => Niedersachsen [value] => NL ) [2] => Array ( [label] => Mecklenburg-Vorpommern [value] => MVL ) ) ) ) [text] => Array ( [ObjektLand] => Array ( [title] => Land: [help] => Bitte geben Sie hier das Land ein. [beschreibung] => Land in dem das Objekt liegt. ) [Bundesland] => Array ( [title] => Bundesland: [help] => Bitte wählen Sie das Bundesland aus. [beschreibung] => Bundesland in dem das Objekt liegt. ) ) [select] => ObjektLand AS AObjektLand, Bundesland AS ABundesland, [update_x] => A.ObjektLand = '%s', A.Bundesland = '%s', [update_y] => AObjektLand, ABundesland, [fieldlist] => Array ( [0] => ObjektLand [1] => Bundesland ) ) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx my solution: (a part): xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx .... while (s_row = mysql_fetch_row(s_mysql_res)) { zval *field_array, *options_array, *options_value_array, *text_value_array; if (!strcmp(s_row[1], "select")){ MAKE_STD_ZVAL(options_value_array); if(array_init(options_value_array) != SUCCESS){ zend_error(E_ERROR, "field_array konnte nicht inizialisiert werden!"); } MAKE_STD_ZVAL(options_array); if(array_init(options_array) != SUCCESS){ zend_error(E_ERROR, "field_array konnte nicht inizialisiert werden!"); } snprintf(sql2, 200, "SELECT label_%s, value FROM form_pairs WHERE name = 'frm_%s'", arg6, s_row[0]); if (mysql_query(&s_mysql, sql2)){ mysql_fehler(&s_mysql); RETURN_FALSE; } s_mysql_res2 = mysql_store_result(&s_mysql); if (mysql_errno(&s_mysql) != 0){ mysql_fehler(&s_mysql); RETURN_FALSE; } else if (mysql_num_rows(s_mysql_res2) == 0){ /* Fehlerbehandlung keine Optionen angegeben */ } else { y = 1; while (s_row2 = mysql_fetch_row(s_mysql_res2)) { add_assoc_string(options_value_array, "label", s_row2[0], 1); add_assoc_string(options_value_array, "value", s_row2[1], 1); zend_hash_next_index_insert(Z_ARRVAL_P(options_array), &options_value_array, sizeof(zval *), NULL); } } mysql_free_result(s_mysql_res2); } MAKE_STD_ZVAL(field_array); if(array_init(field_array) != SUCCESS){ zend_error(E_ERROR, "field_array konnte nicht inizialisiert werden!"); } MAKE_STD_ZVAL(text_value_array); if(array_init(text_value_array) != SUCCESS){ zend_error(E_ERROR, "text_value_array konnte nicht inizialisiert werden!"); } pkey = s_row[0]; sprintf(pkeyP, "%s%s", arg7, s_row[0]); sprintf(pkeyPP, "%s.%s", arg7, s_row[0]); add_assoc_string(field_array, "name" , pkeyP, 1); for (z = 1; z < (fields - 3); z++) { if ( !strcmp(s_row[z], "0" ) || !strcmp(s_row[z], "" ) ){ continue; } add_assoc_string(field_array,fieldinfo[z].name , s_row[z], 1); } for (z = (fields - 3); z < fields; z++) { add_assoc_string(text_value_array,fieldinfo[z].name , s_row[z], 1); } if (y == 1){ zend_hash_add(Z_ARRVAL_P(field_array), "options" , strlen("options")+1 , &options_array, sizeof(zval *), NULL); } add_next_index_string(fieldlist_array, pkeyP , 1); zend_hash_add(Z_ARRVAL_P(text_array),pkeyP , strlen(pkeyP)+1 , &text_value_array, sizeof(zval *), NULL); zend_hash_add(Z_ARRVAL_P(return_value),pkeyP , strlen(pkeyP)+1 , &field_array, sizeof(zval *), NULL); } } mysql_free_result(s_mysql_res); mysql_close(&s_mysql); zend_hash_add(Z_ARRVAL_P(return_value),"text" , strlen("text")+1 , &text_array, sizeof(zval *), NULL); zend_hash_add(Z_ARRVAL_P(return_value),"fieldlist" , strlen("fieldlist")+1 , &fieldlist_array, sizeof(zval *), NULL); add_assoc_string(return_value, "select", "", 1); add_assoc_string(return_value, "update_x", "", 1); add_assoc_string(return_value, "update_y", "", 1); } xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -- Thanks Johannes G. Arlt [EMAIL PROTECTED] -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php