to znowu ja Wasz niepoprawny/niereformowalny phpamator (jak widać)
Napotkałem problem z którym nie potrafię sobie poradzić, może ktoś z was mógłby mnie oświecić.
Otóż pisząc mój kod który teoretycznie powinien działać (kod poniżej)
// sprawdzam czy są jakieś elementy zaznaczone, jeśli tak to lista "id" jest wysyłana do php - i to działa, dane są wysyłane // lub jeśli nie zaznaczone wysyła tylko sygnał i wszystkie dane są wyrzucane do csv ale ... $('#csvexport').on('click',function(){ var selected = new Array(); $('table input[type="checkbox"]:checked').each(function() { selected.push($(this).attr('id')); }); if (selected.length > 0) { selected = selected ; } else { selected = null ; } event.preventDefault(); $.ajax({ type: "POST", url: "functions.php", data: { 'action': 'csvexport', 'userId': 1, 'selected': selected }, // dataType: "json", // encode: true, }).success( function ( response ) { if( response == 1 ) { alert ( 'CSV Exported' ) ; // alert ( 'Export failed!' ) ; spinner() ; } spinner() ; }); });
// .... ale mimo to nie dostaję nic spowrotem. spodziewam się że wyskoczy okienko i poprosi o wskazanie miejsca gdzie zapisać // mój CSV { if ( $_POST['selected'] == false ) { $data = null ; } else { $data = $_POST['selected'] ; } $userId = $_POST[ 'userId' ] ; exportCsv( $userId, $data ) ; funkcja powinna zwrócić dane/plik } // pobieram dane do wygenerowania CSV function getCsvData( $data ) { $link = getConfig() ; { $clientData = $link->prepare("SELECT * FROM `mydb`.`mytable` WHERE `id` IN (".implode(',',$data).") ") ; } else { $clientData = $link->prepare("SELECT * FROM `mydb`.`mytable` ") ; } $clientData->execute() ; $result = $clientData->get_result() ; $assoc = $result->fetch_All(MYSQLI_ASSOC) ; return $assoc ; } // tworzę plik CSV function exportCsv ( $userId, $data ) { $clients = getCsvData($data) ; foreach ( $clients as $client ) { fputcsv( $output, $client ) ; } }
wrzuciłem to do osobnego pliku i działa bez problemu
Co źle zrobiłem ?