[PHP & MySQL] - Ein Array in mehrere Aufteilen?



  • Hallo Zusammen!

    Ich schreibe in PHP und SQL gerade eine JobScout-Börse. Einsehbar unter www.wolfsoft.ch/modules.php?name=Projects (dort ist dann auch der Testlink angegeben).

    Nun habe ich noch eingebaut, dass vergessene Eintragsnummern an die jeweilige E-Mail Adresse geschickt werden. Wenn es nur ein Eintrag ist, kein Problem. Doch was mache ich wenn es mehrere Einträge mit der gleichen E-mail sind, aber verschiedene Eintragungscodes?

    Ich habe von mir "info@woldsoft.ch" zwei Einträge drin. Beim abruf wird mir jeweils nur der letzte Eintragungscode geschickt. Lasse ich diese durch eine while-Schlaufe gehen, dann werden mir alle Nummern zur jeweilgen E-Mail angezeigt, also alle beide.

    Nur wie schicke ich die Nummern per E-mail untereinander? Folgendes Code-Beispiel ruft die Eintragungsnummer zur E-Mail Adresse ab:

    mysql_connect($db_host, $db_uname, $db_pass);
    	mysql_select_db($db_name);
    	$result=mysql_query("SELECT datum, stelle, anstellung, arbeitgeber, zustaendig, adresse, plz, ort, tel, email, link, settingnr FROM free_jobs WHERE email='".$idemail."'");
    	$row = mysql_fetch_array($result);
    
    		$getmail = $row['email']; //Problemzone
    		$getsettingnr = $row['settingnr']; //Problemzone
    
    		if((!$idemail == $getmail) || ($idemail == ""))
    		{
    			echo '<fieldset style="border : 2px solid  black"><legend>Eintragungsnummer vergessen</legend><br>Die angegebene E-Mail ist nicht in unserer Datenbank registriert.<br><a href="modules.php?name=jobscout&file=set&update=forget_id&get=false"><u>Zurück / Nochmal versuchen</u></a></fieldset><br><bR><center>JobScout 1.0 ist ein Projekt von <a href="http://www.wolfsoft.ch" target="_new"><u>WolfSoft.ch</u></a><br>&copy; Copyright by Kurz Dominic</center>';
    		}
    		else
    		{
    		$header = "From:automail@jobscout.mail(JobScout - Reminder)";
    		$betreff = "Ihre Eintragungs-Nummer";
    		$nachricht = "Sehr geehrter JobScout-Nutzer,
    
    Sie haben ihre Eintragungsnummer um Ihre Einträge zu bearbeiten vergessen?
    Folgende Eintragungsnummern sind Ihnen zugeordnert:
    
    		Ihre Nummer(n): $getsettingnr
    
    Freundliche Grüsse
    JobScout
    
    Bitte nicht auf diese E-Mail antworten!";
    
    		mail($getmail,$betreff,$nachricht,$header);
    

    Setze ich die Zeilen mit //Problemzone kommentiert in eine While-Schleife, erhalte ich eben beide Eintragsnummern welche zur jeweilgen E.Mail gehört.

    Ich weiss nun nicht, wie ich es anstellen soll, dass alle Nummern untereinander in der E-Mail dargestellt werden, wenn sich diese in der While befinden?

    $row['settingnr'] ist ja EIN Array, dann wird mir ja bei der E-Mail trotzdem nur eine Nummer angezeigt statt alle? Wie geht das?

    Sorry wegen dem langen Beitrag, ich wusste nicht wie ich das sonst erklären sollte...

    Freundliche Grüsse

    Wolf / Programmer



  • Du kannst z.B. entweder vorher die ganzen Eintragsnummern in ein weiteres Array schreiben und dieses dann über implode in eine z.B. komma-separierte Liste umwandeln. Oder du packst das ganze über eine do-while-Schleife in deinen else-Block wo du die Nachricht zusammensetzt und hängst dann die Eintragsnummern über .= an deinen String an.



  • Danke!

    Hm... nun welchen Operator muss ich in der While-Schleife nehmen?
    Derzeit bekomme ich folgendes Ergebnis:

    30267601, Array, Array,

    Obwohl Aarray und Aaray ebenfalls Nummern sein müssten. In der E-Mail wird nur die erste Nummer (siehe oben) angezeigt.

    Problemzone:

    $fid = $row['settingnr'];
    		do {echo $fid++, ", "; }
    		while($fid=mysql_fetch_array($result));
    
    		$header = "From:automail@jobscout.mail(JobScout - Reminder)";
    		$betreff = "Ihre Eintragungs-Nummer";
    		$nachricht = "Sehr geehrter JobScout-Nutzer,
    
    Sie haben ihre Eintragungsnummer um Ihre Einträge zu bearbeiten vergessen?
    Folgende Eintragungsnummern sind Ihnen zugeordnert:
    
    		Ihre Nummer(n): ".$row['settingnr']."
    

    Weiss nich was mit mir los ist, komme nicht dahinter 🙂

    mfg
    Pro / Wolf



  • oben folgendes:

    while($row = mysql_fetch_array($result))
     {
             $getmail = $row['email'];
             $getsettingnr[] = $row['settingnr'];
     }
     $getsettingnr_str = implode(', ', $getsettingnr);
    

    und unten bei der Ausgabe dann einfach $getsettingnr_str einsetzen...



  • Danke, das klappt wunderbar!

    Jetzt kann ich das ganze noch erweitern.. mal schaun obs jetzt auch ohne grösseren Zwischenfälle klappt. 😃

    mfg
    Wolf / Pro


Log in to reply