Tabellen ausgabe in ein File schreiben

PHPProgi

Mitglied
Hallo zusammen

ich habe eine Tabelle die mit "do while" Daten ausgibt.
In der ersten Spalte habe ich eine Checkbox die danach in jeder Zeile vorhanden ist :)

Ich möchte nun ein CSV (Semikolon getrennt) mit den Zeilen erstellen die ausgewählt werden.

Hat jemand eine Idee wie dies zu machen ist.
Besten Dank
Gruss
 
Hallo zusammen

einerseits hole ich die Daten über:
PHP:
				echo '<option value=""></option>';
			do
			{
			  echo '<option value="'.$row_comp['comp_no'].'">'.$row_comp['comp_no'].'</option>';
			}
			while( $row_comp = mssql_fetch_assoc($comp) );
			$rows = mssql_num_rows($comp);
			if( $rows > 0 )
			{
			  mssql_data_seek($comp, 0);
			  $row_comp = mssql_fetch_assoc($comp);
			}

und liefere den Wert über document.comp.submit() an den DB Select zurück (Die Frage wurde im Thema http://www.tutorials.de/forum/php/305114-aus-select-eine-variabel-fuellen.html schon beantwortet. Die Seite wird neu geladen und erstellt folgende Tabelle.

PHP:
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><input type="checkbox" name="checkbox" id="checkbox"></td>
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><?php echo $row_docs['comp_no']; ?></td>
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><?php echo $row_docs['supplier_name']; ?></td>
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><?php echo $row_docs['supplier_num']; ?></td>
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><?php echo $row_docs['invoice_sum']; ?></td>
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><?php echo $row_docs['invoice_currency']; ?></td>
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><?php echo $row_docs['last_acceptor']; ?></td>
<td bgcolor="<?php echo $bg; ?>" class="tabtext"><?php echo $row_docs['voucher_num']; ?></td>

Nun möchte ich diverse Zeilen mittels Checkbox markieren und danach z.B. via Button an ein CSV ; getrennt übergeben (schön währe halt PDF, aber wie ich weiss muss man dies Lizenzieren)

Ich hoffe die Infos helfen.
Besten Dank für die Hilfestellung.
Gruss
 
Also, ich vermute mal, dass der untere Codeblock in einer Schleife ausgegeben wird.
Du solltest der Checkbox einen Namen geben, in etwa so:
Code:
<input type="checkbox" name="csv[]" value="<?= $row_docs['comp_no'] ?>" />

Nach dem Submit musst Du dann nur noch anhand der ID's die Datensätze aus der DB holen und diese exportieren.
In etwa so:
PHP:
if( isset($_POST['csv']) && is_array($_POST['csv']) && sizeof($_POST['csv']) > 0 )
{
	$strSql = "SELECT * FROM tabelle WHERE comp_no IN('". implode("', '", $_POST['csv']) ."')";
	$intResult = mysql_query($strSql) or die(mysql_error());
	$arrRows = array();
	
	$rscCsv = fopen('file.csv', 'w');
	while( $intResult && $arrRow = mysql_fetch_assoc($intResult) )
	{
		fputcsv($rscCsv, $arrRow);
	}
	fclose($rscCsv);
}
 
Hallo chainy

Besten Dank für den Input.
Ja die Tabelle wird auch über eine Schleife ausgelesen.

Noch eine kleine Frage was ich noch nicht ganz durchblicke:

Dein Code verseteh ich vom Aufbau. Aber wie platziere ich den untern wo ich auch das File generiere in einen Button rein? Geht dies überhaupt mit einem Button?

PHP:
<form name="form1" method="post">
        <input type="submit" name="button" id="button" value="CSV erstellen">
        <?php
 if( isset($_POST['csv']) && is_array($_POST['csv']) && sizeof($_POST['csv']) > 0 ) 
{ 
    $strSql = "SELECT * FROM tabelle WHERE comp_no IN('". implode("', '", $_POST['csv']) ."')"; 
    $intResult = mysql_query($strSql) or die(mysql_error()); 
    $arrRows = array(); 
     
    $rscCsv = fopen('file.csv', 'w'); 
    while( $intResult && $arrRow = mysql_fetch_assoc($intResult) ) 
    { 
        fputcsv($rscCsv, $arrRow); 
    } 
    fclose($rscCsv); 
}  

 ?>
 </form>

Sorry bin halt noch nicht so weit im PHP.
Besten Dank nochmals für die weiter Hilfestellung.

Gruss
 
Dein Frage hat jetzt wenig was mit PHP zutun, hast du das Client-Server-Prinzip verstanden?

Die Tabelle, die dir angezeigt wird, ist das Ergebnis deines Scriptes auf dem Server. Die ganzen Aktionen, die der Benutzer jetzt ausführen kann, z.B. die Checkbox bei einigen Einträgen setzen und das ganze Abschicken, passiert alles auf der Benutzerseite. Durch das Absenden der Daten, in diesem Fall über einen Submit-Button, wird ein Request an den Server gesendet und dieser muss vom Server verarbeitet werden. Usw.. http://de.wikipedia.org/wiki/Client-Server-Prinzip oder http://www.gidf.de ;-)
 
Hallo

Das C-S-Prinzip habe ich begriffen, aber wie ich nun deine Beispiel anwenden kann leuchtet noch nicht ein....

Sorry ich bin der letzte der Faulheit raushängt aber mit dieser Funktion will es nicht klappen.

kann ich dies evt. mit einem Link und
PHP:
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=csv
machen?

Ich bin am verzweifeln... Ich bitte um Hilfe
 
Du hast ein Form-Tag, darin hast Du eine Tabelle mit Datensätzen aufgelistet. Jeder Datensatz verfügt über eine Checkbox, ist diese angehagt, soll der Datensatz im CSV-Export berücksichtigt werden. Am Ende der Tabelle hast Du ein Submit-Button. Dieser löst die Aktion aus! Nach dem Klick auf den Submit-Button, musst Du auf seitens des Servers dafür sorgen, dass die Daten auch in einer CSV-Datei landen. Dafür hast Du jetzt in deinem $_POST - Array den Eintrag "csv" - dieser ist nur dann vorhanden, wenn der Benutzer auf den Submit-Button geklickt hat! Ist das jetzt besser rüber gekommen?
 
Zurück