String wird nicht richtig zerteilt

DrEvil

Erfahrenes Mitglied
Hi Leute, ich versuche mich gerade an einem kleinen Nachrichtensystem für ne Homepage.

Eigentlich bin ich der Meinung alles Schritte sind richtig gedacht, aber irgendwie kommt halt nicht das gewünschte Ergebnis raus.

Ich werfe einen String $receiverID --> 123-2-3- (als Bsp) in folgende Funktion ein:

PHP:
		$length = substr_count($receiverID, '-');
		$i = 1;
		while($i <= $length){
			$receiverIDinsert = strstr($receiverID, '-', true);
		    if(!DB::DoSql("INSERT INTO `messages` (`messageID`, `senderID`, `receiverID`, `topic`, `text`, `read`, `date`) VALUES ('', '$senderID', '$receiverIDinsert', '$topic', '$text', '0', '$date')")) {
			 echo "Fehler beim Versenden!<br>\n<br>\n";
		     } else {
		   	 echo "Nachricht \"$topic\" erfolgreich versandt! var length $length, var i $i, var receiverID $receiverIDinsert<br>\n<br>\n";
		     }
			$receiverID = substr(strstr($receiverID, '-', false), 1, 0);
			$i++;
		}
( Sorry für die verhunzte Schleife - aber ich bin vor kurzem erst eingestiegen und hab noch keine bessere Schreibweise gefunden :rolleyes:)

Idee ist: $receiverID = 123-2-3- kommt rein, Script trennt nach 123 ab und definiert diese als $receiverIDinsert diese Var wird wiederum in die Datenbank eingefügt.
Von $receiverID wird am Ende des Durchlaufs 123- abgetrennt und mit 2-3- geht's wieder von vorne los...

Die Überprüfung zeigt, das $receiverIDinsert nicht richtig definiert wird - nämlich garnicht (in der DB ist dann immer 0 eingetragen). Habe aber 1zu1 nen Bsp von php.net für strstr() übernommen...

Kann mir wer helfen?

MfG DrEvil
 
Versuch mal den String einfach mit explode() zu zerlegen, dan hast du einen sauberen Array mit den einzelnen Werten =)

MfG Christian Hackmann
 
Jou - Danke - mit explode isses wirklich einfacher.

Code sieht jetzt so aus:

PHP:
		$length = substr_count($receiverID, '-');
		$receiverID = explode('-', $receiverID);
		$i = 0;
		while($i < $length){
		    if(!DB::DoSql("INSERT INTO `messages` (`messageID`, `senderID`, `receiverID`, `topic`, `text`, `read`, `date`) VALUES ('', '$senderID', '$receiverID[$i]', '$topic', '$text', '0', '$date')")) {
			 echo "Fehler beim Versenden!<br>\n<br>\n";
		     } else {
		   	 echo "Nachricht \"$topic\" erfolgreich versandt!<br>\n<br>\n";
		     }
			$i++;
		}

Vielen Dank!
 
Trotzdem noch unschön.
Nehm dass:
PHP:
$receiverID = explode('-', $receiverID);
foreach ($receiverID as $receiverIDatm) {
	if(!DB::DoSql("INSERT INTO `messages` (`messageID`, `senderID`, `receiverID`, `topic`, `text`, `read`, `date`) VALUES ('', '$senderID', '$receiverIDatm', '$topic', '$text', '0', '$date')")) {
		echo "Fehler beim Versenden!<br>\n<br>\n";
	} else {
		echo "Nachricht \"$topic\" erfolgreich versandt!<br>\n<br>\n";
	}
}

So ist es schön =)
Dann noch bewerten und alle sind glücklich =)

MfG Christian Hackmann
 
Zurück