ch habe wieder so eine Dynamische Tabelle, wo aber leider nur immer der letzte Eintrag in die Datenb


CreativPur

Erfahrenes Mitglied
PHP:
if($save =='arbeitsgebiete') {
    $error = false;
    for ($i = 0; $i < count($_POST['arbeitsorte_plz']); $i++) {
    $arbeitsorte_plz = $_POST['arbeitsorte_plz'][$i];
    $arbeitsorte_ort = $_POST['arbeitsorte_ort'][$i];
    $statement = $pdo->prepare("UPDATE sitters SET arbeitsorte_plz = :arbeitsorte_plz, arbeitsorte_ort = :arbeitsorte_ort WHERE id = :userid");
    $result = $statement->execute(array('arbeitsorte_plz' => $arbeitsorte_plz, 'arbeitsorte_ort' => $arbeitsorte_ort, 'userid' => $user['id'] ));
    }
}
PHP:
<h3 class="green">Weitere Arbeitsorte</h3>
            <hr />
            <form action="?save=arbeitsgebiete" method="post" class="form-horizontal">
                <table>
                    <thead>
                        <tr>
                        <th><label>Plz</label></th>
                        <th></th>
                        <th><label>Ort</label></th>
                        <th></th>
                        <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td width="80" data-name="arbeitsorte_plz"><input class="form-control" name="arbeitsorte_plz[]" type="text" /></td>
                            <td width="5"></td>
                            <td width="300" data-name="arbeitsorte_ort"><input class="form-control" name="arbeitsorte_ort[]" type="text" /></td>
                            <td width="5"></td>
                            <td width="10">
                                <button class="btn btn-success btn-add btn-sm" type="button"><i class="glyphicon glyphicon-plus gs"></i>
                                </button>
                            </td>
                            </tr>
                    </tbody>
                </table>
                <hr />
                <button type="submit" class="btn btn-primary">Änderung speichern</button>
            </form>
Code:
<script>
       $(function()
{
    $(document).on('click', '.btn-add', function(e)
    {
        e.preventDefault();
        var controlForm = $(this).closest('table'),
            currentEntry = $(this).parents('tr:first'),
            newEntry = $(currentEntry.clone()).appendTo(controlForm);
        newEntry.find('input').val('');
        controlForm.find('tr:not(:last) .btn-add')
            .removeClass('btn-add').addClass('btn-remove')
            .removeClass('btn-success').addClass('btn-danger')
            .html('<span class="glyphicon glyphicon-minus gs"></span>');
    }).on('click', '.btn-remove', function(e)
    {
        $(this).parents('tr:first').remove();
        e.preventDefault();
        return false;
    });
});
</script>
Wo verdammt liegt jetzt wieder der Fehler ????
 

Kalito

Erfahrenes Mitglied
Was sit den das Problem? Die Überschrift gibt es nich ganz klar her.

Was soll rauskommen/passieren, wie ist der IST-Zustand und woran hängt es gerade bei dir?
 

CreativPur

Erfahrenes Mitglied
Hi Kalito,

Sorry.. Mit der Überschrift war ich wohl heute Morgen nach einer langen Nacht der Fehlersuche noch nicht ganz wach..

Also.. Ich habe eine Dynamik - Tabelle, wo ich PLZ und Ort eingeben möchte. Und zwar so viel wie ich möchte..
Das funktioniert auch soweit. Über einen Plus-Button kann ich ein weiteres Eingabefeld ausfüllen..

Die Datenbankübertragung funktioniert auch. Leider wird aber nur immer der letzte Datensatz der Tabelle angenommen, bzw. auch nur ausgegeben..

siehe Bilder..
1 = Formular
2 = Ausgabe
3 = Datenbankeintrag
 

Anhänge

Kalito

Erfahrenes Mitglied
auf den ersten Blick sieht alles ok aus. Was gibt $_POST an sich aus? Ist nur arbeitsorte_ort in der DB leer oder auch der Eintrag bei der PLZ.
 

CreativPur

Erfahrenes Mitglied
hi,
Es sind schon Einträge wie persönliche Daten in der Datenbank vorhanden. Daher nur update. Die PLZ bleibt auch leer, bzw. wird nur der letzte Eintrag angenommen.Bildschirmfoto 2018-02-23 um 06.52.01.png
 

Sempervivum

Erfahrenes Mitglied
Dann musst Du wahrscheinlich noch unterscheiden, ob ein Arbeitsort schon vorhanden ist, oder neu angelegt werden soll. Und: Ist er schon vorhanden, am Anfang die Daten lesen und in die Tabelle eintragen.
 

Kalito

Erfahrenes Mitglied
Ich hab mal in meinem Fundus gekramt, da mir das Problem bekannt vorkam.

Die Tabelle würe ich so anpassen, dass du je Zeile einen counter hast

HTML:
<tr data-count =1><td><input class="form-control" name="arbeitsorte_ort[0]" type="text" /></td></tr>
Das Javascript habe ich dann wie folgt aufgebaut

Code:
tmp_id = parseInt($('#table_id > tbody > tr:last').data('count'))+parseInt(1);
Dann musst du am Ende nur noch den Namen des element anpassen
 

CreativPur

Erfahrenes Mitglied
Ich habe es jetzt folgend versuch zu lösen..

PHP:
$plz = $user['plz'];
$Sitter_id = $user['Sitter_id'];

$sql = "SELECT
  img_pass,
  vorname,
  alter_sitter,
  nationalitaet,
  art,
  plz,
  ort,
  radius,
  arbeitsorte_plz,
  arbeitsorte_ort
  FROM
  sitters
  LEFT JOIN sitter_arbeitsorte
  ON Sitter_id = $Sitter_id
  WHERE
  plz = $plz
";


PHP:
<table class="table table-hover" id="task-table">
                <thead>
                    <td>&nbsp;</td>
                    <td>Name</td>
                    <td>Alter</td>
                    <td>Nationalität</td>
                    <td>Art Sitten</td>
                    <td>Arbeitsgebiet</td>
                    <td>Radius</td>
                    <td>Weitere Arbeitsgebiete</td>
                    <td align="center">Profil</td>
                </thead>
                        <tbody>
                        <?php foreach ($pdo->query($sql) as $row) { ?>
                            <tr>
                                <td><img src="../service/sitter/upload/<?php echo $row['img_pass'] ?>" class="img-responsive pass" width="50" /></td>
                                <td><?php echo $row['vorname'] ?></td>
                                <td><?php echo $row['alter_sitter'] ?></td>
                                <td><?php echo $row['nationalitaet'] ?></td>
                                <td><?php echo $row['art']; ?></td>
                                <td><?php echo $row['plz'] ?> <?php echo $row['ort'] ?></td>
                                <td><?php echo $row['radius'] ?> km</td>
                                <td ><?php echo $row['arbeitsorte_plz'] ?> <?php echo $row['arbeitsorte_ort'] ?></td>
                                <td align="center"><button type="button" class="btn btn-primary" style="background:#fff; border-color:#fff;" data-toggle="modal" data-target="#profil<?php echo $row['Sitter_id'];?>"><span class="glyphicon glyphicon-eye-open green" style="font-size:16px;"></span></button></td>
                            </tr>
                            <?php } ?>
                        </tbody>
                    </table>

Jetzt wird leider nichts mehr ausgegeben ..
Warum ?
 

CreativPur

Erfahrenes Mitglied
PHP:
$plz = $user['plz'];
$sql = "SELECT * FROM sitters WHERE plz = $plz ";
PHP:
<table class="table table-hover" id="task-table">
                <thead>
                    <td>&nbsp;</td>
                    <td>Name</td>
                    <td>Alter</td>
                    <td>Nationalität</td>
                    <td>Art Sitten</td>
                    <td>Wohnort</td>
                    <td>Radius</td>
                    <td>Weitere Arbeitsgebiete</td>
                    <td align="center">Profil</td>
                </thead>
                        <tbody>
                        <?php foreach ($pdo->query($sql) as $row) { ?>
                            <tr>
                                <td><img src="../service/sitter/upload/<?php echo $row['img_pass'] ?>" class="img-responsive pass" width="50" /></td>
                                <td><?php echo $row['vorname'] ?></td>
                                <td><?php echo $row['alter_sitter'] ?></td>
                                <td><?php echo $row['nationalitaet'] ?></td>
                                <td><?php echo $row['art']; ?></td>
                                <td><?php echo $row['plz'] ?> <?php echo $row['ort'] ?></td>
                                <td><?php echo $row['radius'] ?> km</td>
                                <td >
                                <?php
                                $Sitter_id = $row['Sitter_id'];
                             
                                $sql = "SELECT
                                 Sitter_id,
                                 arbeitsorte_plz,
                                 arbeitsorte_ort
                                 FROM
                                 sitter_arbeitsorte
                                 WHERE
                                 Sitter_id = $Sitter_id
                                ";
                             
                                foreach ($pdo->query($sql) as $row) {
                                echo $row['arbeitsorte_plz']. ' ' .$row['arbeitsorte_ort'].'<br />'
                                ?>
                                <?php } ?>
                                </td>
                                <td align="center"><button type="button" class="btn btn-primary" style="background:#fff; border-color:#fff;" data-toggle="modal" data-target="#profil<?php echo $row['Sitter_id'];?>"><span class="glyphicon glyphicon-eye-open green" style="font-size:16px;"></span></button></td>
                            </tr>
                            <?php } ?>
                        </tbody>
                    </table>