probs bei php / mysql abfrage
voyager 13.07.2006 - 11:53 1193 10
voyager
kühler versilberer :)
|
ich hab 2 probs : bei der abfrage sind immer fehler drin, weis net ganz woher. Die MySQL Query im Code geht sicher, macht auf der Console kein Probleme sondern nur im PHP, vielleicht weis jemand wo der wurm im php code drin ist 2. ist es möglich, das result als text auszugeben, und zwar nicht als tabelle wie im code sondern einfach nur mit kommas dazwischen ( zum C&P export als csv ) <?php
include("dbconnect.php");
?>
<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Neue Seite 1</title>
</head>
<body>
<form method="POST" action="search.php">
<br>
<br>
</p>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="AutoNumber1">
<tr>
<td width="15%">SUB 1:</td>
<td width="85%"><input type="text" name="sub1" size="20"></td>
</tr>
<tr>
<td width="15%"> </td>
<td width="85%"><input type="submit" value="Suche" name="suche"></td>
</tr>
</table>
<p> </p>
</form>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber2">
<?php
settype($array,"array");
$abfrage = "SELECT si_pvt_dp. * FROM si_pvt_dp
LEFT JOIN data_property ON si_pvt_dp.sp_fk_den = data_property.d_nr
WHERE ( data_property.d_fk_substance = '$sub1' AND si_pvt_dp.sp_x =1 )
OR ( data_property.d_fk_substance2 = '$sub1' AND si_pvt_dp.sp_x = 0 )
ORDER BY si_pvt_dp.sp_fk_den, sp_sort" or die(mysql_error());
$query = mysql_query($abfrage,$verbindung) or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
array_unshift($array,$row['sp_sort']);
}
$start = count($array);
for($start;$start>=0;$start--) {
$abfrage = "select * from si_pvt_dp where sp_sort='$array[$start]'" or die(mysql_error());
$query = mysql_query($abfrage,$verbindung) or die(mysql_error());
while ($row = mysql_fetch_object($query))
{
$a = "$row->sp_fk_den";
$b = "$row->sp_sort";
$c = "$row->sp_t";
$d = "$row->sp_t_var";
$e = "$row->sp_x";
$f = "$row->sp_x_var";
$g = "$row->sp_p";
$h = "$row->sp_p_var";
$i = "$row->sp_rho";
$j = "$row->sp_rho_var";
$k = "$row->sp_z";
$l = "$row->sp_z_var";
$m = "$row->sp_type";
$n = "$row->sp_weight";
}
?>
<tr>
<td width="1%"></td>
<td width="5%"><?php echo $a; ?></td>
<td width="4%"><?php echo $b; ?></td>
<td width="5%"><?php echo $c; ?></td>
<td width="5%"><?php echo $d; ?></td>
<td width="5%"><?php echo $e; ?></td>
<td width="5%"><?php echo $f; ?></td>
<td width="5%"><?php echo $g; ?></td>
<td width="5%"><?php echo $h; ?></td>
<td width="10%"><?php echo $i; ?></td>
<td width="10%"><?php echo $j; ?></td>
<td width="10%"><?php echo $k; ?></td>
<td width="10%"><?php echo $l; ?></td>
<td width="10%"><?php echo $m; ?></td>
<td width="10%"><?php echo $n; ?></td>
</tr>
<?php
unset($a);
unset($b);
unset($c);
unset($d);
unset($e);
unset($f);
unset($g);
unset($h);
unset($i);
unset($j);
unset($k);
unset($l);
unset($m);
unset($n);
}
?>
</body>
</html>
|
Luzandro
Here to stay
|
ich hab 2 probs : bei der abfrage sind immer fehler drin, weis net ganz woher. Die MySQL Query im Code geht sicher, macht auf der Console kein Probleme sondern nur im PHP, vielleicht weis jemand wo der wurm im php code drin ist dann überleg dir mal nochmal, was du da tust: while ($row = mysql_fetch_object($query))
{
$a = "$row->sp_fk_den";
$b = "$row->sp_sort";
$c = "$row->sp_t";
$d = "$row->sp_t_var";
$e = "$row->sp_x";
$f = "$row->sp_x_var";
$g = "$row->sp_p";
$h = "$row->sp_p_var";
$i = "$row->sp_rho";
$j = "$row->sp_rho_var";
$k = "$row->sp_z";
$l = "$row->sp_z_var";
$m = "$row->sp_type";
$n = "$row->sp_weight";
}
du gehst alle datensätze durch und überschreibst dauernd die gleichen variablen - dann hast du eine zweite schleife wo du diese variablen verwendest, die dann eben immer nur den letzten wert haben... 2. ist es möglich, das result als text auszugeben, und zwar nicht als tabelle wie im code sondern einfach nur mit kommas dazwischen ( zum C&P export als csv )
klar - lösch einfach das ganze html-zeugs raus ![;)](/images/smilies/wink.gif) und implode wird dir helfen wobei die frage ist, ob c&p die ideale lösung ist
|
mat
AdministratorLegends never die
|
arrays anyone? ![;)](/images/smilies/wink.gif) edit: ein table ist hier schon angebracht, aber benutz bitte ein padding beim td, die % führen dich in teufels küche.
|
malu
Big d00d
|
du kannst die daten ja auch direkt in eine csv file schreiben. (fopen,fwrite,fputs,etc...) und auf diese kannst dann in der html file verlinken (zum download)
mlu
|
voyager
kühler versilberer :)
|
du kannst die daten ja auch direkt in eine csv file schreiben. (fopen,fwrite,fputs,etc...) und auf diese kannst dann in der html file verlinken (zum download)
mlu hättest du da nen lösungsvorschlag zufällig für mich ? bzw. weis einer wie es besser gehen könnte bezüglich der anzeige, hab des ganze von nem alten script von mir übernommen, da hats noch funktioniert, waren allerdings auch weniger spalten
|
Luzandro
Here to stay
|
hättest du da nen lösungsvorschlag zufällig für mich ? das _ist_ ein lösungsvorschlag ![;)](/images/smilies/wink.gif) such einfach in der php-doku nach fwrite/fopen, dort findest du auch entspr. beispiele http://at.php.net/
|
malu
Big d00d
|
könntest es nach dem schema machen: $fwp=fopen("asdf.csv","w"); //Öffnet filehandle
$string=""; //Hier werden anschließend die substrings angehängt
//SQL ABFAGE
while($row=mysql_fetch_array($result)) //Holt einen Eintag nach dem Anderen aus der Tabelle
{
$substring=implode(",",$row); //Baut die Einträge zu einem String zusammen mit Beistrich getrennt
$string.=$substring."\n"; //Hängt die Substrings zusammen mit NewLine
}
fputs($fwp,$string);
fclose($fwp);
So erhälst du eine File asdf.csv in der die Werte mit Beistrich getrennt drinnenstehen. Auf diese kannst du dann einfach in deinem HTML Code, zum Downloaden, verlinken. Hab den Code jetzt einfach so ausm Handgelenk heraus geschrieben. Wird so wahrscheinlich nicht fix funktionieren. Musst ev noch die Syntax checken. Aber im Prinzip fürfts so funktionieren. hth, malu
|
voyager
kühler versilberer :)
|
ok, thx
|
voyager
kühler versilberer :)
|
hab zwar die meisten fehler "entsorgt" nur jetzt übergibt er die variable nicht mehr in die Query rein ![:(](/images/smilies/frown.gif) habs getestet nur drinnen kommt keine variable an, register_globals ist off <body>
<form method="POST" action="search2.php">
<br>
<br>
</p>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="AutoNumber1">
<tr>
<td width="15%">SUB 1:</td>
<td width="85%"><input type="text" name="sub" size="20"></td>
</tr>
<tr>
<td width="15%"> </td>
<td width="85%"><input type="submit" value="Suche" name="suche"></td>
</tr>
</table>
<p> </p>
</form>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" id="AutoNumber2">
<?php
error_reporting(E_ALL);
settype($array,"array");
$abfrage = "SELECT si_pvt_dp. * FROM si_pvt_dp
LEFT JOIN data_property ON si_pvt_dp.sp_fk_den = data_property.d_nr
WHERE ( data_property.d_fk_substance = '$sub' AND si_pvt_dp.sp_x =1 )
OR ( data_property.d_fk_substance2 = '$sub' AND si_pvt_dp.sp_x = 0 )
ORDER BY si_pvt_dp.sp_fk_den, sp_sort";
.....
|
malu
Big d00d
|
währ intressant was danach noch kommt? da fehlt dir jetzt auf jeden fall noch: $result=mysql_fetch_array($abfrage);
und dann gehts mit dem code den ich dir oben gepostet hab weiter! also... while.... usw... wenns dann noch nicht geht, würd ich mal stark auf deine SQL abfrage tippen. würd da z.b. Die variablen anstatt so: ...ce = '$sub' AND.... So einbinden: ...ce = '".$sub."' AND.... aja und nochwas... hab das settype($array,"array");
noch nie gesehen ... wozu is das gut? wenn du ein array erstellen willst würd ich das einfach so machen: $array=array();
mlu
|
Luzandro
Here to stay
|
register_globals ist off das ist eine sehr gute idee, allerdings darfst du dich dann nicht wundern, dass variablen nicht aus dem nichts auftauchen => $sub = $_POST['sub'];
wobei hier noch das "säubern" der eingabe fehlt, stichwort sql-injection http://de.wikipedia.org/wiki/SQL-Injection
|