php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.08.2006, 17:40  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard Problem mit while schleife

Hallo,
ich habe ein Script geschrieben mit dem man bilder auf einen server hochladen kann. Die Bilder können alle auf einer seite angezeigt werden, beim hochladen kann man sich (schachbrettartig) eine Position für sein Bild aussuchen, jetzt hab ich aber das Problem, dass bei der Ausgabe mit einer while die schleife nur so lange läuft wie datensätze gefunden wurden - jedoch kann es ja durchaus passieren, dass auf einer Stelle kein Bild hin soll darunter aber wieder eins stehen muss.

Hier mal der Code der nicht funktionieren kann:

Code:
$result = mysql_query($query) or die(mysql_error());
		$counter = 1;
			while ($row = mysql_fetch_array($result))
				{
				if ($row["Zeile"] == $counter)
					{
					echo("<tr><td>[img]".$row["Pfad"]."[/img]</td></tr>");
					$counter = $counter +1;
					}
				else
					{
					echo("<tr><td width='250' height='250'>[img]squares/spacer.gif[/img]</td></tr>");
					$counter = $counter +1;
					}
				}
zur besseren Verständnis vll noch ein
Link zu meiner bisherigen Arbeit
obi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.08.2006, 18:38  
Neuer Benutzer
 
Registriert seit: 13.08.2005
Beiträge: 18
24bits
24bits eine Nachricht über ICQ schicken 24bits eine Nachricht über AIM schicken 24bits eine Nachricht über MSN schicken 24bits eine Nachricht über Yahoo! schicken
Standard

zb als abfrage

$query = SELECT * FROM tabelle WHERE bild_vorhanden != NULL;
24bits ist offline  
Alt 31.08.2006, 00:25  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

so hab ich das nicht gemeint.
also nochmal die bilder sollen alle untereinander gestellt werden, es können aber auch Hohlräume auftreten, in diesem Fall soll dann einfach Platz gelassen werden, wenn aber so ein Hohlraum auftritt hat die while schleife schon ein bild zu viel ausgelesen.
Bsp.: es sind 3 bilder in der Datenbank
es sind 5 Felder untereinander, Feld 2 und 3 sollen leer sein, wenn ich jetzt versuche die Felder mit einer while Schleife zu füllen wird nur Bild 1 angezeigt, 2 und 3 sind onnehin leer, 4 und 5 wird gar nicht durchgegangen, weil ja die while schleife nur solange geht wie das Ergebnisarray groß ist (3x eben).
obi ist offline  
Alt 31.08.2006, 01:28  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Du musst die Schleife zweimal durchlaufen. Beim ersten mal kopierst du den jeweiligen Datensatz (Bildinfos) in eine Matrix und beim zweiten mal gehst du über jedes Feld deiner Matrix und fügst ggf. das Bild ein.

PHP-Code:
$aMatrix = array();

while(
$Record mysql_fetch_object($rResult))
    
$aMatrix[$Record->row][$Record->col] = $Record->id;

echo 
"<table class=\"aadlsvgf\">\n";

for(
$i=0$i<=5$i++) {
    echo 
"\t<tr>\n";
        for(
$j=0$j<=5$j++) {
            
$sImgSource = isset($aMatrix[$i][$j]) ? $aMatrix[$i][$j] : 'blank.png';
            
printf("\t\t<td><img src=\"img/%s\" /></td>\n"$sImgSource);
        }
    echo 
"\t</tr>\n";
}
echo 
"</table>\n"
Habs jetzt nicht getestet, aber so in etwa müsste das hinhauen.

Basti
Basti ist offline  
Alt 31.08.2006, 12:45  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

das sieht gut aus, leider steig ich bei dieser Zeile nicht ganz durch, wenn du da noch bitte ein paar klärende Worte finden könntest:
Ich versteh die Verkürzung nicht, vermute aber, wenn das Element aMatrix[$i][$j] nicht existent ist wird dafür blank.png eingesetzt oder so ähnlich.

PHP-Code:
 $sImgSource = isset($aMatrix[$i][$j]) ? $aMatrix[$i][$j] : 'blank.png'
PS
Sind die Klammern beim while nicht nötig?
obi ist offline  
Alt 31.08.2006, 13:01  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von obi
das sieht gut aus, leider steig ich bei dieser Zeile nicht ganz durch, wenn du da noch bitte ein paar klärende Worte finden könntest:
Ich versteh die Verkürzung nicht, vermute aber, wenn das Element aMatrix[$i][$j] nicht existent ist wird dafür blank.png eingesetzt oder so ähnlich.

PHP-Code:
 $sImgSource = isset($aMatrix[$i][$j]) ? $aMatrix[$i][$j] : 'blank.png'
?: ist ein Operator, dessen Wert von der Bedingung vor dem ? anhängt.
Ist sie erfüllt, wird der Wert vor dem : als Wert des Ausdrucks verwendet, andernfalls der Wert hinter dem : .

Du solltest im Manual mal bei den Grundlagen zu Operatoren weitere Details nachlesen.

Zitat:
Zitat von obi
PS
Sind die Klammern beim while nicht nötig?
Nach if, else, while, do ist exakt eine Anweisung erlaubt.
Diese Anweisung kann auch ein Block sein, der in { } eingeschlossen ist.

Wenn man also ohnehin nur eine einzelne Anweisung braucht, sind die Klammern überflüssig.
Wenn man sie aber weglässt, kann man schnell mal rein fallen, wenn man dann doch noch eine Zeile hinzufügen will und vergisst, dass danach die Klammern notwendig sind.

Sowas dürfte im Handbuch bei den Grundlagen zu Kontrollstrukturen zu finden sein.
Auch da wäre ein Blick sicher nicht verkehrt.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 31.08.2006, 13:40  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

super, jetzt funktionierts, danke!
obi ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
While schleife mit Datenbank in ein Dropdown Feld (Umlaut Problem) kintaro PHP Tipps 2008 6 28.08.2007 19:11
While schleife mit 2 Argumenten ? PHP Tipps 2006 5 09.03.2006 15:15
while Schleife gibt nicht alle Daten aus PHP Tipps 2006 2 12.01.2006 19:24
Problem mit while PHP Tipps 2007 2 23.11.2005 13:06
Feintuning einer While Schleife LA-Finest PHP Tipps 2007 2 14.11.2005 14:40
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
Problem mit while und insert into PHP Tipps 2005-2 6 15.08.2005 19:29
while Schleife nur 5 mal durchlaufen lassen MatthiasNI PHP Tipps 2005-2 5 30.07.2005 11:21
While Schleife und Variablen Datenbanken 1 25.04.2005 08:57
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
While Schleife mit einem Problem PHP Tipps 2005 16 12.01.2005 21:55
Problem mit ner schleife PHP Tipps 2004-2 3 24.11.2004 10:50
Problem mit links in Schleife web2 PHP Tipps 2004-2 2 23.11.2004 12:58
Zeilenumbrüche in while schleife? stefan-miti PHP Tipps 2004 1 05.10.2004 18:39
Array mit while Schleife auslesen PHP Tipps 2004 7 26.06.2004 19:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
while 3x durchlaufen lassen php, unternander while schleife

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.