PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Whileschleifen Problem (http://www.selfphp.de/forum/showthread.php?t=9923)

Sarah19 05.03.2005 23:17:46

Whileschleifen Problem
 
Hi Forum ->Cody und Xabbuh ;)

Habe mal wieder eine Frage bezueglich der Whileschleife, und zwar lasse ich ueber folgende Schleife den Inhalt der Db ausgeben
PHP-Code:

<?php
        $result 
mysql_query("SELECT * FROM `produkt` WHERE motorrad='Aprilia' 
        ORDER BY artikel, motorrad, typ"
);
    while (
$row mysql_fetch_array($result)) 
        {
        echo 
htmlspecialchars($row['artikel']); echo '&nbsp;';
        echo 
'<a href="../zeige_artikel.php?fid='.$row['pid'].'">';
        echo 
htmlspecialchars($row['motorrad']); echo '&nbsp;';
        echo 
htmlspecialchars($row['typ']); echo '&nbsp;';
        echo 
'</a><br>';
        }
        
        
?>

Jetzt wuerde ich gerne, dass nach sobald ein neuer Name fuer Artikel erscheint ein <br> eingebaut wird. Weiss aber nicht, wie ich dies verwirklichen kann.

Danke
Sarah

wolles 05.03.2005 23:30:28

AW: Whileschleifen Problem
 
hi,

Vielleicht versteh ich's ja nicht ganz richtig, aber tut's das
PHP-Code:

echo"</a><br>" 

am Ende nicht schon?
Oder wo soll der Zeilenumbruch genau sein?

xabbuh 05.03.2005 23:46:20

AW: Whileschleifen Problem
 
Ich muss mich da wolles anschließen. Leider habe ich nicht wirklich verstanden, was du jetzt genau möchtest. Vielleicht könntest du dein Problem ja mal an einem Beispiel näher erläutern.
Außerdem wäre [func]htmlentities()[/func] statt [func]htmlspecialchars()[/func] in deinem Fall wohl geeigneter.

Sarah19 06.03.2005 00:17:55

AW: Whileschleifen Problem
 
Sorry wenn ich mich undeutlich ausgedrueckt habe.
Also in der DB sind sagen wir mal 10 Artikel. Drei haben in der Spalte "artikel" A, 2 haben B und 5 C. Dabei werden die dann aber noch spezielisiert, in anderen Spalten, quasie als 1,2,3,4,5.
Heisst also dass ich in der DB folgende Artikel habe A1, A2, A3 und dann B1, B2, und mit C das selbe halt nur bis C5.

Nun moechte ich gerne, dass wenn der "artikel" sich aendert ein zusaetliches <br> eingefuehrt wird, so dass es uebersichtlicher ist.

Hoffe ihr versteht es. Falls nicht, dann geht mal hier rauf und dann solltet ihr es sehen.

Danke

wolles 06.03.2005 00:28:24

AW: Whileschleifen Problem
 
Ok, verstanden.

PHP-Code:

$var="";
while (
$row mysql_fetch_array($result)) 
        {
        if (
$row'artikel']!=$var) echo "<br>";
        echo 
htmlspecialchars($row['artikel']); echo '&nbsp;'
        echo 
'<a href="../zeige_artikel.php?fid='.$row['pid'].'">'
        echo 
htmlspecialchars($row['motorrad']); echo '&nbsp;'
        echo 
htmlspecialchars($row['typ']); echo '&nbsp;'
        echo 
'</a><br>';
        
$var$row['artikel'];
        } 

Vielleicht musst Du noch die htmlspecialchars mit reinnehmen.
Wenn jetzt das erste <br> weg soll, müsste man den ersten Artikelnamen wissen.

xabbuh 06.03.2005 00:29:14

AW: Whileschleifen Problem
 
Speicher einfach bei jedem Durchlauf, den aktuellen Wert in einer Variablen und überprüfe, ob sich dieser Wert ändert:
PHP-Code:

<?php
    $i 
0;
    while (
$row mysql_fetch_array($result)) {
        echo 
htmlspecialchars($row['artikel']); echo '&nbsp;';
        echo 
'<a href="../zeige_artikel.php?fid='.$row['pid'].'">';
        echo 
htmlspecialchars($row['motorrad']); echo '&nbsp;';
        echo 
htmlspecialchars($row['typ']); echo '&nbsp;';
        echo 
'</a><br>';

        if(
$row['artikel'] != $artikelold && $i 0)
            echo 
'<br>';

        
$artikelold $row['artikel'];
        
$i++;
    } 
?>


wolles 06.03.2005 00:42:46

AW: Whileschleifen Problem
 
Ich glaub, du musst noch die Bedingung umsetzen um keine Fehlermeldung beim ersten Durchlauf zu erhalten:

PHP-Code:

if($i && $row['artikel'] != $artikelold

Wenn ich mich recht entsinne wird nach nicht Eintreten der 1.Bedingung abgebrochen.

Sarah19 06.03.2005 00:44:43

AW: Whileschleifen Problem
 
Danke,
es ist aber noch ein kleiner Fehler drin.
sie Link vom Posting vorher. Es wird erst nach dem 1.neuen Wort ein Zeilenumbruch gemacht, anstatt noch dem letzten Artikel mit dem gleichen eintrag in "artikel"

Danke
*kuss* Sarah

|Coding 06.03.2005 00:47:59

AW: Whileschleifen Problem
 
Zitat:

Zitat von Sarah19
Hi Forum ->Cody und Xabbuh ;)

who the fuck is Cody? o_O
ich dachte eigentlich immer in kenne die nicks meiner schützlinge... *g*

ach noch was. ich habe in den letzten tagen intensiv benchmarks mit verschiedenen funktionen durchgeführt (zum vergleich halt :)), dabei auch unteranderem die schleifen.

jetzt möchte ich doch jedem nahe legen, wann immer möglich die foreach-schleife zu nehmen, weil diese rund 50% schneller als for-/while-schleifen sind. bei wenigen durchläufen ist das schnurz piep egal welche, aber wenn es dann mehr als 100-150 werden (oder werden können) dann wäre ein umstieg durchaus sinnvoll. ist aber rein aus performance gründen gemeint...

wolles 06.03.2005 00:56:37

AW: Whileschleifen Problem
 
@Coding:
Gut zu wissen.(braucht man so was auch für Algorithmen ;)
Ich hoffe, daß die Leute auch irgendwann mal 100-150 Artikel bei mir in den Warenkorb legen und die bestellen:)


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:37:23 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.