tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1847
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    TinaX TinaX ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    19
    Hi!

    Bitte macht mir ein Weihnachtsgeschenk und helft mir bitte bitte bitte bei folgendem Problemchen...

    Ich möchte Artikelvarianten zu einem Hauptartikel anlegen. Ich kann aussuchen, wieviele Varianten angelegt werden sollen.

    $_REQUEST[aid] ist die Artikelnummer, zu der die Varianten gehören sollen.
    $_REQUESTregnum] ist die Anzahl der Felder, die generiert werden sollen.

    PHP-Code:
    <form action="addvariants_script.php" method="post">
    <? 
    if (isset($_REQUEST[regnum]))
    {
    for (
    $i=1$i<=$_REQUEST[anzahl]; $i++)
    {
    ?> 
    <input name="aid[]" type="hidden" value="<?=$_REQUEST[aid]?>">
    <tr><td colspan="4" class="header">Variante <?=$i?></td></tr>
    <tr><td valign="top">Var<?=$i?> DE:</td><td><input name="var_de[]" type="text" size="41" maxlength="50"></td>
        <td valign="top">Var<?=$i?> EN:</td><td><input name="var_en[]" type="text" size="41" maxlength="50"></td></tr>
    <tr><td valign="top">Var<?=$i?> Nr.:</td><td><input name="var_no[]" type="text" size="41" maxlength="50"></td>
        <td valign="top">Var<?=$i?> Preis:</td><td><input name="var_price[]" type="text" size="41" maxlength="50"></td></tr>
    <? 
    }
    echo 
    '<tr><td colspan="4"><br><br><input type="Submit" name="sendfiles" value="Varianten speichern"></td></tr>';
    }
     
    ?>
    </form>
    Beim folgenden Beispiel möchte ich 2 Varianten hinzufügen. Die "addvariants_script.php" sieht so aus:

    PHP-Code:
    include 'dbconnect.php';
    foreach (
    $_POST[aid] AS $aid) {
    $updatecats=mysql_query("INSERT IGNORE INTO variants SET var_de='$_POST[var_de]', var_en='$_POST[var_en]', var_no='$_POST[var_no]', var_price='$_POST[var_price]', AID='$aid'");
    }
    print_r($_POST); 
    Die Ausgabe sieht wie folgt aus:

    PHP-Code:
    Array ( [aid] => Array ( [0] => 268 [1] => 268 
    [
    var_de] => Array ( [0] => Variante 5 DE [1] => Variante 6 DE 
    [
    var_en] => Array ( [0] => Variante 5 EN [1] => Variante 6 EN 
    [
    var_no] => Array ( [0] => 555 [1] => 666 
    [
    var_price] => Array ( [0] => 39,90 [1] => 68,90 
    [
    sendfiles] => Varianten speichern 
    In die Datenbank wird in jedes Feld "Array" geschrieben - außer im Feld AID steht "268"

    Ich weiß, das ist eine dumme Frage, aber um ehrlich zu sein, hab ich mich vor diesen Arrays immer so gut wie möglich gedrückt - und jetzt bekomm ich die Rechnung dafür

    Wär supertoll, wenn jemand so nett wäre und mir meinen Denkfehler bei dieser Sache erklären könnte...

    Danke euch schonmal im voraus!

    LG, TinaX
    Geändert von TinaX (16.12.04 um 13:57 Uhr)
     

  2. #2
    Registriert seit
    Jun 2004
    Ort
    Garching b. München
    Beiträge
    602
    Hi!
    Zitat Zitat von TinaX
    In die Datenbank wird in jedes Feld "Array" geschrieben - außer im Feld AID steht "268"

    Ich weiß, das ist eine dumme Frage, aber um ehrlich zu sein, hab ich mich vor diesen Arrays immer so gut wie möglich gedrückt - und jetzt bekomm ich die Rechnung dafür
    Das Problem ist das folgende: Du versuchst einen Array in eine Datenbank zu speichern. Ein MySQL-Query ist aber ein String - du kannst aber einen Array nicht als String darstellen, indem du sagst "echo $meinArray;" (oder eben einen Array in einen String einbindest).

    Du musst dein Array also in einen String umwandeln. Ich mache das immer so, dass ich die einzelnen Elemente urlencode und dann mit einem Piping-Symbol zusammen-"klebe". Aus einem Array wird dann z. B. dieser String:
    PHP-Code:
    $meinArray = array('ein Text mit Lücke'155'xyz');
    // wird zu 
    $meinString 'ein+Text+mit+L%FCcke|155|xyz'
    Mamphil
     
    Lösungsvorschlag: Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!

    Artikel & Tutorial: Wie realisiere ich eine Umkreissuche nach Postleitzahlen mit der kostenlosen OpenGeoDB in PHP?

  3. #3
    TinaX TinaX ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    19
    Hi!

    Also danke schonmal für deine Erklärung.
    Leider hilft mir das im Augenblick nicht wirklich weiter...

    Also ich bekomme ein Array übergeben, das weitere Array´s enthält.
    Ich denke mal, das die Übergabe vom Formular stimmt.

    Ich dachte eigentlich, daß ich dieses Überdrüber-Array in einer foreach-Schleife definieren kann und dann die "Unter-Arrays" über diese Variable ansprechen kann.

    Also praktisch:

    PHP-Code:
    foreach ($_POST[array] AS $array) {
    mysql_query("insert into table set feld1=$array[var_de], feld2=$array[var_en]... usw");

    Ich weiß, daß das jetzt ein wenig dreist rüberkommt, aber könntest du deine Erläuterung auf mein Script umlegen? Das wär echt supernett - ich glaub ich seh den Wald vor lauter Bäumen nicht mehr...

    Danke, TinaX
     

  4. #4
    TinaX TinaX ist offline Mitglied
    Registriert seit
    Nov 2004
    Beiträge
    19
    Oops, ich glaub, ich habs...


    PHP-Code:
    $i=0;
    foreach (
    $_POST[aid] AS $aid) {
    $var_de=$_POST[var_de];
    $var_en=$_POST[var_en];
    $var_no=$_POST[var_no];
    $var_price=$_POST[var_price];
    mysql_query("INSERT INTO variants SET var_de='$var_de[$i]', var_en='$var_en[$i]', var_no='$var_no[$i]', var_price='$var_price[$i]', AID='$aid'");
    $i++;

    So funktionierts! Ist das richtig so?
    Danke, TinaX
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 25.12.08, 07:07
  2. mehrdimensionales array
    Von Nadscha im Forum PHP
    Antworten: 12
    Letzter Beitrag: 17.07.07, 17:13
  3. Antworten: 5
    Letzter Beitrag: 30.04.07, 15:03
  4. Mehrdimensionales Array ...
    Von LadySunshine im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 23.06.04, 11:28
  5. mehrdimensionales array
    Von kimbo im Forum PHP
    Antworten: 2
    Letzter Beitrag: 26.10.03, 09:55