"We are back" « oc.at

probs bei php / mysql abfrage

voyager 13.07.2006 - 11:53 1193 10
Posts

voyager

kühler versilberer :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
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 )
Code: PHP
<?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
Avatar
Registered: Mar 2006
Location: 2482
Posts: 708
Zitat von voyager
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:

Code: PHP
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...

Zitat

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 ;) und implode wird dir helfen
wobei die frage ist, ob c&p die ideale lösung ist

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
arrays anyone? :D ;)

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
Avatar
Registered: Aug 2005
Location: vienna/ooe
Posts: 206
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 :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
Zitat von malu
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
Avatar
Registered: Mar 2006
Location: 2482
Posts: 708
Zitat von voyager
hättest du da nen lösungsvorschlag zufällig für mich ?

das _ist_ ein lösungsvorschlag ;)
such einfach in der php-doku nach fwrite/fopen, dort findest du auch entspr. beispiele

http://at.php.net/

malu

Big d00d
Avatar
Registered: Aug 2005
Location: vienna/ooe
Posts: 206
könntest es nach dem schema machen:

Code: PHP
$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 :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
ok, thx

voyager

kühler versilberer :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
hab zwar die meisten fehler "entsorgt" nur jetzt übergibt er die variable nicht mehr in die Query rein :(

habs getestet nur drinnen kommt keine variable an, register_globals ist off

Code: PHP
<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
Avatar
Registered: Aug 2005
Location: vienna/ooe
Posts: 206
währ intressant was danach noch kommt?

da fehlt dir jetzt auf jeden fall noch:
Code: PHP
$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
Code: PHP
settype($array,"array"); 
noch nie gesehen ... wozu is das gut?
wenn du ein array erstellen willst würd ich das einfach so machen:
Code: PHP
$array=array();


mlu

Luzandro

Here to stay
Avatar
Registered: Mar 2006
Location: 2482
Posts: 708
Zitat von voyager
register_globals ist off

das ist eine sehr gute idee, allerdings darfst du dich dann nicht wundern, dass variablen nicht aus dem nichts auftauchen =>
Code: PHP
$sub = $_POST['sub'];
wobei hier noch das "säubern" der eingabe fehlt, stichwort sql-injection
http://de.wikipedia.org/wiki/SQL-Injection
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz