Array dynamisch mit $POST befüllen

Kann ich keine anker tags und listen tags in php einbinden?

Dachte jetzt an folgendes:

PHP:
$txt = file_get_contents("telefonliste.json");
$telelist = json_decode($txt,true);
foreach ($telelist as $entry) {
  
echo "<li>
        <a href=""class="check"></a>
        <span>Name</span>
        <span>Telefonnummer</span>
        <a href="" class="uncehcked"</a>
      </li>";
}

Ich dachte jetzt ich lasse bei jedem Schleifendurchlauf, daß HTML Grundgerüst je nach Größe immer hinzufügen.
Dabei den Wert aus $entry jeweils dem Namen und Telefonnummer hinzufügen.

Also ungefähr so:

PHP:
$txt = file_get_contents("telefonliste.json");
$telelist = json_decode($txt);
foreach ($telelist as $entry) {
  
echo "<li>
        <a href=""class="check"></a>
        <span><?php $entry["name"]?></span>
        <span><?php $entry["telefonnummer"]?></span>
        <a href="" class="uncehcked"</a>
      </li>";
}

Aber PHP -> HTML -> PHP ist glaube ich nicht erlaubt!?
Zumindest geht das nicht in meinem Fall.

Und wie spreche ich die einzelnen Elemente im Array an?
 
Zuletzt bearbeitet:
Selbstverständlich kannst Du li-Tags erzeugen, alles was es in HTML gibt. Und die Werte aus dem Array kannst Du so einfügen:
Code:
      echo "<li>
        <a href=""class="check"></a>
        <span>$entry['Name']</span>
        <span>$entry['Telefonnummer']</span>
        <a href="" class="uncehcked"</a>
      </li>";
 
PHP:
$txt = file_get_contents("telefonliste.json");
$telelist = json_decode($txt);
foreach ($telelist as $entry) {
    
echo "<li>
        <a href=""class="check"></a>
        <span>$entry['Name']</span>
        <span>$entry['Telefonnummer']</span>
        <a href="" class="uncehcked"</a>
      </li>";
}

Bei mir gibt er im Browser folgende Fehlermeldung:

Code:
Parse error: syntax error, unexpected '"class="' (T_CONSTANT_ENCAPSED_STRING), expecting ';' or ',' in C:\xampp\htdocs\index.php on line 6
 
Da gibt es jetzt ein Problem mit den doppelten Hochkommas: Wenn Du eines notierst, das eigentlich zum HTML gehört, wird es als Stringende interpretiert. Beim Generieren von HTML mit Attributen ist es einfacher mit den einfachen Hochkommas:
Code:
$txt = file_get_contents("Telefonliste.txt");
$telelist = json_decode($txt, true);
foreach ($telelist as $entry) {
    echo '<li>
        <a class="check"></a>
        <span>' . $entry['Name'] . '</span>
        <span>' . $entry['Telefonnummer'] . '</span>
        <a href="" class="unchecked"</a>
      </li>';
}
 
Ok, soweit ok.
Wenn ich die Daten im Browser eingebe kommen die auch auf die gewünschte Position, nur wenn ich nichts eingebe und Submit auslöse, wird trotzdem eine leer Zeile eingefügt.
Dachte jetzt eigentlich mit isset löse ich es nur aus, wenn Daten übermittelt werden.
Also code sieht folgendermassen jetzt aus:

PHP:
     if(isset($_POST)) {  
    $txt = file_get_contents("telefonliste.json");
$telelist = json_decode($txt, true);
foreach ($telelist as $entry) {

    echo '<li>
        <a href=""class="check" title=""></a>
        <span>' . $entry['Name'] . '</span>
        <span>' . $entry['Telefonnummer'] . '</span>
        <a href="" class="unchecked" title="">löschen</a>
      </li>';
}
}

Wenn ich die Seite neu lade, kommt auch immer folgende Fehlermeldung im Browser:

Code:
Notice: Undefined index: Menge in C:\xampp\htdocs\index.php on line 8

Notice: Undefined index: Ware in C:\xampp\htdocs\index.php on line 9
 
Da in den geposteten Zeilen weder auf einen Index mit dem Namen Menge noch Ware zugegriffen wird , passen diese Meldungen nicht zu dem Quellcode
 
Verstehe ich nicht ganz.
Wenn meine json datei wie folgt aussieht:

JSON:
[{"Name":"Peter","Telefonnummer":"123456789"}]

Dann müsste er doch auf mit:

PHP:
echo '<li>
        <a href=""class="check" title=""></a>
        <span>' . $entry['Name'] . '</span>
        <span>' . $entry['Telefonnummer'] . '</span>
        <a href="" class="unchecked" title="">löschen</a>
      </li>';

auf Name und Telefonnummer aus der json datei zugreifen und ausgeben?
Oder verstehe ich da beim Ablauf was falsch?

Oder liegt das Problem bei den [ " ] und [ ' ]???
 
Ein
PHP:
var_dump($telelist);
nach
PHP:
$telelist = json_decode($txt, true);
Zeigt dir den Inhalt an.
 
Kann mir jemand sagen was ich hier falsch mache?

PHP:
.
.
.
    if(isset($_GET['delete'])) {
unset($list[$i]);
}
.
.
.
$txt = file_get_contents('telefonliste.json');
$list = json_decode($txt, true);
$i=0;       
foreach ($list as $entry) {
     echo         
        '<li>
        <a href=""class="done" title=""></a>
        <span>' . $entry['Name'] . '</span>
        <span>' . $entry['Nummer'] . '</span>
        <a href="index.php?delete=<?php echo $i?>" class="delete" title="Eintrag löschen">löschen</a>
      </li>';
$i++;}
?>

Wenn ich auf den Anker link zum löschen klicke bekomme ich die folgende fehlermeldung im Browser:

Notice: Undefined variable: i in C:\xampp\htdocs\index.php on line 5

Ich kann mir vorstellen, daß der Fehler im PHP Code im Anker liegt
PHP:
        <a href="index.php?delete=<?php echo $i?>" class="delete" title="Eintrag löschen">löschen</a>
aber was genau an der Schreibweise falsch ist, weis ich nicht.

Browserzeile übernimmt auch den php code direkt, und nicht den Inhalt von $i.
Code:
http://localhost/index.php?delete=<?php echo $i?>
 
Du befindest dich bei der fraglichen Zeile schon in einem PHP-Abschnitt, und zwar in der Definition eines Strings. Daher wird das <?php echo $i?> einfach in der String übernommen und erst geparst, wenn Du auf den Link geklickt hast.
Du musst die Variable $i genau so in den String einfügen, wie Name und Nummer:
<a href="index.php?delete=' . $i . '" class="delete" title="Eintrag löschen">löschen</a>
 
Zuletzt bearbeitet:
Zurück