Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrsprachig

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrsprachig

    Hallo zusammen,

    Ich habe vor in meiner Page mit Hilfe einer Mysql Datenbank eine 2. Sprache "einzufügen".

    Was ich vorbereitet habe:
    1 Tabelle = sprachen
    3 Spalten = id_sprachen , de , en


    Nun müsste ich ja eine Abfrage generieren die mir die Sprache anwählt:
    PHP-Code:
    $sql "SELECT * 
            FROM sprachen
            WHERE `id_sprachen` = 'de'"


    Nur wie kann ich es am einfachsten machen um z.b. eine Tabellen beschriftung zu erstellen. (Momentan so:
    PHP-Code:
    cho"<tr><th>Monteur</th><th>Datum</th><th>Arbeitsbeginn</th><th>Mittagszeit</th><th>Arbeitsende</th><th>Tätigkeit</th><th>abwesend</th><th>Morgenessen</th><th>Mitagessen</th><th>Abendessen</th><th>Total</th></tr>"
    Nun müsste ich ja für z.b. "Datum" eine Variable setzen und dann die id für die Abfrage vorbereiten...

    Oder Ist es möglich jede Zeile eine Variable zu erstellen?


    Zum Verständiss:
    PHP-Code:
    $erg $db->query ($sql) or die ("Fehlermeldung=".$db->error());
            while((
    $row $erg->fetch_assoc()) !== Null){ 
    So kann ich ja z.b mit
    PHP-Code:
    $v=$row["de"];
    $v=$row["fr"]; 
    Den Inhalt jeder Spalte ausgeben, aber ich bräuchte ja den ganzen Inhalt einer Spalte Spalter.


    Oder geht es einfacher wenn ich eine Zeile "de" und eine Zeile "fr" und anschliessend die Spalten abfrage?


    Ich hoffe man versteht es

    P.s. ich habe leider den Post unabsichtlich zu früh gesendet jetzt steht nur der halbe Titel da :s

  • #2
    SELECT * ist böse. Einfach bei Änderung einer Sprache SESSION setzen und anhand dieser die jeweiligen Sprach-"daten" auslesen". Das müsstest du mit absolutem Grundlagenwissen hinbekommen.

    Kommentar


    • #3
      Ich habe versucht eine ganze Spalte auszulesen
      PHP-Code:
      $sql = ('SELECT * FROM stunden'); 
           while (
      $data mysql_fetch_assoc($sql)) 
          { 
              echo 
      $data['de'].'
      '

          } 
      aber es will nicht ganz

      Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in /volume1/web/mitarbeiter_stunden/stunden_uebersicht.inc.php on line 13

      Kommentar


      • #4
        Falsches Unterforum!
        Du musst die Query auch ausführen lassen.
        PHP-Code:
        echo $data['de'].'
        '

        Was soll das .''; darstellen?

        Bitte bitte bitte, arbeite ein paar Tutorials durch.

        Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
        Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
        Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar


        • #5
          Hallo, Danke,
          Ist es korrekt das ich über mysqli die Spalte so auslesen kann:
          PHP-Code:
              $sql "SELECT * FROM sprachen;";
              
          $erg $db->query ($sql) or die ("Fehlermeldung=".$db->error);
              
          $row $erg->fetch_array(MYSQLI_ASSOC); 
          Nun wollte ich das Array in einzelene Variablen stecken:
          PHP-Code:
          list($wert1$wert2$wert3) = $row["de"];

          echo 
          $wert1;
          // Das
          echo $wert2;
          // sind
          echo $wert3;
          // Werte 
          Aber da kommt nicht gutes raus
          Bez. in $wert1 steht der 1 Buchstaben des ersten Datensatzes
          $wert1 steht der 2 Buchstaben des ersten Datensatzes
          $wert1 steht der 3 Buchstaben des ersten Datensatzes

          PHP-Code:
          print $row["de"]; 
          gibt mir auch nur einen Datensatz aus und nicht die ganze spalte

          Kommentar


          • #6
            Ja, du fetchst ja auch nur diese eine Zeile.
            Ich würde übrigens schon gleich in der Datenbankabfrage nur die Texte der ausgewählten Sprache selektieren, sonst schleppst du unnötig Ballast mit.
            PHP-Code:
            $translatedArray = array();
            while(
            $row $erg->fetch_array(MYSQLI_ASSOC)){
                
            $translatedArray[] = $row;
            }
            var_dump($translatedArray); 
            Code:
            SELECT * 
                    FROM sprachen
                    WHERE `id_sprachen` = 'de'";
            Sicher, dass das so soll?
            Die intuitive Variante wäre eher so:
            Code:
            SELECT `id_sprachen`, `de` FROM sprachen";
            Damit würdest du dir aber auch alle Texte dieser Sprache holen. Solltest dir noch was überlegen, wie du das weiter eingrenzen kannst, auf die Seite die du aktuell anzeigst.
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              Ahh Nun hat das Auslesen Funktioniert:
              PHP-Code:
                  $sql "SELECT `id_sprachen`, `de` FROM sprachen";
                  
              $erg $db->query ($sql) or die ("Fehlermeldung=".$db->error);
                  
              $translatedArray = array();
                  while(
              $row $erg->fetch_array(MYSQLI_ASSOC)){
                  
              $translatedArray[] = $row;
              }
              var_dump($translatedArray);  


              Code:
              array(3) { [0]=> array(2) { ["id_sprachen"]=> string(1) "1" ["de"]=> string(4) "Test" } [1]=> array(2) { ["id_sprachen"]=> string(1) "2" ["de"]=> string(5) "Test1" } [2]=> array(2) { ["id_sprachen"]=> string(1) "3" ["de"]=> string(6) "test 2" } }
              Aber wie bringe ich jetzt die "test" "test1" und "test2" in eine eigene Variable :s

              Kommentar


              • #8
                Für das, dass du solche Fragen stellst war das Posten im Fortgeschrittenen-Forum etwas stark gewagt.

                Das, was du hast, ist ein Array. Damit kannst du arbeiten, z.B. mit foreach.
                [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                Kommentar


                • #9
                  PHP-Code:
                  $sql "SELECT `id_sprachen`, `de` as text FROM sprachen";
                  $erg $db->query ($sql) or die ("Fehlermeldung=".$db->error);
                  $translatedArray = array(); 
                  while(
                  $row $erg->fetch_array(MYSQLI_ASSOC)){
                      
                  $translatedArray[$row['id_sprachen']] = $row['text'];
                  }
                  var_dump($translatedArray); 
                  Weitere Variablen brauchst du nicht. Du hast damit ein Array in der Form
                  Code:
                  array(3) {
                    [1]=>
                    string(4) "Test"
                    [2]=>
                    string(5) "Test1"
                    [3]=>
                    string(6) "test 2"
                  }
                  Die Frage ist, wie du weitermachst.
                  Du könntest jetzt in deiner Ausgabe, statt der Texte einfach die ID's verteilen, bzw. einen Funktionsaufruf der die ID und das Array als Parameter übergibt. Die Funktion könnte dann so aussehen:
                  PHP-Code:
                  function getTranslation($id$translationArray){
                      if(
                  key_exists($id$translationArray)){
                          return 
                  $translationArray[$id];
                      }
                  }
                  echo 
                  htmlentities(getTranslation(2$translatedArray)); 
                  Das echo und htmlentities() könnten in die Funktion rein, mit return wäre sie multifunktionaler.
                  [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                  [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                  Kommentar


                  • #10
                    Eigentlich sollte ich doch die einzelnen Daten mit zb.:

                    PHP-Code:
                        echo $translatedArray[2]; 
                    auslesen können, nicht?

                    Ich kriege diesen Fehler dabei:

                    Code:
                    Notice: Undefined offset: 2 in /volume1/web/mitarbeiter_stunden/stunden_uebersicht.inc.php on line 87 Notice: Undefined offset: 2 in /volume1/web/mitarbeiter_stunden/stunden_uebersicht.inc.php on line 87 Notice: Array to string conversion in /volume1/web/mitarbeiter_stunden/stunden_uebersicht.inc.php on line 87 Array

                    Kommentar


                    • #11
                      Zitat von VPh Beitrag anzeigen
                      Bitte bitte bitte, arbeite ein paar Tutorials durch.
                      Ist jetzt zwar nicht produktiv, muss ich aber dennoch loswerden. schnibli, du solltest dir echt nochmals eine Runde Grundlagen gönnen! Du stolperst ständig über totale Grundlagen, das macht so auf Dauer so echt nicht viel Sinn.
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Einfach mal lesen was in der Notice steht, die ist ja nun wirklich nicht schwer zu "Debuggen" wenn man ein wenig englisch versteht. Das sind zwei Wörter und eine Zahl die bereits alles sagen was man wissen muss um das zu bereinigen.

                        Kommentar


                        • #13
                          So hab mal was gschafft:
                          PHP-Code:
                          print_r ($translatedArray[1]); 
                          Code:
                           [id_sprachen] => 2 [de] => Test1
                          Aber wie krieg ich das hin das nur Test1 ausgegeben wird.

                          Kommentar


                          • #14
                            Zugriffe auf einen Wert im Array erfolgen über den Index. Bitte lerne - endlich - Grundlagen!

                            PHP-Code:
                            echo $translatedArray[1]['de']; 
                            The string "()()" is not palindrom but the String "())(" is.

                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar

                            Lädt...
                            X