php-problem med flera forumlär

Permalänk
Medlem

php-problem med flera forumlär

Hej, jag har nu suttit i timmar och försökt hitta vad som kan vara felet med min kod. Jag har en sida där en massa textfält listas och där användarna ska kunna mata in uppgifter. Varje rad ska vara separerade från varandra. När användaren har ändrat den text som står i ett textfält måste han uppdatera databasen med den nya texten, så då ska ett formulär skickas iväg med den texten som står på den raden. Därför behöver man ett separat formulär för varje rad. Detta fungerar perfekt för rad 2, 3, 4, 5...osv...men inte för rad 1. Jag förstår inte varför det inte fungerar!! Min kod ser ut som följande:

while ($n<$rows_to_print) { echo '<form method="post" action="row_update.php">'; echo '<tr valign="top">'; echo '<td></td>'; echo '<input type="hidden" name="id" value="'.$database_content[$n][0].'">'; echo '<input type="hidden" name="table" value="'.$table.'">'; echo '<input type="hidden" name="group" value="'.$group.'">'; for ($i=1; $i<$num_columns; $i++) { echo '<td colspan="2" class="table_database_td">'; echo '<p><input type="text" name="column_content[]" class="database_field" value="'.$database_content[$n][$i].'"/></p>'; echo '<input type="hidden" name="title[]" value="'.$column_title[$i].'" />'; echo '<input type="hidden" name="type[]" value="'.$column_type[$i].'" />'; echo '</td>'; } echo '<td valign="top" style="padding-top:4px;"><a onClick="show_confirm(\'delete.php?group='.$group.'&table='.$table.'&id='.$database_content[$n][0].'&show='.$show.'&sort='.$sort.'\')"><img src="images/delete.png" width="15" height="15" /></a></td>'; echo '<td valign="top" style="padding-top:4px;"><input type="submit" name="update_row_submit" value="" class="btn_update"/></td>'; echo '<td valign="top" style="padding-top:4px;"><a onClick="load(\'send.php?group='.$group.'&table='.$table.'&id='.$database_content[$n][0].'&list=none&sort='.$sort.'\')"><img src="images/send.png" width="15" height="15" /></td>'; echo '<td></td></tr>'; echo '</form>'; $n++; }

Det som händer när jag klickar på uppdatera knappen som skickar iväg formuläret för rad 1 är att sidan som formuläret finns på laddas om med nya parametrar i URL'en.
Tack så mycket

Permalänk
Medlem

Hur ser den genererade HTML-koden ut? Vad skiljer sig från rad 1 och exempelvis rad 2 i det webbläsaren ser?

Permalänk
Medlem

Det är det som är det konstiga...jag kan inte se i koden vad som skulle vara fel. Koden för rad 1 och rad 2 ser identisk ut.
Här är koden när jag kör sidan i Chrome:

<form method="post" action="row_update.php" id="0" name="0"> <tr valign="top" class="table_database_row2"> <td></td> <input type="hidden" name="id" value="1"> <input type="hidden" name="table" value="utm_test"> <input type="hidden" name="group" value="utm"> <td colspan="2" class="table_database_td"> <p><input type="text" name="column_content[]" class="database_field" value="Text på rad 1, kolumn 1"/></p> <input type="hidden" name="title[]" value="Kolumn1" /> <input type="hidden" name="type[]" value="varchar(60)" /></td> <td colspan="2" class="table_database_td"> <p><input type="text" name="column_content[]" class="database_field" value="Text på rad 1, kolumn 2"/></p> <input type="hidden" name="title[]" value="Kolumn2" /> <input type="hidden" name="type[]" value="varchar(60)" /></td> <td valign="top" style="padding-top:4px;"> <a onClick="show_confirm('delete.php?group=utm&table=utm_test&id=1&show=all&sort=none')" style="cursor:pointer;"> <img src="images/delete.png" width="15" height="15" /></a></td><td valign="top" style="padding-top:4px;"> <input type="submit" name="update_row_submit" value="" class="btn_update"/></td> <td valign="top" style="padding-top:4px;"> <a onClick="load('send.php?group=utm&table=utm_test&id=1&list=none&sort=none')" style="cursor:pointer;"> <img src="images/send.png" width="15" height="15" /></td><td></td></tr></form> <form method="post" action="row_update.php" id="1" name="1"> <tr valign="top" class="table_database_row1"> <td></td> <input type="hidden" name="id" value="3"> <input type="hidden" name="table" value="utm_test"> <input type="hidden" name="group" value="utm"> <td colspan="2" class="table_database_td"> <p><input type="text" name="column_content[]" class="database_field" value="Text på rad 2, kolumn 1"/></p>< input type="hidden" name="title[]" value="Kolumn1" /> <input type="hidden" name="type[]" value="varchar(60)" /></td> <td colspan="2" class="table_database_td"> <p><input type="text" name="column_content[]" class="database_field" value="Text på rad 2, kolumn 2"/></p> <input type="hidden" name="title[]" value="Kolumn2" /> <input type="hidden" name="type[]" value="varchar(60)" /></td> <td valign="top" style="padding-top:4px;"> <a onClick="show_confirm('delete.php?group=utm&table=utm_test&id=3&show=all&sort=none')" style="cursor:pointer;"> <img src="images/delete.png" width="15" height="15" /></a></td> <td valign="top" style="padding-top:4px;"> <input type="submit" name="update_row_submit" value="" class="btn_update"/></td> <td valign="top" style="padding-top:4px;"> <a onClick="load('send.php?group=utm&table=utm_test&id=3&list=none&sort=none')" style="cursor:pointer;"> <img src="images/send.png" width="15" height="15" /></td><td></td></tr></form> </table>

Detta mostvarar något som ser ut som följande:

Men när jag trycker på den blå pilen, som är submitknappen för varje enskilt formulär så skickas inte formuläret iväg för rad 1...det enda som händer är att parametrarna i URL'en byts ut...från
page.php?group=utm&table=utm_test&show=all&sort=none
till
page.php?group=utm&table=utm_test&show=all&sort=Kolumn2 (dvs namnet på rubriken för kolumn 2)

Tack så mycket

Permalänk
Medlem

Kan du posta koden för tabellhuvudet också?

Förresten, det där är horribelt inkorrekt HTML (<table> får inte ha <form> som barn, IDn måste börja med en bokstav), och du ska absolut inte använda tabeller på det sättet. Dessutom är jag inte säker på att du verkligen behöver olika formulär, men det är en annan fråga.

Permalänk
Medlem

Tror faktiskt att jag hittade felet. Hittade det när jag gick igenom koden för tabellhuvudet. Ett ">" hade missats att skriva ut i tabellhuvudet. Så nu verkar det fungera igen.

Citat:

Förresten, det där är horribelt inkorrekt HTML (<table> får inte ha <form> som barn, IDn måste börja med en bokstav), och du ska absolut inte använda tabeller på det sättet. Dessutom är jag inte säker på att du verkligen behöver olika formulär, men det är en annan fråga.

Du får gärna upplysa mig om svaret på dina andra kommentarer :). Varför får inte <table> har <form> som barn? Varför måste ID'n börja med bokstav? På vilket sätt använder jag tabeller fel?

Tack så mycket för hjälpen

Permalänk
Medlem
Skrivet av knuspaflex:

Du får gärna upplysa mig om svaret på dina andra kommentarer :). Varför får inte <table> har <form> som barn?

För att specifikationen säger det.

Skrivet av knuspaflex:

Varför måste ID'n börja med bokstav?

För att specifikationen säger det.

Skrivet av knuspaflex:

På vilket sätt använder jag tabeller fel?

Du använder tabeller för att lägga upp din layout (formulär räknas inte som tabulär data), något som specifikationen inte rekommenderar (”Tables should not be used purely as a means to layout document content as this may present problems when rendering to non-visual media.”, HTML5-specifikationen är ännu tydligare på den punkten). Ämnet har behandlats många gånger förr. (Det är inte så att man aldrig ska använda tabeller, det är bara så att man ska använda dem till samma sak du använder tabeller till i exempelvis böcker, dvs. tabulär data; formulär hamnar i princip aldrig i den kategorin. Det finns bättre sätt att uppnå målet.)

Edit: Det här svaret på SO förklarar saken mycket bra.

Permalänk
Medlem
Skrivet av You:

Tänkte bara sticka in en fot i diskussionen och höra om du vet någon bra sida på svenska där man kan läsa mer grundligt om html5 och framförallt skillnaden mot xhtml? Har precis läst klart inte bara en utan två kurser i webbutveckling där jag fick lära mig att xhtml var det "senaste och bästa", men jag märker att jag har blivit lurad...

Permalänk
Avstängd

Jag tror att xhtml kommer att hoppas över av de flesta japp. Ingen ide att börja tänka XHTML.

Permalänk
Medlem
Skrivet av lolight:

Jag tror att xhtml kommer att hoppas över av de flesta japp. Ingen ide att börja tänka XHTML.

Man tycker ju att även universitetslärare borde känna till detta...

Permalänk
Medlem
Skrivet av Amöban:

Tänkte bara sticka in en fot i diskussionen och höra om du vet någon bra sida på svenska där man kan läsa mer grundligt om html5 och framförallt skillnaden mot xhtml? Har precis läst klart inte bara en utan två kurser i webbutveckling där jag fick lära mig att xhtml var det "senaste och bästa", men jag märker att jag har blivit lurad...

Åsikter? Nej, det som står i specifikationen är fakta ;).

Ingen på svenska, nej, men Dive into HTML5 ger både en bra introduktion och några få argument till varför man bör använda HTML5 redan nu. Generellt sett så kan man väl säga att den ”XHTML” (oftast kodsoppa skickad som text/html) folk använder egentligen inte ger något; den enda skillnaden är att du måste vara mer noggrann som utvecklare (något du ska vara utan att språket tvingar dig, och något som inte är ett tillräckligt villkor för att du ska skriva bra kod) och att sidorna dör horribelt när något går fel (som i spottar felmeddelanden på användaren). Fördelarna med XHTML kommer när man börjar generera (eller tolka, om det känns relevant) sin kod med XML-verktyg, något nästan ingen gör nuförtiden.

Dessutom säger både Webkit- och Mozillautvecklarna i princip att man inte bör använda XHTML eftersom det inte gör någon skillnad, och James Bennet har en väldigt bra artikel som förklarar varför de flesta som påstår att de använder XHTML egentligen använder HTML, och att det då inte ger något. Så, i korthet; mer jobb, ingen vinst. Det här svaret på SO har också en del bra poänger. Anledningen till att man sedan ska välja HTML5 framför HTML4.01 är enkel; det är ingen skillnad på hur webbläsarna tolkar innehållet, och HTML5 har en enklare om än meningslös doctype; alltså förlorar man inget, men vinner lite på att använda HTML5. Och så är det, typ, modernt och grejer.

Skrivet av lolight:

Jag tror att xhtml kommer att hoppas över av de flesta japp. Ingen ide att börja tänka XHTML.

HTML5 har även en XML-serialisation, som i princip är det som kommer ta över efter XHTML. Om någon nu känner behovet att använda den, det vill säga.

Permalänk
Medlem
Skrivet av You:

Åsikter? Nej, det som står i specifikationen är fakta ;).

Ingen på svenska, nej, men Dive into HTML5 ger både en bra introduktion och några få argument till varför man bör använda HTML5 redan nu. Generellt sett så kan man väl säga att den ”XHTML” (oftast kodsoppa skickad som text/html) folk använder egentligen inte ger något; den enda skillnaden är att du måste vara mer noggrann som utvecklare (något du ska vara utan att språket tvingar dig, och något som inte är ett tillräckligt villkor för att du ska skriva bra kod) och att sidorna dör horribelt när något går fel (som i spottar felmeddelanden på användaren). Fördelarna med XHTML kommer när man börjar generera (eller tolka, om det känns relevant) sin kod med XML-verktyg, något nästan ingen gör nuförtiden.

Dessutom säger både Webkit- och Mozillautvecklarna i princip att man inte bör använda XHTML eftersom det inte gör någon skillnad, och James Bennet har en väldigt bra artikel som förklarar varför de flesta som påstår att de använder XHTML egentligen använder HTML, och att det då inte ger något. Så, i korthet; mer jobb, ingen vinst. Det här svaret på SO har också en del bra poänger. Anledningen till att man sedan ska välja HTML5 framför HTML4.01 är enkel; det är ingen skillnad på hur webbläsarna tolkar innehållet, och HTML5 har en enklare om än meningslös doctype; alltså förlorar man inget, men vinner lite på att använda HTML5. Och så är det, typ, modernt och grejer.

HTML5 har även en XML-serialisation, som i princip är det som kommer ta över efter XHTML. Om någon nu känner behovet att använda den, det vill säga.

Tack för dina tips! Har läst ett par kapitel i "Dive into HTML5", och den är både intressant och skriven på en bra nivå, funkar helt ok att läsa på engelska. Det jag blir så förundrad över är att lärare på kurser i webbutveckling har så dålig koll! Fast det är klart, utvecklingen går snabbare än man hinner göra om kursplanen antar jag. Men varför har ingen lärare nämnt "draconian error handling" och MIME-type när vi har läst om XHTML? Skumt.