Avatar billede hresben Nybegynder
13. marts 2008 - 15:04 Der er 16 kommentarer og
1 løsning

Tildel tabelrække radio button. Klar / Færdig / Slet

Jeg er spritny i PHP-verdenen, så vil sætte stor pris på hvis nogen kan fortælle mig hvordan jeg griber følgende problemstilling bedst an:
Jeg har lavet en form som indsætter data i en MySQL tabel, og lister det samlede indhold på "modtagersiden".
Jeg vil frygteligt gerne have tildelt 3 radiobuttons til hver af disse rows, som så giver muligheden for at ændre status imellem 2 valgmuligheder, eller helt at slette den pågældende row fra databasen.

Jeg ved bare ikke hvor jeg skal begynde eller slutte.
Jeg har et asscending ID som giver et unikt ID til alle rows. Jeg forestiller mig at jeg skal bruge dette, men jeg ved ikke hvordan jeg får radio buttons til at "føle" hvilket ID jeg ændrer. Det skal jo gerne være dynamisk så jeg ikke skal indtaste alle IDs manuelt.

Nogen som kan gennemskue hvad jeg mener, og måske hjælpe mig i den rigtige retning?
Avatar billede jakobdo Ekspert
13. marts 2008 - 15:18 #1
Hvis vi tager noget HTML fra bunden, så er en radiobutton jo følgende:

Følgende gør man kan sende en JA eller NEJ retur.
Ja: <input type="radio" name="test" value="ja">
Nej: <input type="radio" name="test" value="nej">

Værdien kan udlæses af $_POST eller $_GET med: ['test']

Hvis der er tale som flere radiobuttons, kan man f.eks. lave:
Ja: <input type="radio" name="test[1]" value="ja">
Nej: <input type="radio" name="test"[1] value="nej">
Ja: <input type="radio" name="test[2]" value="ja">
Nej: <input type="radio" name="test"[2] value="nej">
Ja: <input type="radio" name="test[3]" value="ja">
Nej: <input type="radio" name="test"[3] value="nej">

Så har man svar i et array.
Avatar billede hresben Nybegynder
13. marts 2008 - 15:36 #2
Det er jeg klar over.
Lad os sige jeg laver en rullemenu istedet.
Den skal automatisk lave et rullegardin til hver entry i min tabel med 3 muligheder.
Når man så trykker "Send" skal den ændre de pågældende entries (rows) i min tabel, til den pågældende værdi i mit rullegardin.
Avatar billede jakobdo Ekspert
13. marts 2008 - 15:40 #3
Lad mig se din SQL og din kode.
Måske jeg kan tilføje det.
Avatar billede hresben Nybegynder
13. marts 2008 - 15:51 #4
Det ville være dejligt.
Her er min form:
<form action="todo.php" method="post">
<p>Navn:</p> <input type="text" name="navn" /> <br>
<p>Alder:</p> <input type="text" size="4" maxlength="3" name="alder"><br>
<p>E-mail:</p> <input type="text" name="email" /><br><br>
<input type="submit" value="Opret" />
</form>

Her er todo.php:
<?php
include("../phpkursus/connect.php"); //Inkluder filen der connecter til min database
?>
<?php
//Her indsætter den værdierne fra formen til tabellen
$navn = $_POST["navn"];
$alder = $_POST["alder"];
$email = $_POST["email"];
if ($navn == $null || $alder == $null || $email == $null)
{
    echo "Du skal udfylde alle felter";
}
else
{
mysql_query("INSERT INTO optus_dk_test (navn, alder, email) VALUES ('$navn', '$alder', '$email')") OR DIE(mysql_error());
}
?>
<br><br>
<?php
//Her henter den al data fra tabellen og skriver det til siden med et loop som kører hele tabellen igennem
$query = mysql_query("SELECT * FROM optus_dk_test");
while($row = mysql_fetch_assoc($query)) //Lav en while der kører alle rækker igennem
{
    echo $row['id'] . " : " . $row['navn'] . " - " . $row['alder'] . " - " . $row['email'] . "<br/>";
}
?>
<br><br>
<br>
<a href="../phpkursus" target="self">TILBAGE</a>

Jeg vil egentlig gerne bare have en knap hvor der står "Slet" ud for hver entry, som så sletter den pågældende row fra min tabel.
Avatar billede mibu Nybegynder
13. marts 2008 - 16:35 #5
Kikker med! Ok?
Avatar billede hresben Nybegynder
13. marts 2008 - 16:40 #6
Ja endelig... Jo flere des bedre
Avatar billede jakobdo Ekspert
13. marts 2008 - 17:14 #7
F.eks. kunne man starte med at tilføje dette som output:

echo $row['id'] . " : " . $row['navn'] . " - " . $row['alder'] . " - " . $row['email'] . "<br/>";
    echo 'Klar <input type="radio" name="action['.$row['id'].']" value="1" /> ';
    echo 'Færdig <input type="radio" name="action['.$row['id'].']" value="2" /> ';
    echo 'Slet <input type="radio" name="action['.$row['id'].']" value="0" />';

Så burde man kunne vælge radiobutton som så har en given værdi.
1 = klar
2 = færdig
0 = slet

Så skal der selvfølgelig laves noget som indsætter, det kan vi tage senere.
Og så skal der kun laves udtræk på dem hvor action > 0.
Avatar billede hresben Nybegynder
13. marts 2008 - 17:44 #8
Aah.. Jeg var ikke klar over at man kunne indsætte html-kode med echo.
Mange tak for det, det ser ud som det skal.

Jeg har prøvet at hente mine data på modtagersiden ved hjælp af:
$sletnummer1 = $_POST["action"];
$sletnummer2 = $_POST["action[10]"];
$sletnummer3 = $_POST["action[]"];

$sletnummer1 viser bare Array, så jeg går ud fra at den har registreret mit valg.
Jeg kan bare ikke finde ud af at specificere hvilken data jeg gerne vil hente ud, og uden det, kan jeg ikke lave et loop. Jeg leger lidt med det, men hvis en af jer kan lette vejen for mig, ville det være skønt.
Avatar billede hresben Nybegynder
13. marts 2008 - 18:03 #9
For øvrigt kan jeg oplyse at der, når jeg bruger print_r($_POST["action"]); står f.eks.:
Array
(
    [3] => 1
)
Så jeg kan se at ID 3 har værdi 1. Det er jo fantastisk, men jeg kan ikke få den værdi tilegnet en variable.
Avatar billede jakobdo Ekspert
13. marts 2008 - 19:02 #10
Jo, for den er jo netop en variabel.
Du kan f.eks. tilgå den via:

$_POST['action'][3]
Avatar billede hresben Nybegynder
13. marts 2008 - 19:12 #11
Mange tak for hjælpen!
Det sidste jeg mangler at vide er så: Hvordan henter jeg hvilket ID der er blevet ændret?
Nu ved jeg at værdien for min form er 1. Men hvordan ved jeg hvilket ID der er ændret?
Jeg har jo mange på listen.
Jeg kan godt give lidt ekstra point hvis du vil, ved godt at jeg hænger dig lidt i skørterne
Avatar billede hresben Nybegynder
13. marts 2008 - 19:43 #12
Det jeg mener er:
$_POST['action'][3] <-- 3-tallet skal jo gerne være en variabel, som bliver angivet først.

Altså f.eks.:
$idchange = $POST['action'][id på den entry som er ændret]; ????
Avatar billede hresben Nybegynder
13. marts 2008 - 21:22 #13
For lige at tage den tilbage til the basics.
Jeg vil gerne vide hvordan jeg sletter en udvalgt row i min tabel i en mysql database. Dette kan gøres med et link, radio button eller whatever.
Jeg er ved at køre helt sur i det :-S

Hjælp mig kære eksperter!
Avatar billede jakobdo Ekspert
14. marts 2008 - 11:57 #14
Du kan løbe dem alle igennem med:

foreach($_POST['action'] AS $id => $value){
echo 'Felt: ' . $id . ' har v&aelig;rdi: ' . $value . '<br />';
}
Avatar billede hresben Nybegynder
20. marts 2008 - 14:10 #15
1000 tak for hjælpen.
Smider du et svar, så du kan få dine velfortjente point?
Avatar billede jakobdo Ekspert
21. marts 2008 - 07:19 #16
Svar!
Avatar billede jakobdo Ekspert
21. marts 2008 - 12:05 #17
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester