Archiv verlassen und diese Seite im Standarddesign anzeigen : zeilenumbruch und echo problem
DarkAngel52457 16-12-2005, 20:47 Hallo ich habe da ein kleines problem aber da ich noch ein echter anfäger in sachen php bin, verzweifel ich dran hier mal das script
$ip = get_ip();
if($ip == "1.1.1.1") {
$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("ERROR");
$selectDB = @mysql_select_db($dbName) or die("ERROR");
$what1=$_GET["what"];
$what = str_replace("|", "%", $what1);
$query=mysql_query("SELECT * FROM db WHERE what LIKE '$what' ORDER BY time DESC LIMIT 0,3") OR die(mysql_error());
while($get=mysql_fetch_array($query)){
unset($time, $what, $status, $high, $low, $why);
$time=$get[time];
$what=$get[what];
$status=$get[status];
$high=$get[high];
$low=$get[low];
$why=$get[why];
if(!$time) {
echo "-1"; break;
} else {
echo "$what $time $status $high $low $why\n";
}
}
}
also soweit geht es ja bekomme die ausgabe also das erste problem ist halt das wenn nichts gefunden wir mir nicht "-1" angezeigt wird und mein 2tes problem ist das ich ich mir ja 3 zeilen ausgeben lasse was gut geht aber das ich nach der letzten zeile noch eine leerzeile bekomme.
Kann man das irgendwie ändern mit der leerzeile
Danke
DarkAngel52457 16-12-2005, 23:58 also habe mich jetzt nochmal etwas genauer hier im forum umgesehen und muss sagen respeckt echt sehr informative und hat mir auch geholfen einen fehler schonmal zu beseitigen und zwar mit der ausgabe von "-1"
$query=mysql_query("SELECT * FROM db WHERE what LIKE '$what' ORDER BY time DESC LIMIT 0,3") OR die(mysql_error());
$get_count=mysql_num_rows($query);
if($get_count == 0){
echo "-1";
}else{
while($get=mysql_fetch_array($query)){
unset($time, $what, $status, $high, $low, $why);
$time=$get[time];
$what=$get[what];
$status=$get[status];
$high=$get[high];
$low=$get[low];
$why=$get[why];
echo "$what $time $status $high $low $why\n";
}
}
}
aber das problem mit dem letzten zeilenumbruch besteht weiterhin wäre dankbar wenn mir da einer helfen könnte oder mir sagen kann wie ich es am besten lösen kann
1. warum tust du das?unset($time, $what, $status, $high, $low, $why);
$time=$get[time];
$what=$get[what];
$status=$get[status];
$high=$get[high];
$low=$get[low];
$why=$get[why];
du kannst $get[why] (besser $get['why']) auch direkt verwenden und sparst die variablenkopiererei
2. beschäftige dich mit stringverkettung und arrays:while($get=mysql_fetch_array($query)){
$out[] = $get['what'];
}
echo implode("\n", $out); die verkettung findest du selber ;)
DarkAngel52457 17-12-2005, 06:44 $query=mysql_query("SELECT * FROM db WHERE what LIKE '$what' ORDER BY time DESC LIMIT 0,3") OR die(mysql_error());
$get_count=mysql_num_rows($query);
if($get_count == 0){
echo "-1";
}else{
while($get=mysql_fetch_array($query)){
$out[] = $get['what'];
}
echo implode("\n", $out);
}
}
hi ich habe es nun so aber mit dieser sache stringverkettung das verstehe ich leider irgendwie nicht und weiß nicht wie ich damit umgehensoll oder wo es überhaupt hin soll hatte zwar hinbekommen das er mir die daten alle ausgibt aber nicht wie es sollte denn es wurde mir nicht
"diesunddas 1134331714 on 2 1 darum" wieder gegen sondern
"diesunddas
1134331714
on
2
1
darum"
alles untereinander was ja nicht richtig ist hoffe es könnte mir jemand behilflich sein dabei
Der erste Parameter für Implode ist das Trennzeichen, wenn du das Script an der Console ausführst steht alles untereinander ( \n ) wenn du das nicht willst tausche es einfach gegen --> " " <--
DarkAngel52457 18-12-2005, 01:54 hi erstmal danke für eure hilfe also habe es nun so
$ip = get_ip();
if($ip == "1.1.1.1") {
$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("ERROR");
$selectDB = @mysql_select_db($dbName) or die("ERROR");
$what1=$_GET["what"];
$what = str_replace("|", "%", $what1);
$query=mysql_query("SELECT * FROM db WHERE what LIKE '$what' ORDER BY time DESC LIMIT 0,3") OR die(mysql_error());
while($get=mysql_fetch_array($query)){
$out[] = $get['what'];
$out[] = $get['time'];
$out[] = $get['status'];
$out[] = $get['high'];
$out[] = $get['low'];
$out[] = $get['why'];
}
echo implode("\n", $out);
}
}
was mir die daten ja untereinander screibt und wenn ich es mit
echo implode(" ", $out); schreibe kommen die daten zwar nebeneinander aber halt alle aber ich würde es gerne haben das ich wnn ich dann im quell test gucke es so steht
diesunddas1 1134331714 on 2 1 darum
diesunddas2 1134331714 on 2 1 darum
diesunddas3 1134331714 on 2 1 darum
also das was zusammen gehört in einer zeile und dann eine neue zeile und zum schluss keinen zeilen umbruch mehr der leer ist
hoffe ich drücke mich richtig aus.
danke
while($get=mysql_fetch_array($query))
{
$out = array();
$out[] = $get['what'];
$out[] = $get['time'];
$out[] = $get['status'];
$out[] = $get['high'];
$out[] = $get['low'];
$out[] = $get['why'];
echo implode(" ", $out) . "\n";
}
Sowas?
Original geschrieben von hhcm
Sowas? bissi lang, oder?
while($get=mysql_fetch_array($query))
{
$out[] = implode(" ", $get);
}
echo implode("\n", $out); ^^ reicht doch, wenn er explizit die spalten ausliest, die er anzeigen will
ansonsten ansonsten würd ich es eher so machen:
while($get=mysql_fetch_array($query))
{
$out[] = $get['what'].' '.$get['time'].' '.$get['status'].' '.etc,pp;
}
echo implode("\n", $out);
Besser lang als für ihn unverständlich... :p
DarkAngel52457 18-12-2005, 20:05 super danke euch hat nun wunderbar geklappt
|
-
- |