• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit switch

Furien

Mitglied
Also ich habe folgenden switch:
PHP:
  switch($_GET['sprite'])
                    {
                        case $row['name']:
                            echo '<h1>';
                            echo $row['name'];
                            echo ' von ';
                            echo $row['macher'];
                            echo '<p>Bestehend aus: '.$row["pokemon"]."<br />";
                            echo '<p>Beschreibung: '.$row["beschreibung"]."<br />";
                            echo '<p>Bild: <img src=\"'.$row["src"]."\" /><br />";
                          break;



                  }
Das funktioniert nicht. Wenn ich index.php?page=sprites?sprite=xxx eingebe, dann kommt nur die Home Seite.
Woran könnt das liegen?
kommt die Seite, die davor angezeigt wird nur
 
Werbung:
Natürlich weiß ich nicht, was in $row so alles drin steckt, aber wenn du die Seite wirklich so (index.php?page=sprites?sprite=xxx) aufgerufen hast, dann liegt da schon mal ein Fehler. Weitere Parameter hängt man per & an: index.php?page=sprites&sprite=xxx

Gruß,
Björn
 
Okay. Dann mache ich den Link so: index.php?page=sprites&sprite=Pisa
und es wird nur das default angezeigt
Hier mein ganzes script:

PHP:
  <?php
                include('db.php');

            $abfrage = " SELECT name,macher,beschreibung,pokemon,src FROM `sprites` LIMIT 0 , 30 ";
                $ergebnis = mysql_query($abfrage);
                for ($i = 1; $row = mysql_fetch_array($ergebnis); $i++) {
                    echo "<a href=\"index.php?page=sprites&sprite=";
                    echo $row['name'];
                    echo "\">";
                    echo $row['name'];
                    echo "</a>";
                    echo " von ";
                    echo $row['macher'];
                    echo "<br />";

                }

                 switch($_GET['sprite'])
                    {
                        case $row['name']:
                            echo '<h1>';
                            echo $row['name'];
                            echo ' von ';
                            echo $row['macher'];
                            echo '</h1>';
                            echo 'Bestehend aus: '.$row["pokemon"].'<br />';
                            echo 'Beschreibung: '.$row["beschreibung"].'<br />';
                            echo 'Bild: <img src=\'';
                            echo $row["src"];
                            echo '\" />';
                            echo '<br />';

                          break;
                          default:
                             echo "<p>Hier wird das Sprite, das du anklickst, angezeigt.</p>";
                           break;



                  }





            ?>
Ich hoffe das hilft die bei der Lösung.

EDIT Ich habe mal auf error_reporting E_ALL umgestellt und jetzt bekomme ich folgende Notiz: Notice: Undefined index: sprite in /users/furien/www/sprites.php on line 20
was soll das heißen?

EDIT2 Ich habe es nun mit einer for Schleife gemacht. Aber es wird nur das erste Sprite angezeigt.
Script:
PHP:
       <?php
            error_reporting(E_ALL);

                include('db.php');

            $abfrage = " SELECT name,macher,beschreibung,pokemon,src FROM `sprites` LIMIT 0 , 30 ";
                $ergebnis = mysql_query($abfrage);
                for ($i = 1; $row = mysql_fetch_array($ergebnis); $i++) {
                    echo "<a href=\"index.php?page=sprites&sprite=";
                    echo $row['name'];
                    echo "\">";
                    echo $row['name'];
                    echo "</a>";
                    echo " von ";
                    echo $row['macher'];
                    echo "<br />";

                }


                 $abfrage = " SELECT name,macher,beschreibung,pokemon,src FROM `sprites` LIMIT 0 , 30 ";
                 $ergebnis = mysql_query($abfrage);
                 for ($i = 1; $row = mysql_fetch_array($ergebnis); $i++) {

                     $name = $row['name'];
                     switch($_GET['sprite'])
                        {
                             case $name:
                                echo '<h1>';
                                echo $row['name'];
                                echo ' von ';
                                echo $row['macher'];
                                echo '</h1>';
                                echo 'Bestehend aus: '.$row["pokemon"].'<br />';
                                echo 'Beschreibung: '.$row["beschreibung"].'<br />';
                                echo 'Bild: <img src=\'';
                                echo $row["src"];
                                echo '\" />';
                                echo '<br />';
                             break;
                             default:
                                 echo "<br /><p>Hier wird das Sprite, das du anklickst, angezeigt.</p>";
                               break;

                     }

                 break;
                 }





            ?>
 
Zuletzt bearbeitet:
Werbung:
EDIT Ich habe mal auf error_reporting E_ALL umgestellt und jetzt bekomme ich folgende Notiz: Notice: Undefined index: sprite in /users/furien/www/sprites.php on line 20
was soll das heißen?
Das heißt, dass Du in Zeile 20 (keine Ahnung welche das ist) mit einem Element aus einem assoziativen Array arbeitest, dessen Index-Name sprite ist. Es gibt aber einen solchen Index nicht. Lass Dir mal das Array mit der print_r()-funktion ausgeben.
EDIT2 Ich habe es nun mit einer for Schleife gemacht. Aber es wird nur das erste Sprite angezeigt.
Das wundert mich nicht, die for-Schleife macht genau das was Du ihm sagst. Der Aufbau einer for-Schleife ist folgender:
for (Startwert, Bedingung, Zähler) Ein for-Schleife wird so oft durchlaufen, bis die Bedingung war ist. Die Zuweisung liefert immer wahr zurück, solange ein Satz in der DB gefunden wurde. An dieser Stelle solltest Du eine while-Schleife einsetzen.
PHP:
 while ($row = mysql_fetch_array($ergebnis))
Gruß thuemmy
 
Zurück
Oben