Newsscript

Hallo,

ich lese mit folgendem Script:

[code]<?
include(“inc/mysql.inc.php”);

$query = “SELECT * FROM test-t1.news”;
$sql = mysql_query($query);

while($ds = mysql_fetch_object($sql)) {
$id = $ds -> id;
$ueberschrift = $ds -> ueberschrift;
$nachricht = $ds -> nachricht;
$datum = $ds -> datum;
$autor = $ds -> autor;

echo “$ueberschrift”;
echo “$nachricht”;
echo “Von $autor am $datum”;
echo “
”;
}
mysql_close($dz);
?>[/code]

die News aus der DB.

Jetzt sind die News jedoch vom Datum her vom ältersten zum neuesten gelistet, dh die älterste News oben, das müsste man ja (durch die id) mit ganz einfacher Anweisung umkehren können:

Aus $query = "SELECT * FROM `test-t1`.`news`";
mach $query = "SELECT * FROM `test-t1`.`news` ORDER BY DESC id";

Wenn ich das aber so mache, gibt er mir folgenden SQL Fehler aus, den ich leider nich nachvollziehen kann:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in E:\xampplite\htdocs\site\id_home.php on line 7

Wäre nett wenn mir jmd erklären könnte was ich falsch mache.
Bin gerade dabei MySQL und PHP zu erlernen.

MfG, andi

probier mal

ORDER BY id "DESC"

Geht.

Vielen Dank…

Hatte das immer anderst in Erinnerung, das DESC vorgestellt wird, dem is aber anscheinend nicht so.

MfG, andi

DESC muss in Anführungszeichen!!!

muss es nich :wink:
also es geht zumindest ohne

das ganze sieht bei mir jez so aus

$query = “SELECT * FROM test-t1.news ORDER BY id DESC”;

So nochma was

Jez gehts ums löschen und ich erhalte nur eine leere Seite, warum??

<?
$action = $_GET['action'];
$id = $_GET['id'];

if (empty($action) && empty($id)) {
	include("inc/mysql.inc.php");

	$query = "SELECT id, ueberschrift FROM `test-t1`.`news` ORDER BY id DESC";
	$sql = mysql_query($query);

	while($ds = mysql_fetch_object($sql)) {
		$id = $ds -> id;
		$ueberschrift = $ds -> ueberschrift;

	echo "<table>";
	echo "	<tr>";
	echo "		<td height=\"25\"><div id=\"content2\">$ueberschrift</div></td>";
	echo "		<td><form action=\"\" method=\"get\">";
	echo "				<input type=\"submit\" name=\"action\" value=\"edit\">";
	echo "				<input type=\"submit\" name=\"action\" value=\"del\">";
	echo "				<input type=\"hidden\" name=\"id\" value=\"$id\">";
	echo "		</form></td>";
	echo "	</tr>";
	echo "</table>";
	}
	mysql_close($dz);
} elseif ($action == "del") {
	include("inc/mysql.inc.php");
	$query = "DELETE FROM `test-t1`.`news` WHERE id = $id";
	$dummy = mysql_query($query);
	echo "Die News wurde erfolgreich aus der Datenbank gelöscht.";
	echo "<br />";
	echo "<a href=\"#\">back</a>";
	mysql_close($dz);
} elseif ($action == "edit") {
	//hier folgt der code zum editieren
}
?>

Eigentlich dürften doch am Anfang die Variablen id und action nicht exestieren und somit der erste teil ausgeführt werden
dann erscheinen alle news mit edit und del button dahinter

Nun wähle ich eine action (del oder edit)
und das script ruft sich selbst auf

nun exestieren id und action und es müsste entweder der edit oder del teil ausgeführt werden

warum erhalte ich nur eine weiße seite?

wär nett wenn sich jmd meldet

mfg, andi

error_reporting(E_ALL);

kann nie schaden…

Außerdem rate ich dir zu dieser Schreibweise:

switch($_GET["action"])
{
  case "del":
      do_something();
      break;
  case "edit":
      do_something();
      break;
  default:
     do_something();
     break;
}

errror reporting all spuckt

Notice: Undefined index: action in E:\xampplite\htdocs\site\id_bearb.php on line 3

aus, damit kann ich jedoch nichts anfangen, vllt weißt du was

ja switch wär ne möglichkeit mal schauen

if(isset($_GET["action"]
   $action = $_GET['action'];
else
   $action=NULL;

oder:

$action = (isset($_GET['action'])) ? $_GET['action'] : NULL;

id ist gesetzt, action aber nicht. Im Klartext, der erste if-Zweig wird nie ausgeführt, da die Bedingung lautet, dass id und action leer sind.

Da action nicht gesetzt ist, also weder „del“ noch „edit“ ist, werden die elseif-Zweige auch nicht ausgeführt - also gar nichts.

thx @ michi

ja aber id is ja auch nich gesetzt oder?

Das gleiche nochmal in blau…

also momentan hab ichs jez so

stimmt das soweit?

[code]<?
error_reporting(E_ALL);

if(isset($_GET[“action”]))
$action = $_GET[‘action’];
else
$action=NULL;
$id = $_GET[‘id’];

switch($action) {
case NULL:
include(“inc/mysql.inc.php”);

	$query = "SELECT id, ueberschrift FROM `test-t1`.`news` ORDER BY id DESC";
	$sql = mysql_query($query);

	while($ds = mysql_fetch_object($sql)) {
	   $id = $ds -> id;
	   $ueberschrift = $ds -> ueberschrift;

	echo "<table>";
	echo "   <tr>";
	echo "      <td height=\"25\"><div id=\"content2\">$ueberschrift</div></td>";
	echo "      <td><form action=\"\" method=\"get\">";
	echo "            <input type=\"submit\" name=\"action\" value=\"edit\">";
	echo "            <input type=\"submit\" name=\"action\" value=\"del\">";
	echo "            <input type=\"hidden\" name=\"id\" value=\"$id\">";
	echo "      </form></td>";
	echo "   </tr>";
	echo "</table>";
	}
	mysql_close($dz);
	break;
case "del":
	include("inc/mysql.inc.php");
	$query = "DELETE FROM `test-t1`.`news` WHERE id = $id";
	$dummy = mysql_query($query);
	echo "Die News wurde erfolgreich aus der Datenbank gelöscht.";
	echo "<br />";
	echo "<a href=\"#\">back</a>";
	mysql_close($dz);
	break;
case "edit":
	//hier folgt der code zum editieren

}
?>[/code]