Vraag & Antwoord

Webprogrammeren & scripting

Vraag over een SQL query

41 antwoorden
  • Het gaat dus om een edit formulier? Je kunt gewoon de data opvragen mbv. een query, en dan invullen in het value attribuut van de inputvelden. <input type=text size=15 name=loginname value=$rij["login"]>
  • Klopt het gaat om een edit formulier. Als ik in het huidige formulier dit er neer zet <input type=text size=15 name=loginname value=$rij["login"]> dan komt er in het formulier veld dit te staan:$rij["login"] Als ik er dit van maak: <input type=text size=15 name=loginname value='<?php echo $rij["login"] ?>'> dan wordt er nog niets weergegeven in het form veld.
  • probeer eens [code:1:00e72a0c46]<input type="text" size="15" name="loginname" value="<?php echo $rij['login']; ?>" />[/code:1:00e72a0c46] of anders geheel in PHP: [code:1:00e72a0c46]<?php echo '<input type="text" size="15" name="loginname" value="' . $rij['login'] . '" />'; ?>[/code:1:00e72a0c46]
  • En als het dan nog leeg blijft, mankeert er iets aan je query. Als het om één user gaat, heb je maar één resultaat nodig. Dus een query à la: SELECT * FROM users WHERE login = "pietjepuk"
  • Bedankt voor de snelle reactie: Ik heb beide opties getest maar helaas geen foutmelding maar ook geen gegevens die in de database staan. Zijn er nog meer mogelijkheden ? Een andere query misschien ? Alle reacties / tips zijn welkom.
  • Verwondert het je echt, dat er niets uit een database komt, als er niets in staat? Maak dan eerst maar eens een invoerformulier, en voer wat data in. Of voer gewoon wat fake data in met phpmyadmin of zo.
  • Nee hoor. Het verwonder mij niks als er niks in zou staan. Maar er staan 3 record in. Boven het formulier wordt netjes de gegevens weer gegeven DIt komt door de volgende regels: [code:1:cda438cdfc] echo $rij["login"]. "<br> " ; echo $rij["password"]. "<br>"; echo $rij["email"]. "<br>"; [/code:1:cda438cdfc] Het verwondert mij dus wel dat de gegevens niet worden weergegeven in de formulier velden.
  • de while-loop die alle mysql-resultaten ophaalt en toont wordt te vroeg gesloten. Rij is daarna leeg en van die array wil je vervolgens gegevens tonen in je formulier. Het moet als volgt: [code:1:d2b8096330] <?php "voer query uit en haal resultaat op" while ($rij = mysql_fetch_array($resultaat)) { ?> "hieronder een voorbeeld van het formulier" <form> <input type="text" size="15" name="loginname" value="<?php echo $rij['login']; ?>" /> </form> <?php } ?>[/code:1:d2b8096330]
  • OK bedankt. Dit werkt goed. Alleen moet ik wel de query aanpassen aangezien ik nu alle gegevens te zien krijg en het is natuurlijk niet de bedoelding dat de bezoekers deze gegevens te zien krijgt. Mocht ik hier niet uit komen dan laat ik het nog even weten.
  • bedoel je de gegevens van alle gebruikers ? te zien krijgt. ik ga van uit dat elke user een eigen ID heeft (werkt wel net zo makkelijk) [code:1:fe344218b4] $sql = "SELECT * FROM users WHERE id=".$_GET['id'].""; [/code:1:fe344218b4] als je de id mee stuurt in de adres balk, als jet met inloggen een sessie gebruikt, en daar sla je de ID in op: [code:1:fe344218b4] $sql = "SELECT * FROM users WHERE id=".$_SESSION['id'].""; [/code:1:fe344218b4] en voor de zekerheid dat er maar 1 record geslecteerd wordt kan je altijd nog dit toevoegen: [code:1:fe344218b4] $sql = "SELECT * FROM users WHERE id=".$_SESSION['id']." LIMIT 1"; [/code:1:fe344218b4] ik hoop dat je hier iets mee kunt.
  • En daar is dit gedeelte van de query voor bedoeld: ...WHERE login = "pietjepuk"
  • Bedankt voor de tips. :D Helaas is het mij nog niet helemaal gelukt. :( Het inlog formulier wordt verwerkt door process.php [code:1:f4a40ea7d4] $sql = "select * from users where login = '$login' and password = '$password'"; $result = mysql_query($sql ,$db); if ($myrow = mysql_fetch_array($result)) { do { $uid = $myrow["userid"]; $uname = $myrow["login"]; } while ($myrow = mysql_fetch_array($result)); $loggedin = true; $upwd = $password; $msg = "Hartelijk welkom $uname, u bent ingelogd. <br/><br/><a href=index.php>Klik hier</a> om terug te gaan naar de homepage."; } else { $loggedin = false; $upwd = ""; $uid = ""; $uname = ""; $msg = "Sorry, Uw gebruikersnaam en / of wachtwoord zijn onjuist.<br/><br/> Klik op de knop vorige in uw browser en probeer het nogmaals. <br/><br/>Wachtwoord vergeten ? <a href=forgot.php>klik hier</a>.<br/>Heeft u nog geen gebruikersnaam ? <a href=newuser.php>klik dan hier.</a>"; } session_register("loggedin"); session_register("upwd"); session_register("uid"); session_register("uname"); ?> [/code:1:f4a40ea7d4] Om te controleren of de gebruiker wel ingelogd is om zijn gegevens te kunnen wijzigen neem ik in mijn bestaande edit formulier de volgende code op: [code:1:f4a40ea7d4] <?php if (logincheck($uid, $upwd)) { ?> [/code:1:f4a40ea7d4] en aan het einde van deze pagina komt de volgende code [code:1:f4a40ea7d4] <?php } ?> <?php } else { printf("<br>U moet ingelogd zijn om uw gegevens te kunnen wijzigen."); } ?> [/code:1:f4a40ea7d4] Wat moet ik aan de volgende regel nog aanpassen zodat deze variabel wordt ? Dit allemaal aan de hand van het bestand process.php [b:f4a40ea7d4] $sql = 'SELECT * FROM users WHERE userid = 4 LIMIT 0, 30 '; [/b:f4a40ea7d4] Ik heb diversen acties geprobeerd met session_register("uid"); maar niets heeft geholpen. Wie heeft voor mij het antwoord ? Alvast bedankt voor het meedenken.
  • De oplossing stond gedeeltelijk op de site. Ik heb het als volgt opgelost: $sql = "SELECT * FROM users WHERE userid=".$_SESSION['uid']." LIMIT 1"; Nu ben ik er natuurlijk nog niet. Als de gebruiker nu zijn e-mail adres gewijzigd heeft moet deze in de database aangepast worden. Wie kan mij hiermee op weg helpen ?
  • [code:1:dabadf9f3c]$sql = "UPDATE users SET email = ".$_POST['email']." WHERE userid=".$_POST['id'];[/code:1:dabadf9f3c] je kan de id ook met een sessie doen zoals je in de vorige post deed: [code:1:dabadf9f3c]$sql = "UPDATE users SET email = ".$_POST['email']." WHERE userid=".$_SESSION['uid'];[/code:1:dabadf9f3c] ik vind het persoonlijkste het makkelijkste om de ID met een verborgen (type="hidden") mee te sturen. maar ik denk dat een sessie weer veiliger zal zijn. ps. er zitten misschien nog wat foutjes in (bijvoorbeeld aanhalings tekens, maar dit moet je op weg helpen)
  • OK bedankt voor je reactie. Kan ik meer van deze regels onder elkaar zetten zodat alle velden gewijzigd kunnen worden of wordt de query dan weer anders ?
  • Dat kan, maar het kan ook met een query: [code:1:aa2f7708cf] $sql = "UPDATE users SET email = ".$_POST['email'].", password = ".$_POST['password'].", login = ".$_POST['login']." WHERE userid=".$_POST['id']; [/code:1:aa2f7708cf] Veldnamen scheiden met een komma, dus. Ik weet niet of je het al weet, maar voor de zekerheid: Je moet wel oppassen met jouw "inlog-query" [code:1:aa2f7708cf]$sql = "select * from users where login = '$login' and password = '$password'";[/code:1:aa2f7708cf] Als iemand als login "' OR '1' = '1" en als password hetzelfde opgeeft wordt de query [quote:aa2f7708cf]$sql = "select * from users where login = '' OR '1' = '1' and password = '' OR '1' = '1'";[/quote:aa2f7708cf] Omdat 1 gelijk is aan 1 is dit altijd waar en kan iemand dus inloggen zonder een login en password te kennen. Om zo'n SQL injectie te voorkomen moet je op zijn minst iets als mysql_escape_string gebruiken.
  • Bedankt voor je advies. Dit script heb ik niet zelf geschreven. Zelf heb niet zo veel kennis van PHP. Ik ben het nl nog aan het leren. Dus mocht je nog een advies hebben hoe ik dit probleem kan oplossen dan hoor ik het graag. Het moet nl wel veilig zijn. Vanavond ga ik met de sql query's aan de gang.
  • Ik ben bezig geweest met de SQL query's maar helaas is het nog niet gelukt. Ik krijg geen foutmelding. Maar de gewijzigde gegevens worden ook niet opgeslagen in de database. De code die ik gebruik om gegevens na het update formulier te verwerken is saveuseredit.php [code:1:cf922a09ad] <?PHP if (logincheck($uid, $upwd)) { $sql = "UPDATE users SET email = ".$_SESSION['email'].", password = ".$_SESSION['password'].", login = ".$_SESSION['login']." WHERE userid=".$_SESSION['uid']; $result = mysql_query($sql ,$db); printf("<p>De wijziging zijn opgeslagen in de database.</p>"); } else { printf("<br>U moet ingelogd zijn om uw gegevens te kunnen wijzigen."); } ?> [/code:1:cf922a09ad]
  • maak van dit stukje code: [code:1:387b7fd0bd] $sql = "UPDATE users SET email = ".$_SESSION['email'].", password = ".$_SESSION['password'].", login = ".$_SESSION['login']." WHERE userid=".$_SESSION['uid']; $result = mysql_query($sql ,$db); [/code:1:387b7fd0bd] eens dit [code:1:387b7fd0bd] $sql = "UPDATE users SET email = ".$_SESSION['email'].", password = ".$_SESSION['password'].", login = ".$_SESSION['login']." WHERE userid=".$_SESSION['uid']; $result = mysql_query($sql ,$db) or die(mysql_error()); [/code:1:387b7fd0bd] en zeg wat er gebeurt? mysql_error vertelt waar te fout in de query zit, dat doet php standaard niet.
  • Hallo allemaal, Op dit moment ben ik bezig met het aanpassen van een recepten database. Dit lukt aardig. Nu loop ik tegen probleem aan. [b:6b34594581]Even een kleine uitleg.[/b:6b34594581] Bezoekers van de site kunnen starks zelf recepten toevoegen aan de database. Hiervoor moeten ze eerst een gebruikers account aanmaken door middel van een formulier. Deze gegeevens worden in een database gestopt. Zodra een gebruiker inlogt krijgt hij te zien hoe veel recepten hij er toegevoegd heeft en welke goed gekeurd zijn en welke niet. Tot zo ver werkt alles goed. Nu kan het natuurlijk zijn dat een gebruiker zijn gegevens wil wijzigen. Ik probeer hiervoor een php script te schijven die dit mogelijk maakt. Hier onder staat het formulier dat ik wil gebruiken om de inlog gegevens weer te geven zoals ze nu in de database staan: [code:1:6b34594581] <?php $sql = "SELECT * FROM users"; $resultaat = mysql_query($sql); //voer sql uit while ($rij = mysql_fetch_array($resultaat)) { echo $rij["login"]. "<br> " ; echo $rij["password"]. "<br>"; echo $rij["email"]. "<br>"; } ?> <h3 class="tekstvlak_content">Uw account gegevens aanpassen</h3><br/> <div class="nieuwegebruiker"> <form method=post action=saveuseredit.php> <div class="veldnaam_form"> <br/>Gebruikersnaam: </div> <div class="invulveld_form"> <br/><input type=text size=15 name=loginname> </div> <div class="veldnaam_form"> Wachtwoord: </div> <div class="invulveld_forum"> <input type=text size=15 name=password> </div> <div class="veldnaam_form"> Wachtwoord bevestigen: </div> <div class="invulveld_form"> <input type=text size=15 name=confirmpassword> </div> <div class="veldnaam_form"> E-mail adres: </div> <div class="invulveld_form"> <input type=text size=15 name=email> </div> <div class="invulveld_form"> <input type=Reset value=Reset> <input type=submit value=Verzenden><br/> </div> </form> </div> [/code:1:6b34594581] Het probleem is dat ik de gegevens uit de database niet kan weergeven in het formulier. Wat ik ook probeer de gegevens worden daar niet zichtbaar. Elk voorbeeld wat ik op internet gevonden heb is zoals ik nu gemaakt heb en dit is dus niet de bedoeling. [b:6b34594581]Wie kan mij hier mee helpen zodat de gegevens netjes in de formuliervelden worden weergegeven.[/b:6b34594581] Alvast bedankt voor de moeite. Landzaat

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.