tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1011
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Baasel Baasel ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    Hallo

    Ich möchte gerne ein mehrdimensionale Array übergeben und in eine mysql-Datenbank speichern, bloß wie stelle ich das an ?

    So schauts aus, wenn ich die Daten übergebe...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    Array 0
     
    Link 1
    Inhalt 1
    1 Stern
     
    Array 1
     
    Link 2
    Inhalt 2
    2 Sterne
     
    Array 2
     
    Link 3
    Inhalt 3
    3 Sterne
     
    Array 3
     
    Link 4
    Inhalt 4
    4 Sterne
     
    Array 4
     
    Link 5
    Inhalt 5
    4 Sterne

    Man soll es irgendwie mit serialize machen können, aber das hilft mir nicht weiter, weil ich nicht weiß, wie ich serialize benutzen/anwenden kann in Bezug auf DB speicherung.

    Mit serialize schauts so aus
    PHP-Code:
    print serialize($_POST['stream']); 
    Code :
    1
    
    a:4:{s:2:"id";a:5:{i:0;s:0:"";i:1;s:0:"";i:2;s:0:"";i:3;s:0:"";i:4;s:0:"";}s:4:"link";a:5:{i:0;s:6:"Link 1";i:1;s:6:"Link 2";i:2;s:6:"Link 3";i:3;s:6:"Link 4";i:4;s:6:"Link 5";}s:12:"beschreibung";a:5:{i:0;s:9:"Inhalt 1 ";i:1;s:8:"Inhalt 2";i:2;s:8:"Inhalt 3";i:3;s:8:"Inhalt 4";i:4;s:8:"Inhalt 5";}s:6:"sterne";a:5:{i:0;s:8:"1 Sterne";i:1;s:8:"2 Sterne";i:2;s:8:"3 Sterne";i:3;s:8:"4 Sterne";i:4;s:8:"4 Sterne";}}

    So, wie kann ich denn dieses, ich nenne es man "kauderwelsch", in einer DB eintragen? Weil ich kann mir nicht vorstellen, das es mit einer Modifikation hiervon geht...
    PHP-Code:
                            $sql "INSERT INTO datenbank
                                        (bla,blub)
                                    VALUES
                                        ('"
    .addslashes(trim($_POST['bla']))."',
                                        NOW())"
    ;
                            
    mysql_query($sql) OR die(mysql_error()); 
     

  2. #2
    Avatar von Headymaster
    Headymaster Headymaster ist offline Mitglied Platin
    Registriert seit
    Dec 2005
    Ort
    Pinneberg
    Beiträge
    516
    Hallo,

    1) solltest du dir erstmal ne Tabelle erstellen in der du deine Daten mit entsprechender Logik hinterlegen kanns.

    2) Solltest du vielleicht erstmal ein bischen über mysql lesen um zu verstehen was eine Datenbank ist und warum man was wie dort abspeichert.

    3) Dann wird dir alles etwas klarer werden und du kannst deine Daten ganz einfach hinterlegen

    MFG Nilson
     

  3. #3
    Avatar von Avedo
    Avedo Avedo ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Göttingen
    Beiträge
    387
    Eine Datenbank ist nicht dazu da ein Array zu hinterlegen, sondern um Datensätze, ähnlich wie in einem Array, zu speichern. Wie dein Array ausgesehen hat haben wir ja alle gesehen. Und ungefähr so kannst du auch deine Db konstruieren. Du erstellst eine Spalte für IDs, über die du die einzelnen Einträge ansprechen kannst. Danach kannst du die Spalten für den Link, die Bewertung und den Inhalt (was das auch immer sein soll) erstellen.
    MfG, Andy
     

  4. #4
    Baasel Baasel ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    okay, als Stuktur würde ich das nehmen

    Code :
    1
    2
    3
    4
    5
    6
    
    CREATE TABLE stream (
        ID INT AUTO_INCREMENT PRIMARY KEY,
        link VARCHAR(200),
        inhalt VARCHAR(100),
        sterne int(1)
    );


    wie man dort was abspeicher ist mir klar... bsp.:
    Daten kommen aus einem Formular ->
    PHP-Code:
        if(!isset($_POST['Name'], 
                  
    $_POST['Email'],
                  
    $_POST['Homepage'], 
                  
    $_POST['Text']))

        if(
    trim($_POST['Name']) == "") {
            die(
    "Bitte geben sie einen Namen ein");
        }
        if(
    trim($_POST['Text']) == "") {
            die(
    "Bitte geben sie einen Text ein");
        }

                            
    $sql "INSERT INTO gb
                                        (Name,Email,Homepage,Inhalt,Datum)
                                    VALUES
                                        ('"
    .addslashes(trim($_POST['Name']))."',
                                        '"
    .addslashes(trim($_POST['Email']))."',
                                        '"
    .addslashes(trim($_POST['Homepage']))."',
                                        '"
    .addslashes(trim($_POST['Text']))."',
                                        NOW())"
    ;
                            
    mysql_query($sql) OR die(mysql_error());

                            echo 
    "    Eintrag wurde hinzugefuegt."
     

  5. #5
    Avatar von Avedo
    Avedo Avedo ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Göttingen
    Beiträge
    387
    Genau! Du solltest nur den PHP-Teil nochmal dringend überarbeiten, denn mit den Einträgen in ein Gästebuch ist dir wohl eher weniger geholfen und bei der ersten if()-Abfrage kommt dein Formular rein.
    MfG, Andy
     

  6. #6
    Baasel Baasel ist offline Rookie
    Registriert seit
    Jul 2005
    Beiträge
    7
    bla blub

    Ich habe es so gemacht...

    PHP-Code:
    if (isset($_POST['stream']))
    {
    foreach(
    $_POST['stream']['id'] as $k=>$v)
    {
    $link htmlentities($_POST["stream"]["link"][$k]);
    $inhalt htmlentities($_POST["stream"]["beschreibung"][$k]);
    $sterne htmlentities($_POST["stream"]["id"][$k]);
        
                            
    $sql "INSERT INTO streams
                                        (link,inhalt,sterne)
                                    VALUES
                                        ('"
    .$link."',
                                        '"
    .$inhalt."',
                                        '"
    .$sterne."'
                                        )"
    ;
                            
    mysql_query($sql) OR die(mysql_error());
    }

    Das problem lag jetzt einfach darin, das ich nicht wusste, das php die array in mehrere datensätze in dei DB, also so wie ich es möchte, schreibt...


    Ich gebe euch noch mal das komplette script, damit andere nachvollziehen können, was ich machen wollte...

    Stream schreiben...

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);

    switch(isset(
    $_GET['action'])?$_GET['action']:'') {

            
    // ...
        
    case "add":
    echo 
    "<div id=\"stream_link_add\">\n";
                echo 
    "Link\n";
    echo 
    "</div>\n";

    echo 
    "<div id=\"stream_inhalt_add\">\n";
                echo 
    "Inhalt\n";
    echo 
    "</div>\n";

    echo 
    "<div id=\"stream_sterne_add\">\n";
                echo 
    "Sterne (1-6)\n";
    echo 
    "</div>\n";

    echo 
    "<script type=\"text/javascript\">
    <!--
    j=0;
    function clone(o)
    {
        n=o.cloneNode(true);
        a=o.getElementsByTagName('INPUT');
        for(e=0;e<a.length;++e)
          {
            a[e].value='';
          }
        o.parentNode.insertBefore(n,o); 
    }
    //-->
    </script>\n"
    ;

    echo 
    "<form ".
                     
    "action=\"index.php?section=streams_add&amp;action=senden&amp;\" ".
                     
    "method=\"post\" ".
                     
    "class=\"formular\">\n";
    echo 
    "<div><input type=\"hidden\" name=\"stream[id][]\" />
        <input type=\"text\" id=\"Link\" name=\"stream[link][]\" class=\"input_stream_link\"  />
        <input type=\"text\" id=\"Beschreibung\" name=\"stream[beschreibung][]\" class=\"input_stream_inhalt\" />
        <input type=\"text\" id=\"Sterne\" name=\"stream[sterne][]\" class=\"input_stream_sterne\" />
    </div><input type=\"button\" onclick=\"clone(this.previousSibling)\" value=\"neuer Datensatz\">   

        <input type=\"submit\" name=\"submit\" value=\"Senden\" />
       </p>\n"
    ;
    echo 
    "</form>\n";



        break;
            
    // ...
            
            // ...
    case "senden":


    if (isset(
    $_POST['stream']))
    {
    foreach(
    $_POST['stream']['id'] as $k=>$v)
    {
    $link htmlentities($_POST["stream"]["link"][$k]);
    $inhalt htmlentities($_POST["stream"]["beschreibung"][$k]);
    $sterne htmlentities($_POST["stream"]["id"][$k]);
        
                            
    $sql "INSERT INTO streams
                                        (link,inhalt,sterne)
                                    VALUES
                                        ('"
    .$link."',
                                        '"
    .$inhalt."',
                                        '"
    .$sterne."'
                                        )"
    ;
                            
    mysql_query($sql) OR die(mysql_error());
    }
    }

    echo 
    "<br><br><br>\n";

        break;
            
    // ...
                
    default:
                    break;
    // Zeile 4


    ?>
    Geändert von Baasel (19.08.08 um 15:31 Uhr)
     

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 22.02.10, 12:05
  2. Wie Array in Dataset speichern (vb.net)
    Von kwmaster im Forum .NET Datenverwaltung
    Antworten: 3
    Letzter Beitrag: 22.06.09, 08:30
  3. Array speichern
    Von gloor im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 31.03.08, 17:23
  4. Array in array speichern
    Von Lord_Fritte im Forum PHP
    Antworten: 8
    Letzter Beitrag: 30.12.04, 16:29
  5. li in array speichern
    Von mo-ca im Forum Javascript & Ajax
    Antworten: 9
    Letzter Beitrag: 26.04.04, 11:19