Ik maak een edit page de de verandering uiteindelijk doorstuurd naar de editStudent.php
Maar krijg hier dus een foutmelding. Als ik het goed begrijp iets met een quote? Ik zie de fout zelf niet.
syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)
Waarom moeilijk doen en alles echo'en alsof het een put is? ;-)
Je kan alles ook prima buiten je PHP-blok zetten, en alleen de nodige variabelen tussen de PHP-tags.
Je mist een punt (.) achter $row['ID'] en zo ook op regel 7 en 8. Als je een beetje redelijke PHP editor zou gebruiken dan zou je dat al gezien hebben alvorens je de code zou testen. Kijk eens naar het gratis Netbeans.
Verder zijn inderdaad al die echo's nergens voor nodig. Maak liever een nette template
Hij geeft nu een Illegal string offset 'ID', Illegal string offset 'Firstname' en Illegal string offset 'Lastname'.
Ik vroeg me tog wel hoef of ik niet een GET variablen aan moet maken, zodat hij weet welke row hij moet aanpassen en welke waardes hij in de textbox moet zetten.
echo echo echo echo... Ain't nobody got time for that.
Je kunt, zoals @Ariën aangeeft, te allen tijde in en uit een PHP-blok springen.
Ik weet ook niet of het volledig conform HTML-specs is om attribuut-waarden in HTML te omvatten met enkele quotes. Ik kan mij wel zo voorstellen dat dit eerder voor problemen zorgt met bepaalde invoer. Op dat vlak kan de functie die @Ivo aandroeg weer helpen, maar NIET met het default gedrag van deze functie (2e parameter, ENT_COMPAT | ENT_HTML401), omdat deze enkele quotes met rust laat.
Verder lijkt het mij verstandig om eens na te gaan denken hoe je dit soort pagina's organisatorisch vormgeeft en opdeelt. Ik bedoel, ben je ooit bezig met het in bulk aanpassen van de namen van studenten? En zelfs als je dat doet, de huidige opzet is nu zo dat je slechts de informatie van één student kunt submitten omdat alles in een eigen form zit... Waarom stop je dan alles in aparte forms? Of uberhaupt in een form? Wat ik eerder zou verwachten is dus een readonly lijst van studenten met een edit-hyperlink naar een enkel studentenprofiel.
Ook zou je eens kunnen kijken naar naamgeving (editStudent[color=#ff0000]s[/color].php?) en het opdelen van taken in gescheiden acties. Maak bijvoorbeeld eens één script, bijvoorbeeld /admin/student.php, waarin je de volgende acties logisch scheidt:
- default actie (lijst van studenten, wellicht gefilterd op klas?)
- addStudent (het formulier)
- addStudentProcess (de verwerking van dit formulier)
- editStudent (het formulier, geldig id vereist)
- editStudentProcess (de verwerking van dit formulier)
- deleteStudent (waarbij je een student dus niet daadwerkelijk verwijdert, zoals reeds aangehaald in een andere thread)
En los van dit alles - doe je iets met character encoderingen? In je PDO dsn-string, in de meta-tag van je webpagina? In een mogelijke Content-Type header? In je database-tabellen? Dit is mogelijk een dingetje als je studentendata gaat im- en exporteren, dat wordt dan een ramp. Zorg dat dat ook op orde is.
EDIT: en nog iets, weet niet of dit tegenwoordig nog zo is, maar als je connectie mislukt dan worden alle connectie-gegevens uitgespuugd. Die constructie met echo is dus niet erg handig, want stel nu dat de database -om wat voor reden dan ook- niet actief is. Er is dan in principe niets mis met de connectie-parameters, maar die gooi je dan met een echo gewoon op straat.