Arrays
Frank
- php
0 Bernhard Mecl0 Frank0 Bernhard Mecl0 Frank0 Bernhard Mecl0 Frank0 Bernhard Mecl0 Frank
Hi Ho.
1. Wenn ich ein Array habe ist dann nur der Text, oder die jeweilige Variable darin gespeichert ?
2. Wie kann ich teile aus einem Array entfernen ?
Danke im Vorraus für alle gescheiten antworten.
- Wenn ich ein Array habe ist dann nur der Text, oder die jeweilige
Variable darin gespeichert ?
hm?! Ich empfehle zu aller erst http://www.php.net/manual/en/language.types.array.php
- Wie kann ich teile aus einem Array entfernen ?
Generell unset($array[$key]);
Je nach Anwendung auch array_pop(), array_reduce() etc.
- Wie kann ich teile aus einem Array entfernen ?
Generell unset($array[$key]);
unset($array[$key]); hört sich passend an.
nur wie funktinoiert das genau ?
die ausgabe eines arrays ist zb so:
text1 | Entfernen
text2 | Entfernen
text3 | Entfernen
text4 | Entfernen
und wenn der user dann zb auf Entfernen hinter text2 klickt, dann lädt die seite neu und es steht nur noch
text1 | Entfernen
text3 | Entfernen
text4 | Entfernen
da
wie sieht das script dazu aus ? oder wie sieht der link dann aus ?
vieleicht so:
$arr[] = $variable;
foreach ($arr as $one)
{
print .$one." | <a href=datei.php?$key";
}
$key = $_GET['key'];
unset($array[$key]);
aber ich glaube da bin ich auf dem falschen weg, oder ?
aber ich glaube da bin ich auf dem falschen weg, oder?
Zumindest konzeptionell. Ich kenne zwar die konkrete Anwendung nicht, es hört sich für mich aber so an, als sollten diese "texts" dauerhaft gespeichert werden. In dem Fall wirst Du auch mit einer korrekten Version Deines Ansatzes auf die Dauer nicht glücklich werden und an dem Abspeichern in einem file oder einer Datenbank nicht vorbeikommen. Bevor ich das allerdings vertiefe, würden mich ein paar ergänzende Angaben zu Deinem Vorhaben interessieren.
na gut:
also ich habe ein array das ich in einer session mit session_register() nach jedem mal ausführen speichere. ich füge mit <...?id=mein text"> per $_GET['id']; dem array texte hinzu und möchte die auch wieder löschen können mit dem befehl unset[...].
nur wie der link dazu aussieht weiß ich nicht.
hhhmmm reicht das ?
also ich habe ein array das ich in einer session [...] speichere.
Ahja, dann ist also das array auch ohne Übergabe durch das Forumular in jedem script verfügbar. Wenn Du es schon schaffst, Texte dem array hinzuzufügen, dann kann es ja auch nicht so schwer sein, Texte wieder zu löschen.
<a href="foo.php?delete=3">Lösche Text in $array[3]</a>
.
.
.
unset($array[$_GET['delete']]);
das geht nicht und ausserdem soll der link in die schleife der ausgabe des arrays. was ich vergessen hatte ist, dass das 2 arrays sind die da ausgegeben werden.
a1|a2 | Entfernen
b1|b2 | Entfernen
c1|c2 | Entfernen
beim klick auf entfernen bei der array ausgabe b
sollte nur noch das hier stehen
a1|a2 | Entfernen
c1|c2 | Entfernen
wie kann ich den link in die schleife einbauen ?
das geht nicht
Das geht schon.
was ich vergessen hatte ist, dass das 2 arrays sind die da ausgegeben werden.
Dann müssen eben die entsprechenden Einträge in beiden arrays entfernt werden: unset($array1[$_GET['delete']], $array2[$_GET['delete']]);
wie kann ich den link in die schleife einbauen ?
echo '<a href="foo.php?delete='.$i.'">'; innerhalb der Schleife ausführen?!
Nein das geht nicht:
hier das script:
---------------
<?php
session_start();
if (isset ($arr_nr))
{
unset($arr_nr[$_GET['del']]);
unset($arr_euro[$_GET['del']]);
unset($arr_text[$_GET['del']]);
$nr = $_GET['nr'];
$euro = $_GET['euro'];
$text = $_GET['text'];
$arr_nr[] = $nr;
$arr_euro[] = $euro;
$arr_text[] = $text;
$summe = 0;
for ($i=0;$i<count($arr_euro); $i++)
{
$summe+= $arr_euro[$i];
}
print "<table border="1" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0" width="70%">";
print "<tr>";
print "<td align="center" width="41">Nr.</td>";
print "<td align="center" width="100">Bestell-Nr.</td>";
print "<td align="center" width="270">Beschreibung</td>";
print "<td align="center">Preis</td>";
print "</tr>";
for($i=1;$i<count($arr_nr);$i++)
{
print "<tr>";
print "<td align="center">".$i."<a href="karte.php?del=$i">Löschen</a></td>";
print "<td align="center">".$arr_nr[$i]."</td>";
print "<td align="center">".$arr_text[$i]."</td>";
print "<td align="center">".$arr_euro[$i]." € </td>";
print "</tr>";
}
print "<tr>";
print "<td align="center"></td>";
print "<td align="center"></td>";
print "<td align="center"></td>";
print "<td align="center"></td>";
print "</tr>";
print "</table>";
print "<table width="70%">";
print "<tr>";
print "<td align="center" width="412"></td>";
print "<td align="center" style="border-style: solid; border-width: 1">".array_sum($arr_euro)." € </td>";
print "</tr>";
print "</table>";
session_register("arr_nr");
session_register("arr_euro");
session_register("arr_text");
}
else
{
print "Ein Fehler ist aufgetreten starten sie die Seite Neu.";
}
?>
<br>
<br>
<br>
<a href="karte.php?nr=001&euro=4.70&text=Salami Pizza Classic">001</a>
<a href="karte.php?nr=002&euro=5.20&text=Hawaii Pizza">002</a>
<a href="karte.php?nr=003&euro=1.20&text=Cola">003</a>
<br>
<br>
<br>
<a href="start.php">Neu Starten ...</a>
---------------
und hier der link, schau es dir mal an.
füge mal 3 - 4 pizzen hin und lösche dann mal eine (an der stelle sollte dann schon die ganze zeile weg sein) und wenn man dann noch mal eine pizza hinzufügen will spinnt alles.
http://mitglied.lycos.de/djwoelk3/test/zeile/start.php
???
Nein das geht nicht
DAS GEHT, wenn man es korrekt implementiert!
for($i=1;$i<count($arr_nr);$i++)
Natürlich funktioniert das so nicht, weil die gewohnte Indexreihenfolge durch unset() nicht mehr gegeben ist. Verwende z.B. foreach($arr_nr as $key=>$value).
P.S.: 'Michael W.'=='Frank'?
DAS GEHT, wenn man es korrekt implementiert!
for($i=1;$i<count($arr_nr);$i++)
Natürlich funktioniert das so nicht, weil die gewohnte Indexreihenfolge durch unset() nicht mehr gegeben ist.
wie meinst du das ?
Verwende z.B. foreach($arr_nr as $key=>$value).
jetzt geht garnix mehr ...
der fehler liegt wo anders, oder ?
P.S.: 'Michael W.'=='Frank'?
Nein, wir arbeitet zusammen am selben projekt.
Verwende z.B. foreach($arr_nr as $key=>$value).
Das ist bestimmt nicht alles was am script angepasst werden muss, wenn es das wirklich sein sollte, denn ich gehe eher von einer fehlerhaften "if else" technik aus.
schau dir die seite nochmal an:
http://mitglied.lycos.de/djwoelk3/test/zeile/start.php
beim eintragen funktioniert alles nur beim löschen bleiben leere zeilen übrig. das soll weg.
wie ?
Danke
Das ist bestimmt nicht alles was am script angepasst werden muss
_Das_ glaub ich Dir aufs Wort, nur fehlt mir im Moment leider die Muße, Dir korrekten code auf dem Silbertablett zu servieren.