Mehrsprachigkeit für Terminanzeige ?

Gesperrt
billy
Beiträge: 14
Registriert: Mi 12. Mär 2003, 12:25
Kontaktdaten:

Mehrsprachigkeit für Terminanzeige ?

Beitrag 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
billy
Beiträge: 14
Registriert: Mi 12. Mär 2003, 12:25
Kontaktdaten:

Lösung gefunden

Beitrag 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>
';}
JUG
Beiträge: 113
Registriert: Fr 20. Sep 2002, 12:24
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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.
pulk
Beiträge: 217
Registriert: Sa 2. Nov 2002, 09:57
Kontaktdaten:

Beitrag 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
JUG
Beiträge: 113
Registriert: Fr 20. Sep 2002, 12:24
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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;
hk-cons
Beiträge: 99
Registriert: Di 25. Mär 2003, 09:08
Kontaktdaten:

Beitrag 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
Gott schütze die Dummen, denn sie ernähren die Wissenden
JUG
Beiträge: 113
Registriert: Fr 20. Sep 2002, 12:24
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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.
chrila
Beiträge: 49
Registriert: Di 17. Sep 2002, 16:31
Wohnort: Essen
Kontaktdaten:

Beitrag 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
Sven
Beiträge: 60
Registriert: Mi 12. Mär 2003, 10:53
Kontaktdaten:

Beitrag 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
JUG
Beiträge: 113
Registriert: Fr 20. Sep 2002, 12:24
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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
JUG
Beiträge: 113
Registriert: Fr 20. Sep 2002, 12:24
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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.
feiglein
Beiträge: 2
Registriert: Mo 28. Apr 2003, 09:17
Wohnort: Vilshofen
Kontaktdaten:

Termine und Probleme mit mySQL

Beitrag 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> 
';} 
JUG
Beiträge: 113
Registriert: Fr 20. Sep 2002, 12:24
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag 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.
feiglein
Beiträge: 2
Registriert: Mo 28. Apr 2003, 09:17
Wohnort: Vilshofen
Kontaktdaten:

Beitrag 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
Gesperrt