PHP, SQL - Zeilenumbruchproblem in Textfeld ?!



  • Hallo Zusammen

    Eine kleine Frage:
    Ich lese eine PHP-Datei aus, die auf einem Server liegt und speichere das Ergebnis (sprich die Ausgabe die vom Server zurückgegeben wird) in den String "s". Dieser wird wiederum in einem Textfeld angezeigt.

    Alles klappt soweit so gut! Nur hab ich ein Problem: wenn die SQL-Datenbank mehr einträge hat (ich lese mit foreach aus!), dann sollte nach jedem eintrag ein Zeilenumbruch stattfinden.

    Bisher habe ich es leider nicht geschafft, diesen Zeilenumbruch auch im Textfeld (also in der s-variable) zu speichern! Ich versuchte es in der PHP-Datei mit echo \n oder \n\r oder <br />, aber nichts passiert. Anstatt einen Zeilenumbruch sehe ich einfach ein \n\r, gar nichts (eben alle aneinander statt unetereinadner) oder den <br />-Code.

    Warum und was kann ich dagegen tun??

    Hier mal die Funktion, welche eine pHP-Datei auf dem Server aufruft:

    CInternetSession session("Warnlist",1,INTERNET_OPEN_TYPE_PRECONFIG);
    	 CString somecode, s;
         CStdioFile* pFile = NULL;   
    	 CString strUrl("http://www.nfws.ch/inc/warnlist.php");
    do
    {
    
       try  
       {  
    	   pFile = session.OpenURL(strUrl,1,INTERNET_FLAG_TRANSFER_BINARY,NULL,0);
    
            if(pFile)  
            {           
                while (pFile->ReadString(somecode) != NULL)  
                {  
                    s = s + somecode;  
                }  
                pFile->Close();  
            }       
       }  
       catch (CInternetException* e)  
       {        
            e->Delete();
            session.Close();
            CloseHandle(session);  
       }
    
       CStatic *pStatic = (CStatic*)pParam;
       CString Result;
       pStatic->GetWindowText(Result);
    
       if(Result == s)
       {
       //nichts
       break;
       }
       if(!(Result == s))
       {
       pStatic->SetWindowText(s);
       break;
       }
    

    Hier die PHP-Datei auf dem Server (welche die SQL-Ergebnise liefert):

    <?php 
    include("sql_config.inc.php");
    include("sql_connect.inc.php");
    
    $datum=date("d.m.y"); 
    $time=date("H:i"); 
    
    $check = 0;
    
    $erstellt = mysql_query("select Text from nfws_vars where ssid='1'");
    while ($checker = mysql_fetch_array($erstellt)) {
    $check = 1;
    }
    if ($check == 1){
    
    $sql = "SELECT Text FROM nfws_vars WHERE ssid='1'";
    
    $result = mysql_query($sql) or die ("Fehler in: " . $sql);
    while($view = mysql_fetch_array($result))
    {
    echo $view['Text']."<br />"; //Hier versuche ich eigentlich eben mit dem <br/> einen Zeilenumbruch im Textfeld (MFC; VC++, s-Variable) zu erzwingen!
    }
    
    } 
    else
    {
    echo "Zur Zeit keine Warnungen vorhanden."; 
    }
    
    ?>
    

    Hat irgendwer hier eine Idee??
    lg
    Wolf



  • Wolf1985 schrieb:

    Hat irgendwer hier eine Idee??

    ja 😃
    die grundlagen der programmierung lernen 🙄



  • wenn, dann \r\n



  • elise schrieb:

    wenn, dann \r\n

    \r\n bringt auch nix.. leider..
    und was mir noch aufgefallen ist, dass im Textfeld immer ca. 10 Abstandzeichen (2 TABs) vor dem eigentlichen Text stehen! Wieso auch immer, in PHP-Ausgabe ist das nicht so...

    lg
    Wolf



  • Weil vielleicht das EditFeld nur einzeilig ist, deswegen bringt dann auch \r\n nix und wegen den leertzeichen am anfang, mach sie doch einfach weg oder Trace mal deinen Quelltext durch wo die sich reinschleichen. Also das Editfeld wird dir sicher keien Leerzeichen am anfang des Textes reinschmuggeln.

    deinen CPP-Source kommentier ich mal hier nicht weiter, das wurde mal in nen anderen Thread diskutiert. Aber scheinbar hat sich da auch nix getan, also weden die Fehlerquellen immer noch da sein. (Vielleicht kommen da auch deine Leerzeichen her)



  • CTecS schrieb:

    Weil vielleicht das EditFeld nur einzeilig ist, deswegen bringt dann auch \r\n nix und wegen den leertzeichen am anfang, mach sie doch einfach weg oder Trace mal deinen Quelltext durch wo die sich reinschleichen. Also das Editfeld wird dir sicher keien Leerzeichen am anfang des Textes reinschmuggeln.

    deinen CPP-Source kommentier ich mal hier nicht weiter, das wurde mal in nen anderen Thread diskutiert. Aber scheinbar hat sich da auch nix getan, also weden die Fehlerquellen immer noch da sein. (Vielleicht kommen da auch deine Leerzeichen her)

    CTecS, wie schon oben erwähnt ist es eben kein EditFeld sondern ein normales Textfeld. ! 🙂



  • Ist das nun ein CStatic oder CEdit, was anderes kennt soweit ich weiss windows nicht (warum auch). Ein Textfeld gibt es nicht bzw hab ich das noch nie gesehen und ich benutz schon mehrere Jahre die MFC (seit VS 6.0 aktuell war). Wobeiwenns ein CStatic ist, dann ist das in der größe zu klein und beim CEdit is ja glaub ich alles gesagt.



  • Hat sich mittlerweile erledig.

    s.Replace(_T("\\r\\n"), _T("\r\n"));
    

    war die Lösung.



  • ich schmeiß mich weg vor lachen...

    Lösung nennst du das, das ist grober unfug. und das nur weil du es nicht verstehst, deine fehler zu finden vergewalltigst du den code. 👎

    du machst dich ja echt lächerlich...



  • wenn er wüsste was er tut! die Antwort iehe die vielen Thread mit Fragen, Grundlagen Lernen tut Not!


Anmelden zum Antworten