Seite 1 von 1

Mehrsprachigkeit für Terminanzeige ?

Verfasst: Mo 21. Apr 2003, 00:07
von billy
Ich habe mich versucht mit meinem PHP-Halbwissen das Modul Terminanzeige mehrsprachig zu bekommen. Leider ohne Erfolg. Ich vermute, dass die Variable $lang bei Termineingabe in der Datenbank gespeichert werden muß (habe ich mit hiddenfield probiert und als Feld in SQL-Tabelle Con_events erweitert). Anschließend bei der Ausgabe geprüft werden muß ob $lang identisch ist mit Betrachter.
Bin leider nicht der PHP-Crack. Wenn jemand eine Lösung hast, wäre ich sehr dankbar.
Viele Grüsse
Billy

Lösung gefunden

Verfasst: Mo 21. Apr 2003, 01:26
von billy
Hier die Lösung:

#
# Tabellenstruktur für Tabelle `con_events`
#

CREATE TABLE con_events (
id int(11) NOT NULL auto_increment,
titel varchar(50) NOT NULL default '',
datum varchar(14) NOT NULL default '',
desc text NOT NULL,
ort varchar(50) default NULL,
online tinyint(1) NOT NULL default '1',
url varchar(50) default NULL,
language varchar(10) NOT NULL default '',
datum2 varchar(14) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

SQL-CODE für DB:

OUTPUT:

$meineseite=$auth->url();


//wenn "online" als aktion übergeben wird und wir noch im edit-modus sind

if (($online > -1) && $perm->have_perm("admin")) {
$sql = "UPDATE `con_events` SET online=".$online." WHERE id='".$eventid."'";
//echo $sql;
$db->query($sql);
}

if (($delete) && $perm->have_perm("admin")) {
$sql = " DELETE FROM `con_events` WHERE `id` = '".$eventid."' AND online='0'";
//echo $sql;
$db->query($sql);
}

//neuer eintrag

if ($send && $perm->have_perm("admin")) {
$datum1 = str_replace(".", "-", $datum1);
$datum1 = str_replace("/", "-", $datum1);
$datum2 = str_replace(".", "-", $datum2);
$datum2 = str_replace("/", "-", $datum2);
$uhrzeit = str_replace(".", ":", $uhrzeit);
$uhrzeit = str_replace("-", ":", $uhrzeit);

$arr = split('-',$datum1);
$date1 = sprintf("%04d",$arr[2]).sprintf("%02d",$arr[1]).sprintf("%02d",$arr[0]);
$arr = split(":",$uhrzeit);
$date1 .= sprintf("%02d",$arr[0]).sprintf("%02d",$arr[1])."00";
$arr = split(".",$datum2);
$date2 = sprintf("%04d",$arr[2]).sprintf("%02d",$arr[1]).sprintf("%02d",$arr[0])."000000";
$sql = "INSERT INTO `con_events` ( `titel`, `datum`, `desc`, `ort`, `online`, `url`, `language`, `datum2`) VALUES ('".$titel."', '".$date1."', '".$desc."', '".$ort."', '".$online."', '".$url."', '".$language."', '".$date2."') ";
$db->query($sql);
}



if($perm->have_perm("admin"))
$sql = "SELECT * FROM `con_events` WHERE datum > ".date("Ymd")."000000 AND `language` ='".$lang."' ORDER BY `datum`";
else
$sql = "SELECT * FROM `con_events` WHERE datum > ".date("Ymd")."000000 AND online = 1 AND `language` ='".$lang."' ORDER BY `datum`";

$db->query($sql);

//echo $sql;

$monat = array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

$aktmon = "000000";

// Auslesen des Ergebnisse pro Reihe und Generierung der Seite
while ($db->next_record()) {
echo '<a name="event'.$db->f("id").'"></a>';
if ($aktmon < substr($db->f("datum"),0,6)) {
$aktmon = substr($db->f("datum"),0,6);
echo '<p class="hl3">'.$monat[substr($aktmon,4,2)-1].' '.substr($aktmon,0,4).'</p>';
}
echo '<p><b>'.$db->f("titel").'</b></p>';
echo '<p><i>';
$mydatum = substr($db->f("datum"),6,2).".".substr($db->f("datum"),4,2).".".substr($db->f("datum"),0,4);
$mytime = substr($db->f("datum"),8,2).".".substr($db->f("datum"),10,2);
echo $mydatum." - ".$mytime." Uhr";
if ($db->f("datum2")>0) {
$mydatum = substr($db->f("datum2"),6,2).".".substr($db->f("datum2"),4,2).".".substr($db->f("datum2"),0,4);
$mytime = substr($db->f("datum2"),8,2).".".substr($db->f("datum2"),10,2);
echo " bis ".$mydatum." - ".$mytime." Uhr";
}
echo ", ".$db->f("ort");
echo ".</i> ";
echo $db->f("desc");
if ($db->f("url")!="") {
echo "<br><br>";
echo '<a href="'.$db->f("url").'" target="_blank">Weitere Informationen</a>';
}
if($perm->have_perm("admin")) {
if ($db->f("online") == 0) { $imgsrc = "online stellen"; }
if ($db->f("online") == 1) { $imgsrc = "offline stellen"; }
echo "<br><br><a href=$meineseite&online=".(($db->f("online")*-1)+1)."&eventid=".$db->f("id").">$imgsrc</a>";
if ($db->f("online") == 0) echo " | <a href=$meineseite&delete=1&eventid=".$db->f("id").">Löschen</a>";
}
echo "</p>";

echo "</a></p>\n";

}

if ($perm->have_perm("admin")) {
echo '
<p class="hl3">Neue Veranstaltung</p>
<form name="form1" method="post" action="'.$meineseite.'">
<table width="400" border="0" cellspacing="2" cellpadding="2">
<tr>
<td width="152">Titel</td>
<td width="234"><input name="titel" type="text" id="titel" size="30"></td>
</tr>
<tr>
<td>Start-Datum</td>
<td><input name="datum1" type="text" id="datum1" size="30"></td>
</tr>
<tr>
<td>End-Datum</td>
<td><input name="datum2" type="text" id="datum2" size="30"></td>
</tr>
<tr>
<td>Uhrzeit</td>
<td><input name="uhrzeit" type="text" id="uhrzeit" size="30"></td>
</tr>
<tr>
<td>Beschreibung</td>
<td><text';
echo 'area name="desc" cols="30" rows="5" id="desc"></text';
echo 'area></td>
</tr>
<tr>
<td>Ort</td>
<td><input name="ort" type="text" id="ort" size="30"></td>
</tr>
<tr>
<td>Url</td>
<td><input name="url" type="text" id="url" size="30"></td>
</tr>
<tr>
<td>Online</td>
<td><input name="online" type="checkbox" id="online" value="1" checked>
<input type ="hidden" name="language" value ="'.$lang.'">
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="send" value="eintragen"></td>
</tr>
</table>
</form>
';}

Verfasst: Di 22. Apr 2003, 23:28
von JUG
Bild Auf die Gefahr hin gleich Schläge zu bekommen: Wo hast du denn das Originalmodul her? Ich könnte es gut gebrauchen (ohne Mehrsprachigkeit), habs aber nirgends gefunden.

Verfasst: Mi 23. Apr 2003, 08:18
von pulk
JUG hat geschrieben:Bild Auf die Gefahr hin gleich Schläge zu bekommen: Wo hast du denn das Originalmodul her? Ich könnte es gut gebrauchen (ohne Mehrsprachigkeit), habs aber nirgends gefunden.
ich schlag dich nicht ;)

http://p10089516.pureserver.de/forum/vi ... 0b2b9b4108

Verfasst: Mi 23. Apr 2003, 22:24
von JUG
Ah - danke :D

Allerdings streikt meine Datenbank:
MySQL meldet: You have an error in your SQL syntax near 'desc text NOT NULL, ort varchar(50) default NULL, online tinyint(1) NOT ' at line 5
Was mache ich falsch? Wollte doch nur den Dump einspielen:

Code: Alles auswählen

DROP TABLE IF EXISTS con_events; 
CREATE TABLE con_events ( 
  id int(11) NOT NULL auto_increment, 
  titel varchar(50) NOT NULL default '', 
  datum varchar(14) NOT NULL default '', 
  desc text NOT NULL, 
  ort varchar(50) default NULL, 
  online tinyint(1) NOT NULL default '1', 
  url varchar(50) default NULL, 
  datum2 varchar(14) NOT NULL default '', 
  PRIMARY KEY  (id) 
) TYPE=MyISAM;

Verfasst: Do 24. Apr 2003, 07:53
von hk-cons
Moin moin :wink:

ist nicht zufällig desc aus
desc text NOT NULL,
ein reserviertes Wort , und zwar für die Sortierfolge (order by spalte desc/asc)?
Irgendwie kann man das doch nutzen zur Spaltenbenamsung ... glaube írgendwie mit der Taste rechts neben dem "ß" und ner anderen Taste ... ist mir persönlich aber zu unübersichtlich ... bin ja kein Fingerartist ...

Gruß Harald :D

Verfasst: Do 24. Apr 2003, 09:21
von JUG
Bild Hm, hilft mir nicht wirklich weiter. Irgendwie muss es ja an meiner Datenbank liegen, wenn dieser Fehler bei niemand anderem aufgetreten ist.

Verfasst: Do 24. Apr 2003, 10:31
von chrila
Hallo JUG,

keine Panik, ich habe den selben Fehler beim Einlesen des SQL-Befehls in meine Datenbank.

Ich habe auch noch keine Lösung :cry:

Gruß
Christian

Verfasst: Do 24. Apr 2003, 10:36
von Sven
moin

aendert mal die bezeichnung fuer das feld von desc in irgendwas
dann nur das create ausfuehren und wenn das ohen probs lief den namen halt wieder aendern

so long

Verfasst: Do 24. Apr 2003, 10:59
von JUG
Hab Svens Rat befolgt und folgendes "creiert":

Code: Alles auswählen

CREATE TABLE con_events ( 
  id int(11) NOT NULL auto_increment, 
  titel varchar(50) NOT NULL default '', 
  datum varchar(14) NOT NULL default '', 
  xxx text NOT NULL, 
  ort varchar(50) default NULL, 
  online tinyint(1) NOT NULL default '1', 
  url varchar(50) default NULL, 
  datum2 varchar(14) NOT NULL default '', 
  PRIMARY KEY  (id) 
) TYPE=MyISAM;
Dann aus dem xxx wieder desc gemacht - funzt.
War ein bisschen wie Hürdenlauf, macht das ganze spannender... :lol:

Achso: Danke Sven Bild

Verfasst: Do 24. Apr 2003, 12:03
von JUG
Und es geht weiter... wie auch schon alle anderen feststellen mussten, wird bei dem Originalmodul, also das ohne Sprachauswahl (hier zu finden: http://p10089516.pureserver.de/forum/vi ... in&start=0) nichts angezeigt. Hat dafür schon jemand eine Lösung gefunden? Der alte Thread ist leider ergebnislos abgestorben.

Termine und Probleme mit mySQL

Verfasst: Mo 28. Apr 2003, 09:20
von feiglein
Hallo Leute,

auch ich hatte Probleme mit meiner mySQL Datenbank... (die bei Strato liegt). Das Feld desc war eines. Viel zu viele Hochkommata ein anderes. Hier hab ich noch mal das modifizierte Modul ohne die für SQL Statements überflüssigen Hochkommata bei Feldnamen...

Das ganze funzt zumindes bei mir jetzt ohne Tadel...

cu

Code: Alles auswählen

$meineseite=$auth->url(); 


//wenn "online" als aktion übergeben wird und wir noch im edit-modus sind 

if (($online > -1) && $perm->have_perm("admin")) { 
    $sql = "UPDATE con_events SET online=".$online." WHERE id='".$eventid."'"; 
    //echo $sql; 
    $db->query($sql); 
} 

if (($delete) && $perm->have_perm("admin")) { 
    $sql = " DELETE FROM con_events WHERE id='".$eventid."' AND online='0'"; 
    //echo $sql; 
    $db->query($sql); 
} 

//neuer eintrag 

if ($send && $perm->have_perm("admin")) { 
    $datum1 = str_replace(".", "-", $datum1); 
    $datum1 = str_replace("/", "-", $datum1); 
    $datum2 = str_replace(".", "-", $datum2); 
    $datum2 = str_replace("/", "-", $datum2); 
    $uhrzeit = str_replace(".", ":", $uhrzeit); 
    $uhrzeit = str_replace("-", ":", $uhrzeit); 
    
    $arr = split('-',$datum1); 
    $date1 = sprintf("%04d",$arr[2]).sprintf("%02d",$arr[1]).sprintf("%02d",$arr[0]); 
    $arr = split(":",$uhrzeit); 
    $date1 .= sprintf("%02d",$arr[0]).sprintf("%02d",$arr[1])."00"; 
    $arr = split(".",$datum2); 
    $date2 = sprintf("%04d",$arr[2]).sprintf("%02d",$arr[1]).sprintf("%02d",$arr[0])."000000"; 
    $sql = "INSERT INTO con_events (titel,datum,mydesc,ort,online,url,datum2) VALUES ('".$titel."', '".$date1."', '".$mydesc."', '".$ort."', '".$online."', '".$url."', '".$date2."') "; 
    $db->query($sql); 
} 



if($perm->have_perm("admin")) 
    $sql = "SELECT * FROM con_events WHERE datum > ".date("Ymd")."000000 ORDER BY datum"; 
else 
    $sql = "SELECT * FROM con_events WHERE datum > ".date("Ymd")."000000 AND online=1 ORDER BY datum"; 
    
$db->query($sql); 

//echo $sql; 

$monat = array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); 

$aktmon = "000000"; 

// Auslesen des Ergebnisse pro Reihe und Generierung der Seite 
while ($db->next_record()) { 
    echo '<a name="event'.$db->f("id").'"></a>'; 
    if ($aktmon < substr($db->f("datum"),0,6)) { 
        $aktmon = substr($db->f("datum"),0,6); 
        echo '<p class="hl3">'.$monat[substr($aktmon,4,2)-1].' '.substr($aktmon,0,4).'</p>'; 
    } 
    echo '<p><b>'.$db->f("titel").'</b></p>'; 
    echo '<p><i>'; 
    $mydatum = substr($db->f("datum"),6,2).".".substr($db->f("datum"),4,2).".".substr($db->f("datum"),0,4); 
    $mytime = substr($db->f("datum"),8,2).".".substr($db->f("datum"),10,2); 
    echo $mydatum." - ".$mytime." Uhr"; 
    if ($db->f("datum2")>0) { 
       $mydatum = substr($db->f("datum2"),6,2).".".substr($db->f("datum2"),4,2).".".substr($db->f("datum2"),0,4); 
       $mytime = substr($db->f("datum2"),8,2).".".substr($db->f("datum2"),10,2); 
       echo " bis ".$mydatum." - ".$mytime." Uhr"; 
    } 
    echo ", ".$db->f("ort"); 
    echo ".</i> "; 
    echo $db->f("mydesc"); 
    if ($db->f("url")!="") { 
        echo "<br><br>"; 
        echo '<a href="'.$db->f("url").'" target="_blank">Weitere Informationen</a>'; 
    } 
    if($perm->have_perm("admin")) { 
        if ($db->f("online") == 0) { $imgsrc = "online stellen"; } 
        if ($db->f("online") == 1) { $imgsrc = "offline stellen"; } 
        echo "<br><br><a href=$meineseite&online=".(($db->f("online")*-1)+1)."&eventid=".$db->f("id").">$imgsrc</a>"; 
        if ($db->f("online") == 0) echo " | <a href=$meineseite&delete=1&eventid=".$db->f("id").">Löschen</a>"; 
    } 
    echo "</p>"; 
    
    echo "</a></p>\n";    

} 

if ($perm->have_perm("admin")) { 
echo ' 
<p class="hl3">Neue Veranstaltung</p> 
<form name="form1" method="post" action="'.$meineseite.'"> 
  <table width="400" border="0" cellspacing="2" cellpadding="2"> 
    <tr> 
      <td width="152">Titel</td> 
      <td width="234"><input name="titel" type="text" id="titel" size="30"></td> 
    </tr> 
    <tr> 
      <td>Start-Datum</td> 
      <td><input name="datum1" type="text" id="datum1" size="30"></td> 
    </tr> 
    <tr> 
      <td>End-Datum</td> 
      <td><input name="datum2" type="text" id="datum2" size="30"></td> 
    </tr> 
    <tr> 
      <td>Uhrzeit</td> 
      <td><input name="uhrzeit" type="text" id="uhrzeit" size="30"></td> 
    </tr> 
    <tr> 
      <td>Beschreibung</td> 
      <td><text'; 
      echo 'area name="mydesc" cols="30" rows="5" id="mydesc"></text'; 
      echo 'area></td> 
    </tr> 
    <tr> 
      <td>Ort</td> 
      <td><input name="ort" type="text" id="ort" size="30"></td> 
    </tr> 
    <tr> 
      <td>Url</td> 
      <td><input name="url" type="text" id="url" size="30"></td> 
    </tr> 
    <tr> 
      <td>Online</td> 
      <td><input name="online" type="checkbox" id="online" value="1" checked></td> 
    </tr> 
    <tr> 
      <td> </td> 
      <td><input type="submit" name="send" value="eintragen"></td> 
    </tr> 
  </table> 
</form> 
';} 

Verfasst: Mo 28. Apr 2003, 19:37
von JUG
Bild läuft leider immer noch nicht bei mir - es wird im Backend und auch im Frontend gar nichts angezeigt. Habe sogar schon per Hand einen Eintrag in die DB gesetzt, trotzdem nix.

Verfasst: Di 29. Apr 2003, 08:41
von feiglein
Hast Du schon probiert, ob Du die Datumsangabe richtig gemacht hast. Ich bekomme nur dann den richtigen Eintrag, wenn ich das Datum wie folgt eingebe...

26/02/2003 (oder auch 26.02.2003) das Datum als 4stellig...

Der Rest ist dem Modul soweit wurscht...

Solltest Du hierbei Probleme haben (auch bei mir hat er am Anfang gemuckt) - dann schalte doch mal die auskommentierten echo's der jeweiligen SQL Befehle ein; diese zeigen den SQL Befehl, der auf deine Datenbank losgelassen wird, an. Den dann von Hand oder per phpMyAdmin auf deinen Testeintrag absenden und gucken.... gucken ob was kommt...

cu