Textarea mit mysql sortiert füllen

Andreas Post

Grünschnabel
[Erledigt] Textarea mit mysql sortiert füllen

Gu morgen :)

Hoffe bin im PhP Bereich richtig :)


Folgendes :
Ich möchte MySql Daten in eine Textarea schreiben, diese Daten sollen aber sortiert sein wie folgt :

Ich lese aus : Stadt-Name, Anzahl
Aufteilung soll sein :
New York
1 4 6 7
Berlin
3 7 9
Moscow
1 2 5 7 9
usw. je nach Doppelten

Mit diesem Code hantiere ich derzeit , ist vl. nicht die sauberste Lösung aber bin kein Profi ^^

HTML:
<?
include("dbconfig.php");
connectdb();
$user_id=$_GET[id];
$dsql=mysql_query("select * from ts_cards order by card_id ASC");
?>
<link rel="stylesheet" href="fbtoolx.css" type="text/css" media="screen" />
<div id="facebox" style="top: 20px; left: -300px;" class="wishlist"><div class="bg"><a class="cancel_button" href="#" onclick="jQuery.facebox.onCancel(); return false;"></a><div class="wishlist_title">My <span class="color_text">wishlist</span></div><div class="wishlist_container"><img class="wishlist_icon" src="http://www.tutorials.de/images/top_icon.png">
<textarea name="wishlist_content_area" readonly="true" id="wishlist_content_area">In Project I'm looking for:

</textarea>
<div class="wishlist_footer"><div class="wishlist_select_button" onclick="sf.UI.selectWishlistElement('wishlist_content_area')">Select</div></div></div><div class="wishlist_title">My <span class="color_text">duplicate</span> list</div><div class="wishlist_container"><img class="wishlist_icon" src="http://www.tutorials.de/images/bottom_icon.png">
<textarea id="duplicates_content_area" readonly="true">In Project here are my duplicates:
<? 
while($dresult=mysql_fetch_array($dsql)){
$bsql=mysql_query("select * from ts_cTOu where user_id='$user_id' and card_id='$dresult[card_name]'");
$bresult=mysql_fetch_array($bsql);
if($bresult[c_number]>=2){
echo "$dresult[city_name]";
echo "$bresult[card_id]";

}
}
?>
</textarea><div class="wishlist_footer"><div class="wishlist_select_button" onclick="sf.UI.selectWishlistElement('duplicates_content_area')">Select</div></div></div><div id="wishlist_publish_profile" class="left"><a href="#" id="wishlist_publish_profile" onclick="sf.Publish.publishProfile(); return false;; return false;" class="button_right " target="_top">
<span class="button_left">Share my Profile</span>
</a></div>
</div>
</div>

Ausgabe ist derzeit so :

In Project here are my duplicates:
New York1New York2New York3New York4New York5New York6New York7New York8New York9New York10New York11New York12Berlin13Berlin14Berlin15Berlin16Berlin17Berlin18Berlin19Berlin20Berlin21Berlin22Berlin23Berlin24Moscow25Moscow26Moscow27Moscow28Moscow29Moscow30Moscow31Moscow32Moscow33Moscow34Moscow35Moscow36

Hoffe da mag mir wer helfen? :)

Grüße
Andreas
 
Zuletzt bearbeitet:
So in etwa:

PHP:
$city = "";
if ($city != $dresult['city_name']) {
    echo "<br />" .$dresult['city_name'] ."<br />";
    $city = $dresult['city_name'];
}
echo $bresult['card_id'] . " ";
 
Willst du deinen Code wirklich nicht formatieren damit man ihn auch lesen kann?
Siehe zudem mal das an: PHP SQL-Statement in PHP lesbar darstellen



- Dann die SQLs zusammenziehen in eines. Darin auch gleich die Sortierung richten
- Ein 2-Dimensionaler Array aufbauen Array(city_name => array(card_id))
- Den Array durchgehen und die Zeilen zusammensetzen

PHP:
$sql=<<<SQL
SELECT
	ts_cards.city_name,
	ts_cards.card_id
FROM
	ts_cards
	INNER JOIN ts_ctou
		ON ts_cards.card_name = ts_ctou.card_id
WHERE
	ts_ctou.user_id = '{$user_id}'
ORDER BY
	ts_cards.city_name,
	ts_cards.card_id
SQL;
$result = mysql_query($sql);

$cities = array()
while($array = mysql_fetch_array($sql)){
	$cities[$array['city_name']][] = $array['card_id'];
}
$lines = array();
foreach($cities as $cityName => $cardIds){
	$lines[] = $cityName;
	$lines[] = implode(' ', $cardIds);
}
$text = implode("\n", $lines);
echo <<<TXT
<textarea>
	{$text}
</textarea>
TXT;
 
WoW,
hab garnicht so schnell mit Antworten gerechnet :)

Erst einmal vielen Dank, ich sagte ja, bin Anfänger in diesen Sachen und werde mir das mal zu Gemüte führen und das verstehen/testen was dort steht :)

Und an den Link werde ich mich zukünftig halten, versprochen ^^

ab zum rumprobieren:)
Daaaanke
 
Jaaa es funktioniert :)
Hatte zwar ständig nen 500 server fehler aber habs hinbekommen :)

Anzeige :

In Town StickerZ here are my duplicates:
Berlin
13 14 15 16 17 18 19 20 21 22 23 24
Moscow
25 26 27 28 29 30 31 32 33 34 35 36
New York
1 2 3 4 5 6 7 8 9 10 11 12

Darf ich noch die Frage stellen...wie bekomme ich das nun hin das New York oben steht als ID=1, derzeit ist es gemischt?!. Geb aber zu das ich das mit den arrays noch nicht ganz überblicke...

und nochmal vielen vielen Dank für Eure Hilfe!
Grüße
Andreas
 
Nicht ganz tombe
Zuerst nach der ID wo bei New York eine 1 drin steht. Dann anch der Kartenid
SQL:
ORDER BY ts_ctou.id, ts_cards.card_id
 
Zuletzt bearbeitet von einem Moderator:
Hier nochmal der gesamte Quelltext und es sieht sehr gut aus , vielen Dank :)

Einfügen musste ich das mysql_query("") und kommas....ansonsten gabs immer server 500 errors.


HTML:
<?
include("dbconfig.php");
connectdb();
$user_id=$_GET[id];

$sql= 
mysql_query("
SELECT 
   ts_cards.city_name, 
   ts_cards.card_id 
FROM 
   ts_cards 
INNER JOIN ts_cTOu 
   ON ts_cards.card_name = ts_cTOu.card_id 
WHERE 
   ts_cTOu.user_id = '{$user_id}' 
ORDER BY 
   ts_cards.city_id, ts_cards.card_id ASC");

$result = mysql_query($sql);

$cities = array(); 
while($array = mysql_fetch_array($sql)){ 
$cities[$array['city_name']][] = $array['card_id']; 
} 
 $lines = array(); 
foreach($cities as $cityName => $cardIds){ 
    $lines[] = $cityName; 
    $lines[] = implode(' ', $cardIds); 
}
$text = implode("\n", $lines);
?>
<link rel="stylesheet" href="fbtoolx.css" type="text/css" media="screen" />
<div id="facebox" style="top: 20px; left: -300px;" class="wishlist"><div class="bg"><a class="cancel_button" href="#" onclick="jQuery.facebox.onCancel(); return false;"></a><div class="wishlist_title">My <span class="color_text">wishlist</span></div><div class="wishlist_container"><img class="wishlist_icon" src="http://www.tutorials.de/images/top_icon.png">
<textarea name="wishlist_content_area" readonly="true" id="wishlist_content_area">In Town StickerZ I'm looking for:

</textarea>
<div class="wishlist_footer"><div class="wishlist_select_button" onclick="sf.UI.selectWishlistElement('wishlist_content_area')">
Select</div></div></div><div class="wishlist_title">My <span class="color_text">duplicate</span> list</div><div class="wishlist_container">
<img class="wishlist_icon" src="http://www.tutorials.de/images/bottom_icon.png">

<form name="eins">
<textarea id="duplicates_content_area" readonly="true" name="eins">In Town StickerZ here are my duplicates:
<?
echo "$text";
?>


</textarea>
<input type=button value="Markieren" onClick="javascript:this.form.eins.focus();this.form.eins.select();">
</form>

<div class="wishlist_footer"><div class="wishlist_select_button">
</div></div></div><div id="wishlist_publish_profile" class="left">
<a href="#" id="wishlist_publish_profile" onclick="sf.Publish.publishProfile(); return false;; return false;" class="button_right " target="_top">
<span class="button_left">Share my Profile</span>
</a></div>
</div>
</div>

So siehts aus :

In Town StickerZ here are my duplicates:
New York
1 2 3 4 5 6 7 8 9 10 11 12
Berlin
13 14 15 16 17 18 19 20 21 22 23 24
Moscow
25 26 27 28 29 30 31 32 33 34 35 36

Danke
Andreas
 
Zuletzt bearbeitet:
Ich rate dir wirklich ganz dringend und ind einemInteresse deinen Code lesbar zu formatieren
HTML, PHP und SQL lassen sich mit Tabulatoren in eine lesbare Form bringen.

Glaub mir, wenndu in einem halben Jahr auf deinen Code schaust wirst du es merken. Warscheinlich schon früher wenn das nächste Problem auftaucht und du den Fehler suchen willst.
Hier eine kleine Anleitung dazu: PHP High Quality PHP-Code – Teil 1 Code-Style
 

Neue Beiträge

Zurück