bBU.CyTrobIc
#include "billrulz.h"
|
Folgender Codeschnipsel gibt mir nur die Werte zurück die direkt unter "while($rowa = mysql_fetch_array($r_sql_text)){" gefunden werden, die darunter verschachtelten werden nicht gefunden. Aber ich weiss nicht warum,... und pls nicht über den stil meckern, wers besser kann kann gern einen neuen vorschlag posten $z = 0;
$a_new = array();
$r_sql_text = mysql_db_query($datenbk, $sql_text);
while($rowa = mysql_fetch_array($r_sql_text)){
if($rowa[titel] != ""){
$array = array('titel' => $rowa[titel], 'url' => $rowa[url], 'text' => $rowa[text], 'seit' => $rowa[seit], 'webmaster' => $rowa[benutzer], 'pos' => 3);
array_push($a_new, $array);
echo "3 ";
$z++;
} else {
$r_sql_such = mysql_db_query($datenbk, $sql_such);
while($rowb = mysql_fetch_array($r_sql_such)){
if($rowb[titel] != ""){
$array = array('titel' => $rowb[titel], 'url' => $rowb[url], 'text' => $rowb[text], 'seit' => $rowb[seit], 'webmaster' => $rowb[benutzer], 'pos' => 2);
array_push($a_new, $array);
echo "2 ";
$z++;
} else {
$r_sql_titel = mysql_db_query($datenbk, $sql_titel);
while($rowc = mysql_fetch_array($r_sql_titel)){
if($rowc[titel] != ""){
$array = array('titel' => $rowc[titel], 'url' => $rowc[url], 'text' => $rowc[text], 'seit' => $rowc[seit], 'webmaster' => $rowc[benutzer], 'pos' => 1);
array_push($a_new, $array);
echo "1 ";
$z++;
}
}
}
}
}
}
$z--;
for($i = 0; $i <= $z; $i++){
echo("<br>\n");
echo("<table width=\"800\" border=\"0\" cellspacing=\"1\" cellpadding=\"3\" bgcolor=\"#000000\">\n");
echo(" <tr bgcolor=\"#EEEEEE\"> \n");
echo(" <td colspan=\"3\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><a href=\"".$a_new[$i]['url']."\" target=\"_blank\">".$a_new[$i]['titel']."</a></font></td>\n");
echo(" </tr>\n");
echo(" <tr bgcolor=\"#DDDDEE\"> \n");
echo(" <td colspan=\"3\"><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">".$a_new[$i]['text']."</font></td>\n");
echo(" </tr>\n");
echo(" <tr bgcolor=\"#DDDDEE\"> \n");
echo(" <td width=\"50%\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Seitenanmeldung: ".$a_new[$i]['seit']."</font></td>\n");
echo(" <td width=\"50%\" bgcolor=\"#DDDDEE\" align=\"right\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Alle Seiten dieses Webmasters</font></td>\n");
echo(" </tr>\n");
echo("</table>\n");
echo("<br>\n\n");
}
}
|
watchout
Legendundead
|
wo kommt sql_text und sql_such her?
und trotzdem: dein stil is shize, kein einziger comment und die struktur is total unübersichtlich - denn _wir_ (die nicht darüber meckern sollen/dürfen) müssen ja den code auch verstehen, damit wir dir helfen können
|
roye
Little Overclocker
|
bekommst du überhaupt datensätze aus $sql_text, die keinen titel haben? ich würde mal im else zweig der ersten if abfrage ein echo hinzufügen um das zu kontrollieren.
|
bBU.CyTrobIc
#include "billrulz.h"
|
Hi, aus $sql_text bekomm ich werte, je nachdem wieviele geunden werden, aus $sql_such und $sql_titel kommen keine Daten, die Daten für $sql_text und die anderen beiden kommen von hier: //SUCHWÖRTER DURCHSUCHEN
for($i = 0; $i <= $anzahl; $i++){
if($i == 0){
$sql_such = $sql."such LIKE '%".$worte[$i]."%'";
}
if($i != 0 && $i != $anzahl) {
$sql_such = $sql_such." OR such LIKE '%".$worte[$i]."%'";
}
}
//TEXT DURCHSUCHEN
for($i = 0; $i <= $anzahl; $i++){
if($i == 0){
$sql_text = $sql."text LIKE '%".$worte[$i]."%'";
}
if($i != 0 && $i != $anzahl) {
$sql_text = $sql_text." OR text LIKE '% ".$worte[$i]."%'";
}
}
//TITEL DURCHSUCHEN
for($i = 0; $i <= $anzahl; $i++){
if($i == 0){
$sql_titel = $sql."titel LIKE '%".$worte[$i]."%'";
}
if($i != 0 && $i != $anzahl) {
$sql_titel = $sql_titel." OR titel LIKE '% ".$worte[$i]."%'";
}
}
es muss aber ein fehler in der schleife sein, wenn ich sie weglasse und jede abfrage einzelnd starte bekomme ich auch $sql_such und $sql_titel Datensätze ausgegeben (habe dann aber Datensätze doppelt, aber mit verschiedenen $pos Werten, und kann die doppelten deshalb nicht rausschmeissen) Der Code ansich soll folgendes tun, wenn das erste der suchwörter nicht mit $sql_text gefunden werden soll $sql_such durchsucht werden, wird dort auch nichts gefunden soll $sql_titel durchsucht werden. Dann von vorne mit den 2 dann mit dem 3 suchwort usw. thx
|
roye
Little Overclocker
|
du bist zwar nicht genau auf meine frage eingegangen, aber wenn ich es richtig verstanden habe, sollte folgendes helfen: $z = 0;
$a_new = array();
if($z <= 0) {
$r_sql_text = mysql_db_query($datenbk, $sql_text);
while($rowa = mysql_fetch_array($r_sql_text)) {
if($rowa[titel] != "") {
$array = array('titel' => $rowa[titel], 'url' => $rowa[url], 'text' => $rowa[text], 'seit' => $rowa[seit], 'webmaster' => $rowa[benutzer], 'pos' => 3);
array_push($a_new, $array);
echo "3 ";
$z++;
}
}
}
if($z <= 0) {
$r_sql_such = mysql_db_query($datenbk, $sql_such);
while($rowb = mysql_fetch_array($r_sql_such)) {
if($rowb[titel] != "") {
$array = array('titel' => $rowb[titel], 'url' => $rowb[url], 'text' => $rowb[text], 'seit' => $rowb[seit], 'webmaster' => $rowb[benutzer], 'pos' => 2);
array_push($a_new, $array);
echo "2 ";
$z++;
}
}
}
if($z <= 0) {
$r_sql_titel = mysql_db_query($datenbk, $sql_titel);
while($rowc = mysql_fetch_array($r_sql_titel)) {
if($rowc[titel] != "") {
$array = array('titel' => $rowc[titel], 'url' => $rowc[url], 'text' => $rowc[text], 'seit' => $rowc[seit], 'webmaster' => $rowc[benutzer], 'pos' => 1);
array_push($a_new, $array);
echo "1 ";
$z++;
}
}
}
|
bBU.CyTrobIc
#include "billrulz.h"
|
yo danke funtzt soweit, jetzt wird aber pro suchbegriff nur der erste treffer gematched, also wenn bei $sql_text schon was gefunden wird ja nicht mehr weitergesucht ob ein andere datenbankeintrag in $sql_such oder $sql_titel das suchwort enthält. Achja @roye: ich bekomm bei $sql_text mit meiner schleife die richtigen datensätze aus der Datenbank. es wird halt nur nicht weitergesucht über die letzten beiden schleifen für such und titel. thx dir schonmal bisher haste noch ne idee wie man jetzt noch alle 3 durchsuchen kann ?
|
roye
Little Overclocker
|
yo danke funtzt soweit, jetzt wird aber pro suchbegriff nur der erste treffer gematched, also wenn bei $sql_text schon was gefunden wird ja nicht mehr weitergesucht ob ein andere datenbankeintrag in $sql_such oder $sql_titel das suchwort enthält.
Achja @roye: ich bekomm bei $sql_text mit meiner schleife die richtigen datensätze aus der Datenbank. es wird halt nur nicht weitergesucht über die letzten beiden schleifen für such und titel.
thx dir schonmal bisher haste noch ne idee wie man jetzt noch alle 3 durchsuchen kann ? Der Code ansich soll folgendes tun, wenn das erste der suchwörter nicht mit $sql_text gefunden werden soll $sql_such durchsucht werden, wird dort auch nichts gefunden soll $sql_titel durchsucht werden. Dann von vorne mit den 2 dann mit dem 3 suchwort usw. ich dachte das war der sinn dahinter, dass nur dann weitergesucht werden sollte, wenn NICHTS gefunden wurde, sonst könntest du ja gleich nur 1 sql statement, welches alle felder durchsucht, abfeuern!
|
bBU.CyTrobIc
#include "billrulz.h"
|
ja das könnt ich machen, aber wie kann ich dann differenzieren in welchem Feld (text, such oder titel) das wort gefunden wurde ?
ich möchte die daten nähmlich danach ausgeben, oben sollen die datensätze stehen wo das suchwort in "text" gefunden wurde, darunter die wo das suchwort in "such" und ganz unten sollen die in "titel" gefundenen datensätze stehen.
|
roye
Little Overclocker
|
|
watchout
Legendundead
|
dann würde ich auf die schnelle alle 3 sql abfragen durchrasseln und mich dann mit http://de.php.net/manual/de/function.array-unique.php beschäftigen :-) oder du machst es auf die art: SELECT titel,[andere columns] FROM [table] WHERE [bla]
UNION
SELECT text,[andere columns] FROM [table] WHERE [bla]
UNION
SELECT woerter,[andere columns] FROM [table] WHERE [bla]
du siehst dann aber halt nicht wo titel aufhört und text anfangt, dafür sind die zeilen automatisch unique...
|
bBU.CyTrobIc
#include "billrulz.h"
|
hmm... *****, andere möglichkeit gibts nicht ? mit array unique schmeiss ich ja doppelte raus, aber ich hab ja die variable $pos, die 1, 2 oder 3 sein kann, je nachdem in welchem abschnitt das wort gefunden wurde... deshalb funktioniert dies ja nicht mit unique. Die funktion mit union sagt mir garnichts
|
roye
Little Overclocker
|
dann würde ich vor dem reinspeichern in das array, abfragen ob dieser datensatz schon existiert, zum beispiel, du wirst ja irgendein unique feld in deiner tabelle haben. zum beispiel wenn "titel" dein index ist, in etwa so: $z = 0;
$a_new = array();
$myindex = array();
$r_sql_text = mysql_db_query($datenbk, $sql_text);
while($rowa = mysql_fetch_array($r_sql_text)) {
if($rowa[titel] != "" && $myindex[$rowa[titel]] != 1) {
$myindex[$rowa[titel]]=1;
$array = array('titel' => $rowa[titel], 'url' => $rowa[url], 'text' => $rowa[text], 'seit' => $rowa[seit], 'webmaster' => $rowa[benutzer], 'pos' => 3);
array_push($a_new, $array);
echo "3 ";
$z++;
}
}
$r_sql_such = mysql_db_query($datenbk, $sql_such);
while($rowb = mysql_fetch_array($r_sql_such)) {
if($rowb[titel] != "" && $myindex[$rowb[titel]] != 1) {
$myindex[$rowb[titel]]=1;
$array = array('titel' => $rowb[titel], 'url' => $rowb[url], 'text' => $rowb[text], 'seit' => $rowb[seit], 'webmaster' => $rowb[benutzer], 'pos' => 2);
array_push($a_new, $array);
echo "2 ";
$z++;
}
}
$r_sql_titel = mysql_db_query($datenbk, $sql_titel);
while($rowc = mysql_fetch_array($r_sql_titel)) {
if($rowc[titel] != "" && $myindex[$rowc[titel]] != 1) {
$myindex[$rowc[titel]]=1;
$array = array('titel' => $rowc[titel], 'url' => $rowc[url], 'text' => $rowc[text], 'seit' => $rowc[seit], 'webmaster' => $rowc[benutzer], 'pos' => 1);
array_push($a_new, $array);
echo "1 ";
$z++;
}
}
Bearbeitet von roye am 24.02.2004, 19:27
|
watchout
Legendundead
|
|
bBU.CyTrobIc
#include "billrulz.h"
|
thx roye aber das haut irgendwie nicht so richtig hin... muss ich nochmal schauen aber thx
|