Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 22:33

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



While Schleifen Problem

Discussion on While Schleifen Problem within the Web Development forum part of the Coders Den category.

Closed Thread
 
Old   #1

 
.Insane's Avatar
 
elite*gold: 0
Join Date: Jun 2011
Posts: 670
Received Thanks: 118
While Schleifen Problem

Hey E*Pvpers,
ich habe ein Problem mit einer While Schleife.
Ich lasse die Kontakt Anfragen von meiner Website in eine Datenbank eintragen und schließlich im Admin Panel ausgeben.
Es geht jetzt speziell um die Sortierung der Personen, die eine Anfrage geschickt haben. Ich möchte, dass falls eine Person mir zweimal schreibt, sie wieder in die selbe Sparte einsortiert wird.

Hier ein Bild (Mit dem Fehler)


Wie ihr seht wird die Person allerdings zweimal angezeigt, da auch zwei Anfragen vorhanden sind (An der roten 2 zu erkennen). Allerdings soll die zweite Anfrage wieder bei der ersten mit einsortiert werden und somit dort nur einmal das Feld erscheinen.

Ich hoffe es versteht jemand, was ich meine. Hier nun der entsprechende Code:
Code:
<?php
$sql_kontakt_new = "SELECT 
					ID,
					Vorname,
					Nachname,
					Strasse,
                                        Hausnummer,
                                        Wohnort,
					Email,
                                        Einstelldatum
					Bearbeitet
			       FROM 
					nachricht 
			       WHERE
					Bearbeitet = '0'
			      ORDER BY
                                        Einstelldatum DESC
			"; 
					$result_kontakt_new = mysql_query($sql_kontakt_new) OR die("<pre>\n".$sql_kontakt_new."</pre>\n".mysql_error()); 
					while ($row_kontakt_new = mysql_fetch_assoc($result_kontakt_new)) { 
						$kontakt_new = mysql_query("SELECT * FROM nachricht WHERE Strasse = '".$row_kontakt_new['Strasse']."' AND Hausnummer = '".$row_kontakt_new['Hausnummer']."' AND Wohnort = '".$row_kontakt_new['Wohnort']."'");
						$date = date_create($row_kontakt_new['Einstelldatum']);
						echo "
						<li>
                            <a href='?".$row_kontakt_new['Strasse']."".$row_kontakt_new['Hausnummer']."".$row_kontakt_new['Vorname']."".$row_kontakt_new['Nachname']."'>
                                <span class='contactName'>
                                    <strong>".$row_kontakt_new['Vorname']." ".$row_kontakt_new['Nachname']."<span>(".mysql_num_rows($kontakt_new).")</span></strong>
                                    <i>".$row_kontakt_new['Email']."</i>
                                </span>
                                <span class='status_available tipN' title='Noch nicht beantworet'></span>
                            </a>
                        </li>
						";
					}
					?>
Wie kann ich die Schleife nun umschreiben, dass es so wie beschrieben angezeigt wird?
Vielen Dank.

Lg
.Insane is offline  
Old 01/20/2013, 16:46   #2
 
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
Ich bin mir nicht ganz sicher ob ich dein Problem richtig verstanden habe, aber was du beschreibst löst man i.d.R. innerhalb des SQL Statements mit .

Schau es dir mal an, eventuell hilft es dir weiter.
MrPuschel is offline  
Thanks
1 User
Old 01/20/2013, 17:01   #3
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
Wenn du dir die Daten aus deiner ersten Abfrage zwischenspeicherst, kannst du dir die zweite Abfrage sparen. Das heißt im ersten Schritt liest du erstmal alles ein und speicherst die Daten in einem Array, danach sortierst bzw. gruppierst du es dir wie du es gerne hättest und im letzten Schritt gibst du die passig gruppierten Daten aus.
Muddy Waters is offline  
Thanks
1 User
Old 01/20/2013, 17:15   #4

 
.Insane's Avatar
 
elite*gold: 0
Join Date: Jun 2011
Posts: 670
Received Thanks: 118
Ich danke euch beiden.
Habe es jetzt mit "SELECT...FROM...WHERE...GROUP BY..." gelöst.

Edit: Leider doch noch nicht gelöst. Er gibt nur eine Person aus...
Mein Code:
Code:
<?php
					$sql_kontakt_new = "SELECT
											ID,
											Vorname,
											Nachname,
											Strasse,
											Hausnummer,
											Wohnort,
											Email,
											Einstelldatum,
											Bearbeitet
									FROM 
											nachricht 
									WHERE
											Bearbeitet = '0'
									GROUP BY
											Strasse AND
											Hausnummer AND
											Wohnort
								   "; 
					$result_kontakt_new = mysql_query($sql_kontakt_new) OR die("<pre>\n".$sql_kontakt_new."</pre>\n".mysql_error()); 
					while ($row_kontakt_new = mysql_fetch_assoc($result_kontakt_new)) { 
						$kontakt_new = mysql_query("SELECT * FROM nachricht WHERE Strasse = '".$row_kontakt_new['Strasse']."' AND Hausnummer = '".$row_kontakt_new['Hausnummer']."' AND Wohnort = '".$row_kontakt_new['Wohnort']."'");
						$date = date_create($row_kontakt_new['Einstelldatum']);
						echo "
						<li>
                            <a href='?".$row_kontakt_new['Strasse']."".$row_kontakt_new['Hausnummer']."".$row_kontakt_new['Vorname']."".$row_kontakt_new['Nachname']."'>
                                <span class='contactName'>
                                    <strong>".$row_kontakt_new['Vorname']." ".$row_kontakt_new['Nachname']."<span>(".mysql_num_rows($kontakt_new).")</span></strong>
                                    <i>".$row_kontakt_new['Email']."</i>
                                </span>
                                <span class='status_available tipN' title='Noch nicht beantworet'></span>
                            </a>
                        </li>
						";
					}
					?>
Muddy Waters könntest du mir das bitte an einem kleine Beispiel zeigen. Würde mir mehr helfen.
Danke
.Insane is offline  
Old 01/20/2013, 17:53   #5
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,653
Einmal quick and dirty, ist ungetestet und könnten Fehler drin sein; vielleicht habe ich auch einen Denkfehler und die Variante funktioniert gar nicht:
PHP Code:
<?php
$sql_kontakt_new 
"SELECT 
                    ID,
                    Vorname,
                    Nachname,
                    Strasse,
                                        Hausnummer,
                                        Wohnort,
                    Email,
                                        Einstelldatum
                    Bearbeitet
                   FROM 
                    nachricht 
                   WHERE
                    Bearbeitet = '0'
                  ORDER BY
                                        Einstelldatum DESC
            "

$result_kontakt_new mysql_query($sql_kontakt_new) OR die("<pre>\n".$sql_kontakt_new."</pre>\n".mysql_error()); 

$contacts = array();

while (
$row_kontakt_new mysql_fetch_assoc($result_kontakt_new))
    
$contacts[] = $row_kontakt_new;

$groups = array();

for(
$i 0$clenth count($contacts); $i $clenth$i++)
{
    
$glength count($groups);
    
$j 0;
    
    for( ; 
$j $glength$j++)
    {
        if(
$contacts[$i]['Strasse'] == $groups[$j]['Strasse']
        && 
$contacts[$i]['Hausnummer'] == $groups[$j]['Hausnummer']
        && 
$contacts[$i]['Wohnort'] == $groups[$j]['Wohnort'])
            break;
    }
    
    if(
$j >= $glength// There is no such group yet
    
{
        
$groupitem = array('messagecount' => 1);
        foreach(
$contacts[$i] as $key => $val)
            
$groupitem[$key] = $val;
        
$groups[] = $groupitem;
    }
    else 
// We got an existing group at index $j that matches the contact at $i
        
$groups[$j]['messagecount']++;
}

for(
$i 0$glength count($groups); $i $glength$i++)
{
    
$date date_create($groups[$i]['Einstelldatum']);
    echo 
"
    <li>
        <a href='?"
.$groups[$i]['Strasse']." ".$groups[$i]['Hausnummer']." ".$groups[$i]['Vorname']." ".$groups[$i]['Nachname']."'>
            <span class='contactName'>
                <strong>"
.$groups[$i]['Vorname']." ".$groups[$i]['Nachname']."<span>(".$groups[$i]['messagecount'].")</span></strong>
                <i>"
.$groups[$i]['Email']."</i>
            </span>
            <span class='status_available tipN' title='Noch nicht beantworet'></span>
        </a>
    </li>
    "
;
}
?>
Muddy Waters is offline  
Thanks
1 User
Old 01/20/2013, 18:05   #6

 
.Insane's Avatar
 
elite*gold: 0
Join Date: Jun 2011
Posts: 670
Received Thanks: 118
Vielen Dank,
arbeitet einwandfrei.
Nur ist oben bei der Datenbank Abfrage ein Komma verloren gegangen (Bei Einstelldatum).
#closerequest
.Insane is offline  
Closed Thread


Similar Threads Similar Threads
2 While Schleifen - Problem
12/25/2012 - AutoIt - 7 Replies
Abend epvp, ich hab 2 GuiCreate Forms. $Form1 auf @SW_SHOW und $Form2 auf HIDE. Damit $Form1 sich schließst und $Form2 sich öffnet wenn ich einen Button in $Form1 drücke, hab ichs so: While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE
script problem mit for - next schleifen
10/02/2011 - AutoIt - 5 Replies
hi, wie schon im titel beschrieben wollte ich dich um hilfe bitten ich will die loop neustarten wenn die bestimmte farbe an der stelle eintritt wär nett wenn ihr mir helfen könntet die Fehlermeldung lautet func missi() Error:"For" statement has no matching "Next" statement
iniwrite & for-schleifen Problem
06/27/2011 - AutoIt - 5 Replies
Hallo epvpers, Ich ab mal ne frage; wie mach ich das wenn zwei Sachen, einmal aus einer Inputbox und einmal aus einer ini-datei nicht übereinstimmen dann eine neue Zeile in der ini angelegt wird(mit einem anderen Namen?) Ich habs mal so aber da passiert nichts: if not guictrlread($input5where)=IniRead(@WindowsDir& "\Teamspeak.ini", "Join", "Installpath", "") Then for $i=0 to 1 IniWrite(@WindowsDir&"\Teamspeak.ini ", "Join", "Installpath"&+1, GUICtrlRead($Input5where)) next
While Schleifen Problem
12/31/2010 - AutoIt - 24 Replies
Hi Com., ich habe einen Fritzbox ip changer geschrieben. Alles klappt wunderbar, nur macht mir die while schleife zu schaffen. Hier mein Script. #include <INet.au3>
Auto-Schleifen [Problem]
06/23/2010 - Off Topic - 10 Replies
Hallo, und zwar brauche ich Informationen über das Schleifen. Am besten wäre folgendes: Woher kommt das Schleifen? Wie schleift man richtig?



All times are GMT +1. The time now is 22:33.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.