SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 30.06.2009, 00:18:56
Sandra Sandra ist offline
Anfänger
 
Registriert seit: May 2006
Beiträge: 109
str_replace & foreach ausgabe

Hallo,

ich habe folgendes Problem:
In einem Gästebuch lese ich den Eintrag aus und ersetze Zeichen durch Smilies. Das geht, aber die Ausgabe gibt so immer nur die Smilies.

PHP-Code:
$query_select9 sprintf("SELECT message As m FROM cms_gb ");

$result9 mysql_query($query_select9);  

           while (
$zeile mysql_fetch_object($result9)) {  
               
$m $zeile->m;
               } 
$suchArr= array(':)',':(',':P',':o');   
$ersetzArr= array('<img src=images/smile.gif>','<img src=images/sad.gif>','<img src=images/tongue.gif>','<img src=images/scared.gif>');   
$stringArr['$m']  =$m
  
$content['$m'] = str_replace($suchArr$ersetzArr$stringArr); 

foreach (
$ersetzArr as $key=>  $content) {    
echo 
$key .$content."</br>";

Freue mich über einen Tip

DANKE

Sandra
Mit Zitat antworten
  #2  
Alt 30.06.2009, 03:00:59
lukgestach lukgestach ist offline
Junior Member
 
Registriert seit: Feb 2007
Ort: Safnern, CH
Alter: 32
Beiträge: 255
AW: str_replace & foreach ausgabe

Hallo,

So wie ich dein Code verstehe machst du alles richtig, bis auf die Ausgabe mit der foreach-Schleife. Denn da hast du in der Variable $key die ID des Arrays, in deinem Fall von 0 bis 3. In $content sind dann die Werte des Array gespeichert. Also die Bilder der Smileys...
Du gibst das dann per echo aus - ist ja klar, dass da nur die Smileys kommen, nicht?!

Der eigentliche Text ist dann in $content[] gespeichert, wobei du das als Variable und nicht als Array speichern musst (Weil str_replace ein String und kein Array zurückliefert)

Also müsste dein letzter Teil so aussehen:
PHP-Code:
$content str_replace($suchArr$ersetzArr$stringArr); 
echo 
"$content"
Dies gibt dann den Text mit den Smileys aus ;)

Gruss Lukas

Geändert von lukgestach (30.06.2009 um 03:01:19 Uhr)
Mit Zitat antworten
  #3  
Alt 30.06.2009, 11:39:19
Sandra Sandra ist offline
Anfänger
 
Registriert seit: May 2006
Beiträge: 109
AW: str_replace & foreach ausgabe

Hallo,

ja das habe ich mit print auch schon probiert und bekomme bei beiden die Einträge vielfach herausgegeben, z.b. bei 6 Einträgen bekomme ich 6x alle 6 Einträge

PHP-Code:
$suchArr= array(':)',':(',':P',':o');   
$ersetzArr= array('<img src=images/smile.gif>','<img src=images/sad.gif>','<img src=images/tongue.gif>','<img src=images/scared.gif>');   
$stringArr=$m
  
$content str_replace($suchArr$ersetzArr$stringArr); 
//print_r ($content."<br>"); 
echo "$content";  
 } 
Über eine weitere Idee freue ich mich

Sandra
Mit Zitat antworten
  #4  
Alt 01.07.2009, 22:06:02
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 52
Beiträge: 1.276
AW: str_replace & foreach ausgabe

Hallo Sandra,

ich bin ein wenig irritiert was Du mit manchen Dingen überhaupt anstellen willst ;-)

Was willst Du damit bezwecken?

PHP-Code:
while ($zeile mysql_fetch_object($result9)) {   
               
$m $zeile->m
               } 
Nach meiner Ansicht müsstest Du es so machen:
PHP-Code:
<?php

$suchArr 
= array('/:\)/','/:\(/','/:P/','/:o/');    
$ersetzArr = array('<img src=images/smile.gif>','<img src=images/sad.gif>','<img src=images/tongue.gif>','<img src=images/scared.gif>');    

while (
$zeile mysql_fetch_object($result9)) {
    
    
$text preg_replace($suchArr$ersetzArr$zeile->m);
    
    echo 
$text;
    
}  

?>
Hier mal einfach so zum spielen:
PHP-Code:
$suchArr = array('/:\)/','/:\(/','/:P/','/:o/');    
$ersetzArr = array('<img src=images/smile.gif>','<img src=images/sad.gif>','<img src=images/tongue.gif>','<img src=images/scared.gif>');    

$text 'Wenn ich :) und Du :( nichts machen :P dann ist das nunmal so :o';

$text preg_replace($suchArr$ersetzArr$text);

echo 
$text
Damir
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #5  
Alt 03.07.2009, 01:15:29
Sandra Sandra ist offline
Anfänger
 
Registriert seit: May 2006
Beiträge: 109
AW: str_replace & foreach ausgabe

Hallo,

mit Zeichen im Array geschrieben und Bildnamen im Array klappt es.
Ich habe aber eine DB Tabelle mit den Smeilys und den dazugehörenden Zeichen,

also ID smeily, smeily_zeichen, smeily_image

genauso habe ich eine Tabelle mit den Gästebucheinträgen

also ID, message

Das Ersetzen funktioniert auch, aber die Datensätze werden so oft wie es Datenreihen mit Smeilys gibt wiederholt.

Ich habe mitlerweile mehrere Ansätze immer mit dem gleichen Ergebnis

PHP-Code:
//auslesen der Tabelle Smeily

$query_select3 sprintf("SELECT image_smeily As smilie1, zeichen_smeily As s_zeichen FROM cms_smilies");
$result3 mysql_query($query_select3); 
  while (
$zeile mysql_fetch_object($result3)) {  
 
$s_zeichen $zeile->s_zeichen;
$zeichen_gb=array($s_zeichen);
$s_image $zeile->smilie1
$s="<IMG SRC='images/".$s_image."'>";
$image_gb=array($s);

  
  
//auslesen des Eintrages

$query_select6 sprintf("SELECT cms_gb.id, cms_gb.message As message,  FROM cms_gb  ");

             
$result6 mysql_query($query_select6);  
              while (
$zeile mysql_fetch_object($result6)) {  
             
$message $zeile->message;

//ersetzen zeichen gegen image bei dem Eintrag            
$message str_replace ($zeichen_gb,$image_gb$message);
echo 
"$message<br>";    }   }        } 
Bei 3 Smeilys in der DB Smeilys bekomme ich nun eine 3 malige Wiederholung aller Einträge, wobei im ersten Durchlauf der Schleife das erste Smeily Zeichen ersetzt, im zweiten das ...

Wenn ich die Klammern am Ende anders setze bekomme ich nur das letzte Zeichen ersetzt.

Der Fehler ist irgendwo im Auslesen des Arrays. Aber auch wenn ich die Tabelle Smeily nicht nochmal extra als Array setze passiert das Gleiche. Select Distinct gibt auch keine Hilfe.

Eine foreach Schleife gibt auch das gleiche Ergebnis
PHP-Code:
function replacesmeily($x,$y,$z)
{
$smeily= array($y=>$z);

foreach(
$smeily as $temp=>$key)
{
$x str_replace($temp,$key,$x);
}
return(
$x);

}

echo 
replacesmeily($message,$zeichen_gb,$image_gb)."</br>"
Hat Jemand noch eine Idee?
Mit Zitat antworten
  #6  
Alt 03.07.2009, 10:09:13
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 52
Beiträge: 1.276
AW: str_replace & foreach ausgabe

Zitat:
Zitat von Sandra Beitrag anzeigen
Hat Jemand noch eine Idee?
Hi, Du tust so als ob unsere Vorschläge alle nicht funktionieren, dabei sind sie aber richtig....

Du gehst schlichtweg falsch mit den Schleifen um!!!!!!!!!!!

Ist ja auch logisch denn du liest die Smileys in einer while-Schleife aus und machst dann in jedem Durchlauf (also für jeden Smiley) eine neue Abfrage der Einträge!!! Die SELECT-.Anweisung hat da gar nichts zu suchen... Letztendlich erzeugt du damit immer wieder doppelte und dreifache Ausgaben.

Damir
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #7  
Alt 03.07.2009, 10:37:41
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: str_replace & foreach ausgabe

Zitat:
Das Ersetzen funktioniert auch, aber die Datensätze werden so oft wie es Datenreihen mit Smeilys gibt wiederholt.
Etwas mehr Sorgfalt und Disziplin bitte!

Wenn du deinen Code ordendlich einrücken würdest, dann würdest du auch sehen warum sich das wiederholt.

Soll ich dir das mal "schön" machen?
Mit Zitat antworten
  #8  
Alt 03.07.2009, 10:41:57
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 52
Beiträge: 1.276
AW: str_replace & foreach ausgabe

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Soll ich dir das mal "schön" machen?
Naja, wenn du ihr das schön machst dann wird sie es auch sehen warum es so nicht klappt - aber wenn sie es vernünftig einrückt sieht sie es auch und hat dabei noch was gelernt ;-)
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #9  
Alt 03.07.2009, 10:49:57
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: str_replace & foreach ausgabe

Zitat:
und hat dabei noch was gelernt
Naja...
Schon 3 Jahre dabei und über 90 Postings; ich befürchte ehr, dass Sie gar nicht weiß, was wir von ihr wollen...

Geändert von DokuLeseHemmung (03.07.2009 um 10:54:04 Uhr)
Mit Zitat antworten
  #10  
Alt 03.07.2009, 11:00:47
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 52
Beiträge: 1.276
AW: str_replace & foreach ausgabe

Sandra,

also wir wollen Dir ja nichts böses ;-) Aber du hast das Thema völlig falsch angefasst...

Schau mal hier, wie man es machen könnte - natürlich gibt es auch andere Ansätze

PHP-Code:

// Smileys aus Datenbank lesen

while(......){
   
// Smileys in Array speichern
}

// Gästebuch Einträge auslesen

while(......){
   
// Gästebuch einträge durchsuchen bzw. ersetzen mit den Smileys

   // 

Das ist jetzt nur eine grobe Vorstellung...
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe mit ORDER BY passt nicht... mayer MySQLi/PDO/(MySQL) 5 03.07.2006 01:39:08
bestimmte html ausgabe joker PHP Grundlagen 2 15.11.2004 22:37:56
foreach => doppelte Ausgabe bweichel PHP Grundlagen 3 24.08.2004 12:30:07
Ausgabe eines echo befehls? Funjoy PHP Grundlagen 2 15.07.2003 14:35:34
foreach() für mehr zeilige ausgabe? |Coding PHP für Fortgeschrittene und Experten 8 26.05.2002 04:54:39


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:18:35 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt