13. februar 2003 - 15:48Der er
11 kommentarer og 1 løsning
Redigere output fra database
Jeg mangler noget hjælp til hvordan jeg kan redigere i det output som jeg hiver ud fra en mysql database.
Lad os sige at jeg i min database har en tabel med tre felter - id, navn og adresse. Jeg ønsker nu at kunne redigere i det enkelte navn, hvorfor jeg hiver noget data ud fra databasen.
mysql_connect ("$mysql_host" , "$mysql_user" , "$mysql_pass"); mysql_select_db ("$mysql_database"); $tabelnavne = mysql_query ("SELECT navn FROM $mysql_table ORDER BY id DESC") or die (mysql_error ());
Så godt så langt. Nu har jeg fået udskrevet alle navne fra tabellen i nogle inputfelter.
Nu kommer vi så til mit store problem. Når jeg har redigeret i et vilkårligt navn i en af inputfelterne, skal jeg jo gerne have opdateret navnet i database tabellen, men jeg mangler en reference til både navn samt id for at tabellen kan vide hvorhenne og i hvilket navn den skal redigere. Hvordan gør jeg det ?
Jeg har fundet ud af at redigeringsfunktionen skal se således ud.
$tabelnavne = mysql_query ("UPDATE $mysql_table SET navn=\"$navn\" WHERE id=\"$id\"");
Selvfølgelig mangler jeg noget ved inputfelterne så jeg kan submitte redigeringen, og jeg har da også fumlet rundt med noget ala dette.
Så har jeg id referencen til hvert navn når jeg putter ovenstående kode ind i while-sætningen, men jeg kan ikke lige tricke den med at få fat på referencen til hver enkelt navn.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Dette et mit seneste eksempel jeg sidder og fumler med, og jeg kan som nævnt ikke finde ud af at få sat en reference på det enkelte navn, så jeg ved $navn = kan referere til det korrekte inputfelt.
mysql_connect ("$mysql_host" , "$mysql_user" , "$mysql_pass"); mysql_select_db ("$mysql_database"); $tabelnavne = mysql_query ("SELECT id , navn FROM $mysql_table ORDER BY id DESC") or die (mysql_error ());
if (isset ($_GET['edit']) && $_GET['edit'] == "name") { $id = $_GET['id']; $navn = "Test"; // blot en test for at se om det virker... $contents = mysql_query ("UPDATE $mysql_table SET navn=\"$navn\" WHERE id=\"$id\"") or die (mysql_error ()); }
Til at generer formularen: mysql_connect ("$mysql_host" , "$mysql_user" , "$mysql_pass"); mysql_select_db ("$mysql_database"); $tabelnavne = mysql_query ("SELECT navn, id FROM $mysql_table ORDER BY id DESC") or die (mysql_error ()); $ids = array(); while ($tabelnavn = mysql_fetch_row ($tabelnavne)) { echo "<input name=\"navn".$tabelnavn[1]."\" type=\"text\" value=\"$tabelnavn[0]\">"; $ids[] = $tabelnavn[1]; } echo "<input type=\"hidden\" value=\"".implode("|", $ids)."\" name=\"ids\">";
Til at gemme informationerne: $ids = explode("|",$ids); foreach($ids as $value) { $sql = "UPDATE $mysql_table set navn='".addslashes($_POST["navn$value"])."' where id='$value'"; mysql_query($sql); }
Jeg kan ikke helt få det til at virke. Der sker ingenting når jeg prøver at redigere et navn. Det erstattes blot af selvsamme navn igen.
mysql_connect ("$mysql_host" , "$mysql_user" , "$mysql_pass"); mysql_select_db ("$mysql_database"); $tabelnavne = mysql_query ("SELECT id , navn FROM $mysql_table ORDER BY id DESC") or die (mysql_error ());
if (isset ($_GET['edit']) && $_GET['edit'] == "name") { $idnum = explode ("|" , $idnum); foreach ($idnum as $value) { $tabelnavne = mysql_query ("UPDATE $mysql_table SET navn='".addslashes($_POST["navn$value"])."' WHERE id='$value'") or die (mysql_error ()); } }
Når jeg trykker på Edit opstår der nogle problemer, som lader til at ligge i linierne...
$idnum = explode ("|" , $idnum); hvor jeg får fejlmeddelelsen, Undefined variable: idnum.
$tabelnavne = mysql_query ("UPDATE $mysql_table SET navn='".($_POST["navn$value"])."' WHERE id='$value'") or die (mysql_error ()); hvor jeg får fejlmeddelelsen, Undefined index: navn.
Synes godt om
Slettet bruger
13. februar 2003 - 23:21#6
Hvad med det her? if (isset ($_GET['edit']) && $_GET['edit'] == "name") { $idnumbers = explode ("|" , $_POST["idnum"]); foreach ($idnumbers as $value) { $tabelnavne = mysql_query ("UPDATE $mysql_table SET navn='".addslashes($_POST["navn$value"])."' WHERE id='$value'") or die (mysql_error ()); } }
Desværre, stadigvæk samme fejl. Problemet er at $idnumbers er tomt, den får ingen værdi hæftet på sig, og dermed bliver $value jo også tomt. Jeg skal ikke kunne sige hvorfor da jeg ikke er en haj til php, men jeg har faktisk løst mit problem, omendt måske på en mere indviklet måde end dig, men det virker ihvertdfald :)
I stedet for at udskrive alle id numre i et hidden inputfelt, tænkte jeg om man ikke lige så godt kunne tælle antal id numre fra tabellen i databasen, og så køre en while-sætning på dette nummer. Det prøvede jeg så, og kom frem til dette.
if (isset ($_POST['edit_output'])) { $antal = mysql_query ("SELECT id FROM $mysql_table") or die (mysql_error ()); $optal = mysql_num_rows ($antal); $val = 1; while ($val <= $optal) { $add_edits = mysql_query ("UPDATE $mysql_table SET navn=\"".$_REQUEST['navn'.$val]."\" WHERE id=\"$val\"") or die (mysql_error ()); $val = $val + 1; } }
Jeg skal lige have optimeret koden, men ellers tror jeg at jeg vil beholde dette.
Direkte kan jeg ikke bruge det, da det jo ikke fungerer, men som inspiration kan jeg sagtens :) Anyway tak for din hjælp.
Sidste chance hvis du vil have 12 points...
Synes godt om
Ny brugerNybegynder
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.