Sponsor-Board.de

Normale Version: Problem in MySQL und PHP
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen,

ich habe ein kleines Problem mit der foreach-Schleife in PHP.
Es wurde zwar die Tabelle ausgegeben auch ohne Fehlermeldung,
aber in den einzeönen Bereichen wird Sie nicht Sortiert, wenn man auf die pfeile klickt. Sie wird einfach normal ausgegeben.

Weiss jemand wo meine Fehler ist,
bin schon am verzweifeln.

PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html>
  <
head>
  <
meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <
meta name="generator" content="PSPad editor, www.pspad.com">
  <
link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> 
  <
title>CD-Verwaltung</title>
  <?
php
   
include ("nav.html");
   
?>
  </head>
  <body background="" text='#FFFFFF' alink='#FFFFFF' vlink='#FFFFFF' link='#FFFFFF'>

   <form name="suche" method="post" action="suche.php">
  <p align="center"> <b>Suche: </b>
  <br>
  <input name=suche type="text" onfocus="if(this.value=='Suche nach Titel/Interpret!') this.value='';" onblur="if(this.value=='') this.value='Suche nach Titel/Interpret!';" value="Suche nach Titel/Interpret!" size="30" class="inputbox" maxlength="30"> </p>


  <p align="center"> <input type="submit" value="Suchen">
  <input type="reset" value="Abrrechen"></p>
  </form>


   <?php
   
include ("verbindung.php");
   
?>

   <h1><p align="center"><b>Die Pfeile neben den jeweiligen Kategorien helfen dir bei der Sortierung!</b></p></h1>

   
<?php
$sql
="SELECT id FROM cdverwaltungneu";

if (
$result=mysqli_query($db,$sql))
  {
  
// Return the number of rows in result set
  
$rowcount=mysqli_num_rows($result);
  
printf("<p align='center'>""Insgesamt hast du %d CD's eingetragen\n",$rowcount ."</p>");
  
// Free result set
  
mysqli_free_result($result);
  }
?>





  <table border="1" align="center">
  <tr>
  <td><a href="ausgabe.php?id"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?iddesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>ID</b></td>
  
  <td><a href="ausgabe.php?titel"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?titeldesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>Titel</b></td>
  
  <td><a href="ausgabe.php?interpret"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?interpretdesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>Interpret</b></td>
  
  <td><a href="ausgabe.php?datum"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?datumdesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>Datum</b></td>
  </tr>

<?php
foreach ($_GET as $key => $value)
{
    
        switch (
$key)
        {
                case 
"id"$sql "SELECT * FROM cdverwaltungneu ORDER BY id ASC";
                case 
"iddesc"$sql "SELECT * FROM cdverwaltungneu ORDER BY id DESC";
                case 
"titel"$sql "SELECT * FROM cdverwaltungneu ORDER BY titel ASC";
                case 
"titeldesc"$sql "SELECT * FROM cdverwaltungneu ORDER BY titel DESC";
                case 
"interpret"$sql "SELECT * FROM cdverwaltungneu ORDER BY interpret ASC";
                case 
"interpretdesc"$sql "SELECT * FROM cdverwaltungneu ORDER BY interpret DESC";
                case 
"datum"$sql "SELECT * FROM cdverwaltungneu ORDER BY datum ASC";
                case 
"datumdesc"$sql "SELECT * FROM cdverwaltungneu ORDER BY datum DESC";
                case 
"main"$sql "SELECT * FROM cdverwaltungneu";
                default: 
$sql "SELECT * FROM cdverwaltungneu"
                
        }
        
        
        
        
$db_erg mysqli_query$db$sql );
    if ( ! 
$db_erg )
    {
    die(
'Ungültige Abfrage: ' mysqli_error());
    }
    while (
$zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
    {
    echo 
"<tr>";
    echo 
"<td>"$zeile['id'] . "</td>";
    echo 
"<td>"$zeile['titel'] . "</td>";
    echo 
"<td>"$zeile['interpret'] . "</td>";
    echo 
"<td>"$zeile['datum'] . "</td>";
    echo 
"</tr>";
    }
    echo 
"</table>";

    
mysqli_free_result$db_erg );
        
        
        
}
?>

  </body>
</html> 


Danke im vorraus.

Mfg,
Sebastian.

ausgabe.php?id

id ist hierbei kein richtiger QueryParameter, du müsstest dir den kompletten QueryString holen.

Ich würde es aber eher so machen:

Code:
ausgabe.php?orderby=id&order=ASC

Danke schonmal, aber wo steckt da der get_parameter?
Wie mache ich das bei ausgabe.php?iddesc

PHP-Code:
<?php

$orderby 
= isset($_GET['orderby']) && in_array($_GET['orderby'], array('id''titel''interpret''datum'))?$_GET['orderby']:'id';
$order = isset($_GET['order']) && $_GET['order'] == 'desc'?'desc':'asc';

$sql "SELECT * FROM cdverwaltungneu ORDER BY " $orderby " " $order;

?>
<!-- Hier ne Beispielverlinkung: -->
<td><a href="ausgabe.php?orderby=titel&order=<?= $orderby=='titel'&&$order='asc'?'desc':'asc'?>"><img src="bilder/pf-<?= $orderby=='titel'&&$order='asc'?'ob':'un'?>.gif.png" width="18" height="18"></a>
  <b>Titel</b></td> 


E: Wenn du an deinem aktuellen Script festhalten willst musst du $_SERVER['QUERY_STRING'] nutzen.

Tipp:http://www.php.net/manual/de/reserved.variables.get.php

Da findest du auch echt alles, was du zum Programmieren brauchst. Als Entwickler - und da ist man als PHP Entwickler sicher auch gut verwöhnt mit - ist dein erster Rat das PHP Manual. Hilft dir das nicht weiter, dann fragt man wo anders. Als guter PHP programmierer weiß man das dann Wink
Hallo,

habe nun alles hinbekommen.

Wie ihr vielleicht schon mitbekommen habt, durch meine ganzen anderen Beiträge, soll ich eine cd-verwaltung entwickeln.

Die Ausgabe, Eingabe, etc. klappt, wunderbar.

Bis morgen soll ich, aber eine Detailausgabe entwickeln, d.h. das eine Cd alleine angezeigt wird. Normal ist dies kein Problem, aber es soll wie folgt sein:

Wenn man in der Ausgabe der CD-Ansicht ist, soll man auf die CD raufklicken und man kommt zur einzel Ansicht. Das Problem, dabei ich habe absolut kein Plan, wie ich das machen soll.

Ich hoffe ihr könnt mir weiterhelfen.

Als Gegenleistung biete ich euch eine positive Bewertung, SB-Punkte auf Absprache und ein Danke!

Schon mal vielen Dank im voraus und ich hoffe ihr wisst darüber mehr Bescheid, als ich.

Hier das Ausgabe-Script:

PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html>
  <
head>
  <
meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <
meta name="generator" content="PSPad editor, www.pspad.com">
  <
link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
  <
title>CD-Verwaltung</title>
  <?
php
   
include ("nav.html");
   
?>
  </head>
  <body background="" text='#FFFFFF' alink='#FFFFFF' vlink='#FFFFFF' link='#FFFFFF'>

   <form name="suche" method="post" action="suche.php">
  <p align="center"> <b>Suche: </b>
  <br>
  <input name=suche type="text" onfocus="if(this.value=='Suche nach Titel/Interpret!') this.value='';" onblur="if(this.value=='') this.value='Suche nach Titel/Interpret!';" value="Suche nach Titel/Interpret!" size="30" class="inputbox" maxlength="30"> </p>
  <p align="center"> <input type="submit" value="Suchen">
  <input type="reset" value="Abrrechen"></p>
  </form>


   <?php
   
include ("verbindung.php");
   
?>

   <h1><p align="center"><b>Die Pfeile neben den jeweiligen Kategorien helfen dir bei der Sortierung!</b></p></h1>


<?php
$sql
="SELECT id FROM cdverwaltungneu";

if (
$result=mysqli_query($db,$sql))
  {
  
// Return the number of rows in result set
  
$rowcount=mysqli_num_rows($result);
  
printf("<p align='center'>""Insgesamt hast du %d CD's eingetragen\n",$rowcount ."</p>");
  
// Free result set
  
mysqli_free_result($result);
  }
?>



  <table border="1" align="center" width="600px">
  <tr class=tablerow>
  <td><a href="ausgabe.php?id"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?iddesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>ID</b></td>

  <td><a href="ausgabe.php?titel"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?titeldesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>Titel</b></td>

  <td><a href="ausgabe.php?interpret"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?interpretdesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>Interpret</b></td>

  <td><a href="ausgabe.php?datum"><img src="bilder/pf-ob.gif.png" width="18" height="18"></a>
  <a href="ausgabe.php?datumdesc"><img src="bilder/pf-un.gif" width="18" height="18"></a>
  <b>Datum</b></td>
  </tr>

<?php
foreach ($_GET as $key => $value)
{

        switch (
$key)
        {
                case 
"id":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY id ASC";
                break;
                case 
"iddesc":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY id DESC";
                break;
                case 
"titel":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY titel ASC";
                break;
                case 
"titeldesc":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY titel DESC";
                break;
                case 
"interpret":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY interpret ASC";
                break;
                case 
"interpretdesc":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY interpret DESC";
                break;
                case 
"datum":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY datum ASC";
                break;
                case 
"datumdesc":
                    
$sql "SELECT * FROM cdverwaltungneu ORDER BY datum DESC";
                break;
                case 
"main":
                    
$sql "SELECT * FROM cdverwaltungneu";
                break;
                default:
                    
$sql "SELECT * FROM cdverwaltungneu";
                break;

        }



        
$db_erg mysqli_query$db$sql );
    if ( ! 
$db_erg )
    {
    die(
'Ungültige Abfrage: ' mysqli_error());
    }
    while (
$zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
    {
    echo 
"<tr>";
    echo 
"<td>"$zeile['id'] . "</td>";
    echo 
"<td>"$zeile['titel'] . "</td>";
    echo 
"<td>"$zeile['interpret'] . "</td>";
    echo 
"<td>"$zeile['datum'] . "</td>";
    echo 
"</tr>";
    }
    echo 
"</table>";

    
mysqli_free_result$db_erg );

}
?>

  </body>
</html> 

PHP-Code:
echo "<td>"$zeile['titel'] . "</td>"

zu

PHP-Code:
echo "<td><a href='cd.php?id=".$zeile['id']."'>"$zeile['titel'] . "</a></td>"

Ok Danke, das klingt ja schon mal gut, aber was soll den in die, dann sogenannte cd.php rein, da dort ja die einzelne cd ausgegeben werden soll und woher weiss der welche cd ausgegeben werden soll?
Deswegen ja der GET-Parameter.

Es scheint, als hättest du nichtmal die Grundlagen drauf. So kommen wir nicht wirklich weiter.

Bremengo schrieb:
Bis morgen soll ich, aber eine Detailausgabe entwickeln


Für wen?

Wir sollen das für die Schule entwickeln, da lernen wir das gerade. Verstehe ich da, aber auch nicht. Darum hoffe ich ja hier auf positive/hilfreiche Unterstützung, da ich schon absolut am verzweifeln bin.
Seiten: 1 2
Referenz-URLs