Zur Navigation

2 Probleme mit php [2]

11 rattlesnake

So, die id wird jetzt übergeben, leider zeigt mir das Programm gar nichts an, wenn ich auf den Link klicke. Scheint als wäre die Abfrage falsch? Oder die id wird nicht richtig eingelesen...

Hier der Code...

<?php
  include "config.php";

  mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_PASSWORT);
  mysql_select_db(MYSQL_DATENBANK);

  $id = (int) $_GET['id'];
  $sqlab = "SELECET * FROM $Tabelle WHERE id = ' . $id . '";
  $Daten = mysql_query($sqlab);
  while ($Datensatz = mysql_fetch_assoc($Daten))
  {
    echo "<h3>" . $Datensatz["Titel"] . "</h3>\n";
    echo "<p>" . $Datensatz["Datum"] . "</p>\n";
    echo "<p>" . nl2br($Datensatz["Eintrag"]) . "</p>\n";
  }
?>

hm...

22.05.2007 21:37

12 Jörg Kruse

Sorry, den Fehler mit den Single Quotes hab ich da wohl reingehaue ;) so solte es korrekt sein

$sqlab = "SELECT * FROM $Tabelle WHERE id = $id";

22.05.2007 21:44

13 rattlesnake

Jetzt klappt es auch, schönen Dank. :)

22.05.2007 22:10

14 rattlesnake

Das mit dem Kürzen klappt leider noch nicht ganz:

<?php
  include "config.php";

  mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_PASSWORT);
  mysql_select_db(MYSQL_DATENBANK);

  $sqlab = "SELECT Titel, Datum, SUBSTR(Eintrag, 0, 50) FROM $Tabelle ORDER BY Datum DESC LIMIT 5";
  $Daten = mysql_query($sqlab);
  while ($Datensatz = mysql_fetch_assoc($Daten))
  {
    echo "<h3>" . $Datzensatz["Titel"] . "</h3>\n";
    echo "<p>" . $Datensatz["Datum"] . "</p>\n";
    echo "<p>" . nl2br($Datensatz["Eintrag"]) . "</p>\n";
    echo "<a href=\"einzelner_eintrag.php?id=" . $Datensatz["id"] . "\">Weiterlesen...</a>\n";
  }
?>

...gibt folgenden Fehler:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/web284/html/phat-blog/index.php on line 28

23.05.2007 06:49

15 Jörg Kruse

Das zweite Argument von SUBSTR sollte 1 sein, nicht 0

Zitat von MySQL Manual
If len is less than 1, the result is the empty string.

Die Datenbank zählt hier anders als z.B. bei PHP (welches bei substr() mit 0 beginnt)

23.05.2007 07:19

16 rattlesnake

Leider klappt das mit dem Kürzen trotzdem nicht, gleicher Fehler.

28.05.2007 12:10

17 Jörg Kruse

Lass dir mal (nach Zeile 28) den MySQL-Error ausgeben:

echo mysql_error();

28.05.2007 12:47

18 Rudy

ich würde zugleich eine zentralisierte Funktion für queries einführen. Eine einfache und effektive Funktionscombi, die ich gerne verwende, ist folgende:

error_reporting(E_ALL);
define('DEBUG', false);

$conn = mysql_connect('localhost', 'root', 'root') or die('Unable to connect to database : '.mysql_error());
mysql_select_db('localdb', $conn);

function query($query) {
  global $conn;
  $res = mysql_query($query, $conn);
  if (mysql_errno($conn)) {
    die('MySQL-Error on '.$_SERVER['SERVERNAME'].':'.mysql_error($conn).'\n'.htmlspecialchars($query).'\n\n');
  }
  if (DEBUG) echo $query."\n";
  return $res;
}

function qresult($query, $default = NULL) {
  $res = query($query);
  if (@mysql_num_rows($res) > 0) {
    return mysql_result($res, 0, 0);
  } else {
    return $default;
  }
}


function realescape($value, $quote = false) {
  global $conn;
  return (!$quote) ? mysql_real_escape_string($value, $conn) : "'".mysql_real_escape_string($value, $conn)."'"; 
}

function slash($value, $quote = false) {
  return (!$quote) ? ((!get_magic_quotes_gpc()) ? addslashes($content) : $content) : ((!get_magic_quotes_gpc()) ? "'".addslashes($content)."'" : "'".$content."'");
}

function exists($table, $where) {
  if (strlen($where)) $where = ' WHERE '. $where;
  $res = query('SELECT COUNT(*) FROM '.$table.$where);
  return (mysql_result($res, 0, 0) > 0);
}

function insertid() {
  global $conn;
  return mysql_insert_id($conn);
}

Sie enthält auch einen einfachen Debug und zeigt auftretende Fehler sofort an.

28.05.2007 15:44

19 rattlesnake

puh. Das ist mir für den Anfang zu viel. Ich habe mir eine andere Lösung für dieses Problems gesucht. Und zwar gebe ich jetzt auf der Startseite einfach weniger Datensätze aus, sodass ich diese nicht Kürzen muss. Trotzdem vielen Dank für die Hilfe!!
Ich denke in nächster Zeit werde ich noch öfters mal nachfragen, wegen anderen Dingen. :)

29.05.2007 13:39

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]