hallo,
habe eine extension geschrieben mit denen daten aus einer anderen datenbank ausgelesen werden können und in typo3 angezeigt,
bekomme jetzt aber nach umzug auf einen neuen server (suse linux) immer einen fehler
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/typo3_src-3.6.2/t3lib/class.t3lib_db.php on line 689
hab das problem schon mal soweit eingeschränkt,
der fehler tritt genau in der zeile auf, in der ich die datenbanken in meiner extension wechsel
if (!mysql_select_db("stuttgart")) {
$content = "Kann mydbname nicht auswählen: " . mysql_error();
exit;
}
da es vorher einwandfrei funktioniert hatte, kann es was mit mysql rechten zu tun haben?
kenn mich mit mysql nicht so gut aus
danke
such doch einfach im forum nach deiner fehlermeldung...
also z.b. nach: mysql_fetch_assoc()
das is schon zigmal aufgetreten.
danke, das hilft mir weiter,
leider gehts dabei immer um tabellen die nicht exakt passen, das problem hab ich leider nicht, wäre ja mit einem compare erledigt,
ich kann keine db wechseln
HH schriebdanke, das hilft mir weiter,
leider gehts dabei immer um tabellen die nicht exakt passen, das problem hab ich leider nicht, wäre ja mit einem compare erledigt,
ich kann keine db wechseln
nö, es geht eigentlich immer um die cache tabellen (cache_pages, cache_pagesection), die geleert oder gelöscht und neu angelegt werden müssen.
probier das doch einfach mal.
nö, es geht eigentlich immer um die cache tabellen (cache_pages, cache_pagesection), die geleert oder gelöscht und neu angelegt werden müssen.
danke für die schnelle antwort, das wars leider auch nicht, hab die tabellen zuerst geleert, dann gelöscht,
dann wieder erstellt mit dem db analyzer,
immer noch der selbe fehler
😢
letzter versuch:
leere den ordner /typo3temp komplett (kannst du auch per klick im install-tool machen).
das hat mich auch schonbmal gerettet.
poste mal bitte die ganze funktion....
ansonsten mal die dämliche frage: existiert die db stuttgart auf deinem server schon?
ok, hier der code der extension
<?php
/***************************************************************
* Copyright notice
*
* This script is part of the Typo3 project. The Typo3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Plugin 'HSP Buchungsys.' for the 'hsp_stgt' extension.
*
* @author Harald Hochwald <hh@fastmovingbytes.com>
*/
require_once(PATH_tslib."class.tslib_pibase.php");
class tx_hspstgt_pi1 extends tslib_pibase {
var $prefixId = "tx_hspstgt_pi1"; // Same as class name
var $scriptRelPath = "pi1/class.tx_hspstgt_pi1.php"; // Path to this script relative to the extension dir.
var $extKey = "hsp_stgt"; // The extension key.
/**
* [Put your description here]
*/
function main($content,$conf) {
//////////////////////////////////////////////////////////////////////
// Hier gehts Los!!!
global $GLOBALS;
// Ermittelt die aktuelle Page ID, nur der Eintrag der Seite in Sportarten soll ausgelesen werden
$akt_pid = $GLOBALS["TSFE"]->id;
// Tabelle tt_content Feld sports auslesen, wo pid = akt_pid
$sql = "SELECT *
FROM tt_content
WHERE pid = $akt_pid AND deleted = 0 AND CType = 'hsp_stgt_pi1'";
$result = mysql_query($sql);
if (!$result) {
$content = "Anfrage ($sql) konnte nicht ausgeführt werden : " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
$content = "Keine Zeilen gefunden, nichts auszugeben, daher Abbruch";
exit;
}
// Solange eine Zeile mit Daten existiert, wird dies in dem
// assoziativen Array $row abgelegt.
$row = mysql_fetch_array($result);
$sportart = $row["tx_hspstgt_sports"];
//$row = mysql_fetch_row($result);
//$sportart = $row[0];
//Array für die Wochentage definieren
$day_ow = array("1" => "Mo",
"2" => "Di",
"3" => "Mi",
"4" => "Do",
"5" => "Fr",
"6" => "Sa");
//Einträge mit z.b. Eintrag Fussball aus dem Buchungssystem auswählen.
//Datenbank wählen
if (!@mysql_select_db("stuttgart2")) {
$content = "Kann mydbname nicht auswählen: " . mysql_error();
exit;
}
//Auslesen des aktiven Zeitruams aus Buchungsystabelle Zeitraum
$sql_akt = "SELECT * FROM zeitraum WHERE aktiv ='0001'";
$result_akt = mysql_query($sql_akt);
$row_akt = mysql_fetch_row($result_akt);
$aktiv_id = $row_akt[0];
//Sql Query um die Einträge aus der Tabelle sportstaetten zu lesen
$sql3 = "SELECT * FROM sportstaetten";
//Query an DB senden (spoertstaetten
$result3 = mysql_query($sql3);
while ($row3 = mysql_fetch_assoc($result3)) {
$location[$row3["sportstaette_id"]] = $row3["sportstaette_name"];
}
//SQL Query
$sql2 = "SELECT * FROM kurse WHERE sportart = '$sportart' AND aktiv='1' AND periode='$aktiv_id' ORDER BY tag1, uhrzeit1";
//Query an Datenbank senden
$result2 = mysql_query($sql2);
//Datenbank Fehler abfangen
if (!$result2) {
$content = "Anfrage ($sql2) konnte nicht ausgeführt werden : " . mysql_error();
exit;
}
//Keine Einträge unter der Sportart?!?
if (mysql_num_rows($result2) == 0) {
$content = "Keine Einträge gefunden! Keine Einträge mit dem Namen '$sportart' im HSP Buchungssystem vorhanden oder Eintrag in Typo3 falsch geschrieben?!?";
$fehler = "1";
//exit;
}
//Ausgabe Tabelle Sportarten
if($fehler != "1") {
$content = "<b><i>".$sportart."</i></b><br>";
$content .= "<table width='90%'>";
$color = array ("1" => "#f4f3af",
"2" => "fefee4");
$i=1;
$content .= "<tr bgcolor=#fefee4><td>Kursnr.</td><td>Tag</td><td>Uhrzeit</td><td>Details</td><td>Ort</td><td>Leitung</td><td>Status</td></tr>";
while ($row = mysql_fetch_assoc($result2)) {
$content .= "<tr bgcolor=$color[$i]><td>".$row["kursnr"]."</td>";
//mherere Termin
$content .= "<td>".$day_ow[$row["tag1"]];
if($row["tag2"]) $content .= "<br>".$day_ow[$row["tag2"]];
if($row["tag3"]) $content .= "<br>".$day_ow[$row["tag3"]];
if($row["tag4"]) $content .= "<br>".$day_ow[$row["tag4"]];
if($row["tag5"]) $content .= "<br>".$day_ow[$row["tag5"]];
$content .= "</td>";
//mehrere Uhrzeiten
$content .= "<td>".$row["uhrzeit1"];
if($row["uhrzeit2"]) $content.="<br>".$row["uhrzeit2"];
if($row["uhrzeit3"]) $content.="<br>".$row["uhrzeit3"];
if($row["uhrzeit4"]) $content.="<br>".$row["uhrzeit4"];
if($row["uhrzeit5"]) $content.="<br>".$row["uhrzeit5"];
$content .= "</td>";
$content .= "<td>".$row["details"]."</td>";
//mehrere Sportstätten
$content .= "<td>".$location[$row["sportstaette1"]];
if($row["sportstaette2"]) $content.="<br>".$location[$row["sportstaette2"]];
if($row["sportstaette3"]) $content.="<br>".$location[$row["sportstaette3"]];
if($row["sportstaette4"]) $content.="<br>".$location[$row["sportstaette4"]];
if($row["sportstaette5"]) $content.="<br>".$location[$row["sportstaette5"]];
$content .= "</td>";
$content .= "<td>".$row["kursleiter1"]."</td>";
//Prüfen ob noch plätze frei sind
$kursid = $row["kursid"];
if ($row["frei"] > 0) {
$content .= "<td><a href='https://129.69.227.68/hsp/cgi/anmeldung.fcgi?Kursid=$kursid'>Kurs buchen</a></td>";
}
//warteliste dann trotzdem link
elseif ($row["warteliste"] ==1) {
$content .= "<td><a href='https://129.69.227.68/hsp/cgi/anmeldung.fcgi?Kursid=$kursid'>zur Warteliste</a></td>";
}
else {
$content .= "<td>ausgebucht</td>";
}
$content .= "</tr>";
if ($i == 1) $i=2;
else $i=1;
}
$content .= "</table>";
}
//$content = "Hello World!!!";
//$content .= "<br><br>Die Seiten ID ist: ".$akt_pid."<br>UID: ".$akt_uid."<br>Die Sportart ist: ".$sportart."<br><br>";
return $content;
/////////////////////////////////////////////////////////////////////
//return "Hello World!<HR>
// Here is the TypoScript passed to the method:".
// t3lib_div::view_array($conf);
}
}
if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/hsp_stgt/pi1/class.tx_hspstgt_pi1.php"]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/hsp_stgt/pi1/class.tx_hspstgt_pi1.php"]);
}
?>
$sql = "SELECT *
FROM tt_content
WHERE pid = $akt_pid AND deleted = 0 AND CType = 'hsp_stgt_pi1'";
sollte schonmal
WHERE pid=".$akt_pid."AND deleted = 0...
heissen.
und warum steht bei deiner funktion das @ mit im !-statement und bei deinem post nicht?
😃
das @ steht deswegen drin weil ich in der zwischenzeit verschiedenes versucht habe, leider ohne erfolg,
was ich vielleicht vergessen habe zu sagen, das script lief schon, und läuft auch fast...d.h. die daten werden aus der externen datenbank ausgelesen und angezeigt, ich bekomme lediglich diesen datenbank fehler und seiteninhalte unterhalb dieses extension inhaltes (normaler typo3 inhalt) wird nicht mehr angezeigt.
so sieht zum beispiel dann so ne seite aus:
http://129.69.227.68/cms/index.php?id=31
außerdem hab ich folgendes interessante posting auf typo3.org gefunden
http://typo3.org/documentation/mailing-lists/user-list-archive/thread/35897/?tx_maillisttofaq_pi1%5Bsword%5D=mysql_fetch_assoc%28%29&tx_maillisttofaq_pi1%5Banswered_only%5D=0&tx_maillisttofaq_pi1%5Bmode%5D=1
im grunde steh da drin, dass wird eine erneute verbindung zu einer anderen datenbank aufgenommen, typo3 danach die rechte dieser letzten verbindung übernimmt, die reichen dann wohl typo3 nicht mehr aus....ganz verstanden hab ichd as allerdings nicht....
HABS!!!!! 😃 😃 😃
sowas wäre vielleicht tatsächlich was für die FAQ, egal so funktionierts, bevor ich die Datenbank wechsle, stelle ich eine neue verbindung her.
die typo3 verbindung scheint dann irgendwie erhalten zu bleiben.
//WORKAROUND
$myLink = @mysql_connect("dbhost", "dbuser","dbpasswort");
//Einträge mit z.b. Eintrag Fussball aus dem Buchungssystem auswählen.
//Datenbank wählen
if (!mysql_select_db("stuttgart2")) {
$content = "Kann mydbname nicht auswählen: " . mysql_error();
exit;
}
keine fehler mehr, alles funktioniert perfekt,
trotzdem vielen dank an euch!!!!