Veröffentlicht 27. März 200619 j ich hab ein "formular" (index.php) in das ich ne function schreiben will und diese auch im selben "formular" nach dem motto; if(button geklick){führe function aus} auführen möchte. die function gibt meine aktuelle tabelle als .csv in excel aus. wär cool wenn mir einer bei der syntax weiterhelfen kann:)
27. März 200619 j Wo genau klemmts denn? Beim verbinden der Funktion mit einem Link? oder bei der Ausgabe?
27. März 200619 j <?php if ($_GET["action"]=="print") { header("Content-Type: text/csv"); header("Content-Disposition: attachment; filename: Tabelle.csv;"); read("tabelle.csv"); // Oder wie auch immer du die Tabelle ausgibst } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>mein Dokument</title> ... <a href="<?php echo $_SERVER["php_self"]; ?>?action=print"> Tabelle</a> ... </html> <?php } ?> [/php]
28. März 200619 j <?php [COLOR="Red"]<--bösefalle[/COLOR] if ($_GET["action"]=="print") { header("Content-Type: text/csv"); header("Content-Disposition: attachment; filename: Tabelle.csv;"); read("tabelle.csv"); // Oder wie auch immer du die Tabelle ausgibst } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>mein Dokument</title> ... <a href="<?php echo $_SERVER["php_self"]; ?>?action=print"> Tabelle</a> ... </html> <?php } ?> [/php] Durch den Absatz nach dem <?php wird der header- Befehl nen Fehlerausgeben. Der kann nicht gesendet werden, wenn der Header bereits wegen dem Leerzeichen, Absatz oder html, gesendet wurde.
28. März 200619 j das problem ist folgendes: in meiner index.php gibt es die variable $query="SELECT * FROM ma_au WHERE ". $query_where; dessen wert ich irgendwie an meine excel.php übergeben muss, um die aktuelle tabelle mit rücksicht auf die suchfunktionen auszugeben. (es soll nicht die ganze tabelle als .csv ausgegeben werden, sondern nur die nach der suche) sollte jemand zeit und lust haben sich meine beiden codes anzusehen werd ich sie gerne posten:)
28. März 200619 j INDEX: session_start(); include("config.inc.php"); ?> <html> <head><title>index</title></head> <body> <font face="VERDANA,ARIAL,HELVETICA" size="1"> <? include("header1.php"); $db=mysql_connect($db_host,$db_user,$db_pw); mysql_select_db($db_name); $i=0; // usertabelle abfragen $result=mysql_query("SELECT * FROM users_tab WHERE id_user ='".$_SESSION['user']."'"); echo mysql_error(); $line=mysql_fetch_assoc($result); // print_r($line); if($line['password_user']!=$_SESSION['pw'] or $_SESSION['pw']==""){ // kein gueltiger user, also login anzeigen $output=implode(file("login.php"),""); echo $output; } elseif($line['user_type_user'] == 6){ ?><center>Sie haben nicht die erforderlichen Rechte!</center><? } else{ $typ=$line['user_type_user']; ?><FORM NAME="aceButton"><INPUT TYPE="BUTTON" VALUE="Logout" onClick="self.location.href=('logout.php')"></FORM><? if($typ==5) { ?><FORM NAME="aceButton"><INPUT TYPE="BUTTON" VALUE="Useradministration" onClick="self.location.href=('admin.php')"><? } if($typ==2 or $typ==4 or $typ==5 ){ ?><INPUT TYPE="BUTTON" VALUE="Neuer Datensatz" onClick="self.location.href=('add.php')"><? } if($typ==3 or $typ==4 or $typ==5){ ?><INPUT TYPE="BUTTON" VALUE="Exceltabelle anlegen" onClick="self.location.href=('excel.php')"><br> <? } $ende=14; ?><br><? ?><INPUT TYPE="BUTTON" VALUE="Suche zurücksetzen" onClick="self.location.href=('index.php')"></FORM><? //dropdown zusammenbasteln for($i=0;$i<$ende;$i++){ $dropdown.="<option value='".$auswahl[$i]['intern']."'>".$auswahl[$i]['anzeige']."</option>"; } $dropdown.=" </select>"; ?><form action="index.php" method="POST"><? // Auswahlmenu $i=0; while($_POST["suche".$i]!=""){ echo "<select name='auswahl".$i."' value='".$_POST["auswahl".$i]."'>"; $dropdown_new=str_replace("value='".$_POST["auswahl".$i]."'","value='".$_POST["auswahl".$i]."' selected",$dropdown); echo $dropdown_new; echo "<input type='text' name='suche".$i."' value='".$_POST["suche".$i]."'><br>"; $i++; } // es soll imemr ein leeres suchfeld geben echo "<select name='auswahl".$i."'>"; echo $dropdown; echo "<input type='text' name='suche".$i."' >"; echo "<input type='submit'><br>"; echo"</form>"; ?> <? $query = "SELECT * FROM ma_au"; $res = mysql_query($query); $num = mysql_num_rows($res); $farbe1 = "#F5F5F5"; $farbe2 = "#FAFAFA"; for($i = 0; $i < $num; $i++) { ?><table border="1" frame="box" cellspacing="2" cellpadding="2" rules="all"> <tr> <? } ?> <? if($typ == 2 or $typ == 4 or $typ == 5){$tabellenkopf="<td bgcolor='#F7F7F7' align='center'></td>";} else {$tabellenkopf="<td bgcolor='#F5F5F5' align='center'></td>";} for($i=0;$i<$ende;$i++){ //farbauswahl in der kopfzeile if ($i<14) { $tabellenkopf.= "<td bgcolor='#FBE604'>";} elseif($i>=14 and $i< 16) { $tabellenkopf.= "<td bgcolor='#3CC31A'>";} elseif($i>=16 and $i< 22) { $tabellenkopf.= "<td bgcolor='#1C708D'>";} elseif($i>=22 and $i< 28) { $tabellenkopf.= "<td bgcolor='#731C8D'>";} elseif($i>=28 and $i< 30) { $tabellenkopf.= "<td bgcolor='#6D8D1C'>";} elseif($i>=30) { $tabellenkopf.= "<td bgcolor='#6D1D1C'>";} else{$tabellenkopf.= "<td>";}; $tabellenkopf.= $auswahl[$i]['anzeige']; $tabellenkopf.= "</td>"; } //suchquery zusammenbasteln $i=0; while($_POST["suche".$i]!=""){ if($i==0) { $query_where=mysql_escape_string($_POST["auswahl".$i])." like '%".mysql_escape_string($_POST["suche".$i])."%'"; }else{ $query_where.=" AND ".mysql_escape_string($_POST["auswahl".$i])." like '%".mysql_escape_string($_POST["suche".$i])."%'"; } $i++; } if($i==0){ $query="SELECT * FROM ma_au where 1"; }else{ $query="SELECT * FROM ma_au WHERE ". $query_where; } //ausgabe query $result=mysql_query($query); echo mysql_error(); if(mysql_num_rows($result)==0){ echo" kein Datensatz gefunden"; }else{ echo $tabellenkopf; for($i=0;$i<mysql_num_rows($result);$i++){ $line=mysql_fetch_assoc($result); //print_r($line); $tabelleninhalt.="<tr>"; $tabelleninhalt.="<td bgcolor='#F7F7F7'><a href='detail.php?ma_nr=".$line[$auswahl[0]['intern']]."'> <img src='./images/detail.gif' border='0'</a>"; if($typ == 2 or $typ == 4 or $typ == 5){ $tabelleninhalt.="<a href='del.php?ma_nr=".$line[$auswahl[0]['intern']]."'> <img src='./images/del.png' border='0'</a>"; $tabelleninhalt.="<a href='edit.php?ma_nr=".$line[$auswahl[0]['intern']]."'><img src='./images/edit.png' border='0'</a></td>"; } $tabelleninhalt.="<td ma_nr=".$line[$auswahl[0]['intern']]."'>".$line[$auswahl[0]['intern']]."</a></td>"; for($j=1;$j<$ende;$j++) { // datumsüberprüfung ob datum 0000-00-00 if($j==8 or $j==9 or $j==10 or $j==11) { if($line[$auswahl[$j]['intern']]=="0000-00-00") { $tabelleninhalt.="<td> </td>"; }else{ //$tabelleninhalt.="<td>".$line[$auswahl[$j]['intern']]."</td>"; $tabelleninhalt.="<td>".date("d.m.Y",strtotime($line[$auswahl[$j]['intern']]))."</td>"; } }else{ $tabelleninhalt.="<td>".$line[$auswahl[$j]['intern']]."</td>"; } } $tabelleninhalt.="</tr>"; } echo $tabelleninhalt."<table>"; } } ?> </font> </body> </html>[/PHP] EXCEL: [PHP]<? ob_start(); session_start(); include ("config.inc.php"); include ("index.php"); $head=''; $excel=FOPEN("excel.csv", "w"); for($i=0;$i<35;$i++) { $head = $head.$auswahl[$i][anzeige].';'; } FWRITE($excel, $head."\n"); $result=mysql_query($query); for($j=0;$j<mysql_num_rows($result);$j++) { $line=mysql_fetch_assoc($result); $data = ''; for($i=0;$i<35;$i++) { $data = $data.$line[$auswahl[$i][anzeige]].';'; } FWRITE($excel, $data."\n"); } FCLOSE($excel); header("Location: excel.csv"); ob_end_flush(); ?> Wie man erkennen gibt es von der index nur einen link zur excel.php..
28. März 200619 j Durch den Absatz nach dem <?php wird der header- Befehl nen Fehlerausgeben. Ich kenn es umgekehrt... ein Absatz bzw. HTML-Code vor dem <?php bewirkt eine Ausgabe. Da <?php aber ganz am Anfang vom Dokument steht, und Leerzeilen innerhalb des php-Abschnittes php nicht zu einer Ausgabe animieren, gibt es mit meinem Code oben keinen Fehler.
28. März 200619 j diesen $query_where=mysql_escape_string($_POST["auswahl".$i])." like '%".mysql_escape_string($_POST["suche".$i])."%'"; [/PHP] suchbefehl aus der index.php möchte ich an excel übergeben... ...nur wie?
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.