Array in sql-db speichern

Baasel

Grünschnabel
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:
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:
print serialize($_POST['stream']);
Code:
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:
                        $sql = "INSERT INTO datenbank
                                    (bla,blub)
                                VALUES
                                    ('".addslashes(trim($_POST['bla']))."',
                                    NOW())";
                        mysql_query($sql) OR die(mysql_error());
 
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
 
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
 
okay, als Stuktur würde ich das nehmen

Code:
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:
    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.";
 
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
 
bla blub

Ich habe es so gemacht...

PHP:
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:
<?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


?>
 
Zuletzt bearbeitet:
Zurück