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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
30.06.2009, 00:18:56
|
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
|
30.06.2009, 03:00:59
|
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)
|
30.06.2009, 11:39:19
|
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
|
01.07.2009, 22:06:02
|
Administrator
|
|
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
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
|
03.07.2009, 01:15:29
|
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?
|
03.07.2009, 10:09:13
|
Administrator
|
|
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
|
|
AW: str_replace & foreach ausgabe
Zitat:
Zitat von Sandra
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
|
03.07.2009, 10:37:41
|
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?
|
03.07.2009, 10:41:57
|
Administrator
|
|
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
|
|
AW: str_replace & foreach ausgabe
Zitat:
Zitat von DokuLeseHemmung
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
|
03.07.2009, 10:49:57
|
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)
|
03.07.2009, 11:00:47
|
Administrator
|
|
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
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
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:19:00 Uhr.
|