Dat wel jaquote:Op zondag 6 april 2014 09:02 schreef slacker_nl het volgende:
@DrNick
Had je niet het idee, dat je heel veel hetzelfde aan het doen was?
[ code verwijderd ]
Je kan nu je query gaan opbouwen, hoe? Dat laat ik aan jou over, maar het is ongeveer hetzelfde. En tip: prepared statements.
Nogmaals: ik heb de vergelijking niet gemaakt. Dit is door iemand anders opgesteld, en ik vraag mij af waarom hij werkt. Inmiddels heb ik het opgelost.quote:Op zondag 6 april 2014 12:37 schreef totalvamp het volgende:
[..]
Maar wat probeer je nou te doen dan? Ik snap niet waarom je die vergelijking wilt doen.
Dat kan ook, bedankt voor je aanvulling. Maar dat vroeg ik mij niet af. Evengoed bedankt.quote:Op zondag 6 april 2014 12:44 schreef Light het volgende:
[..]
Met strlen() kun je de lengte van een string opvragen. Als die 0 is, is de string leeg en zijn er dus geen karakters aanwezig.
Verder kun je met empty() ook kijken of een variabele leeg is. Maar dan moet je er wel op letten dat het in PHP mogelijk is dat een lege string toch 1 teken bevat.
[ code verwijderd ]
Ook. Ik vind ze icm named parameters erg fijn.quote:Op zondag 6 april 2014 12:48 schreef DrNick het volgende:
[..]
Dat wel ja
Tof, ik ga het eens proberen. Die prepared statements zijn in verband met sql injecties toch?
Wat een raar iets dan, ik hoop niet dat de code vol bagger staat als dit dat kan namelijk niet veel goed betekenen xDquote:Op zondag 6 april 2014 13:02 schreef Robuustheid het volgende:
[..]
Nogmaals: ik heb de vergelijking niet gemaakt. Dit is door iemand anders opgesteld, en ik vraag mij af waarom hij werkt. Inmiddels heb ik het opgelost.
Als je een "a" invoert, en dat optelt met 0, levert het een 0 op. Dat staat niet gelijk aan de invoer met "a".
[..]
Dat kan ook, bedankt voor je aanvulling. Maar dat vroeg ik mij niet af. Evengoed bedankt.
Nou voorruit, voor jou dan:quote:Op zondag 6 april 2014 13:14 schreef totalvamp het volgende:
[..]
Wat een raar iets dan, ik hoop niet dat de code vol bagger staat als dit dat kan namelijk niet veel goed betekenen xD
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Je mag het raar vinden, maar het a+0 en vervolgens vergelijken of het gelijk staat aan a, vind ik erg slim bedacht.
Is het in dit geval niet beter om het op onderstaande manier te doen?quote:Op zondag 6 april 2014 12:44 schreef Light het volgende:
[..]
Met strlen() kun je de lengte van een string opvragen. Als die 0 is, is de string leeg en zijn er dus geen karakters aanwezig.
Verder kun je met empty() ook kijken of een variabele leeg is. Maar dan moet je er wel op letten dat het in PHP mogelijk is dat een lege string toch 1 teken bevat.
[ code verwijderd ]
1 2 3 4 5 6 | <?php $string = '0'; if (empty($string) && $string != '') { echo 'Leeg maar toch ook niet'; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | <?php /* Sessie starten */ session_start(); /* If/else afhandeling. Voorkomt fouten bij lege variabele */ if (isset($_SESSION['llnr'])) { $llnr = $_SESSION['llnr']; } else { // $llnr = 220225; echo "Leerlingnummer onbekend. Probeer opnieuw."; exit(); } if (isset($_SESSION['Vak00'])) { $Vak00 = $_SESSION['Vak00']; } else { $Vak00 = null; } if (isset($_SESSION['Vak01'])) { $Vak01 = $_SESSION['Vak01']; } else { $Vak01 = null; } #etcetera /* Controleer verbinding */ $link = mysqli_connect("localhost", "root", "usbw", "profielkeuze"); if (mysqli_connect_errno()) { printf("Fout bij verbinden met de database: %s\n", mysqli_connect_error()); exit(); } else { echo "Je profielkeuze is doorgegeven. Je mag de pagina sluiten."; } echo $llnr; echo $Vak00; echo $Vak01; echo $Vak02; echo $Vak03; echo $Vak04; echo $Vak05; echo $Vak06; echo $Vak07; echo $Vak08; echo $Vak09; echo $Vak10; echo $Vak11; echo $Vak12; echo $Vak13; echo $Keuze1; echo $Keuze2; echo $Opmerkingen; /* Query naar database */ $query = "INSERT INTO keuzes (llnr, Vak00, Vak01, Vak02, Vak03, Vak04, Vak05, Vak06, Vak07, Vak08, Vak09, Vak10, Vak11, Vak12, Vak13, Keuze1, Keuze2, Opmerkingen) VALUES ('$llnr', '$Vak00', '$Vak01', '$Vak02', '$Vak03', '$Vak04', '$Vak05', '$Vak06', '$Vak07', '$Vak08', '$Vak09', '$Vak10', '$Vak11', '$Vak12', '$Vak13', '$Keuze1', '$Keuze2', '$Opmerkingen')"; mysqli_query($link, $query); /* TEST QUERY */ //$query2 = "INSERT INTO keuzes (llnr, Vak04) VALUES (224, 'Geschiedenis')"; //mysqli_query($link, $query2); /* Sluit verbinding */ mysqli_close($link); /* Sessie in de kliko */ //session_destroy(); ?> |
Da's ook nog een mogelijkheidquote:Op zondag 6 april 2014 14:14 schreef bondage het volgende:
[..]
Is het in dit geval niet beter om het op onderstaande manier te doen?
[ code verwijderd ]
Ik doe het altijd zo omdat het imo resources kost om die strlen functie aan te roepen terwijl je eigenlijk alleen wilt weten of de string leeg is.
Dan moet je dus kijken wat er mis gaat. Er zijn functies die je dat kunnen vertellen, maar dan moet je ze wel gebruiken. Bijvoorbeeld:quote:Op zondag 6 april 2014 15:26 schreef DrNick het volgende:
[ code verwijderd ]
Ondanks eerdere tips wil ik het eigenlijk zo doen. Het probleem is nog steeds aanwezig, namelijk dat de variabelen niet in de database komen. Met de variabelen is niets mis want bij het echoen verschijnen ze op het beeld. De test query werkt ook dus de databaseverbinding is er.
1 2 3 4 5 6 7 8 9 | <?php /* Query naar database */ $query = "INSERT INTO keuzes (llnr, Vak00, Vak01, Vak02, Vak03, Vak04, Vak05, Vak06, Vak07, Vak08, Vak09, Vak10, Vak11, Vak12, Vak13, Keuze1, Keuze2, Opmerkingen) VALUES ('$llnr', '$Vak00', '$Vak01', '$Vak02', '$Vak03', '$Vak04, '$Vak05', '$Vak06', '$Vak07', '$Vak08', '$Vak09', '$Vak10', '$Vak11', '$Vak12', '$Vak13', '$Keuze1', '$Keuze2', '$Opmerkingen')"; mysqli_query($link, $query); if (mysqli_errno($link)) { echo mysqli_error($link); } ?> |
Als ik die gebruik krijg ik geen error of iets dergelijks.quote:Op zondag 6 april 2014 15:39 schreef Light het volgende:
[..]
Dan moet je dus kijken wat er mis gaat. Er zijn functies die je dat kunnen vertellen, maar dan moet je ze wel gebruiken. Bijvoorbeeld:
[ code verwijderd ]
1 2 3 4 5 | <tr> <td> <?php echo $_SESSION['Vak10']; ?> </td> <td> <input type="radio" name="Keuze1" value="<?php echo $_SESSION['Vak10']; ?>" / > </td> <td> <input type="radio" name="Keuze2" value="<?php echo $_SESSION['Vak10']; ?>" / > </td> </tr> |
$_SESSION['Keuze1'] = $row['keuze1']quote:Op zondag 6 april 2014 16:13 schreef DrNick het volgende:
Nu heb ik dit: Keuze1 en Keuze2, welke worden gekozen uit een table, moeten toegewezen worden aan resp. $_SESSION['Keuze1'] en $_SESSION['Keuze2']. Hoe is dit te bewerkstelligen?
Waar moet ik die plaatsen? Ik heb onder de table geprobeerd, maar dan krijg ik deze melding:quote:Op zondag 6 april 2014 16:17 schreef bondage het volgende:
[..]
$_SESSION['Keuze1'] = $row['keuze1']
$_SESSION['Keuze2'] = $row['keuze2']
Ik neem aan dat je dan voorderest geen PHP meer gaat programmeren? Je script is zo lek als een mandje.quote:Op zondag 6 april 2014 15:26 schreef DrNick het volgende:
[ code verwijderd ]
Ondanks eerdere tips wil ik het eigenlijk zo doen. Het probleem is nog steeds aanwezig, namelijk dat de variabelen niet in de database komen. Met de variabelen is niets mis want bij het echoen verschijnen ze op het beeld. De test query werkt ook dus de databaseverbinding is er.
$row['veldnaam'] was puur gekozen als voorbeeld. Je moet de resultaten uit de DB halen en daarmee de sessie vullen. Hoe dit gaat hangt af van de lib die je gebruikt om de query uit te voeren etc.quote:Op zondag 6 april 2014 16:20 schreef DrNick het volgende:
[..]
Waar moet ik die plaatsen? Ik heb onder de table geprobeerd, maar dan krijg ik deze melding:
Notice: Undefined variable: row in C:\*\root\Keuze.php on line 136
Notice: Undefined variable: row in C:\*\root\Keuze.php on line 137
1 2 3 4 5 6 7 8 | <?php $query = "SELECT keuze, waarde FROM tabel where..."; $result = $mysqli->query($query); while($row = $result->fetch_array()) { $_SESSION[$row['keuze']] = $row['waarde']; } ?> |
Die resultaten zaten nog niet in de databasequote:Op zondag 6 april 2014 16:28 schreef bondage het volgende:
[..]
$row['veldnaam'] was puur gekozen als voorbeeld. Je moet de resultaten uit de DB halen en daarmee de sessie vullen. Hoe dit gaat hangt af van de lib die je gebruikt om de query uit te voeren etc.
Als je mysqli gebruikt krijg je zoiets:
[ code verwijderd ]
Hierna ben ik er voor de rest van mijn leven klaar meequote:Op zondag 6 april 2014 16:28 schreef totalvamp het volgende:
[..]
Ik neem aan dat je dan voorderest geen PHP meer gaat programmeren? Je script is zo lek als een mandje.
Ah, zo. Vergeet overigens niet de waarden ff door htmlentities te halen voordat ze worden verwerkt in de HTML.quote:Op zondag 6 april 2014 16:34 schreef DrNick het volgende:
[..]
Die resultaten zaten nog niet in de database
Het werkt inmiddels
Nee het is niet slim, het is gewoon niet nodig. Je hebt standaard functies in PHP die kunnen kijken of iets een waarde is. Daarnaast staat je HTML vol met fouten.quote:Op zondag 6 april 2014 13:55 schreef Robuustheid het volgende:
[..]
Nou voorruit, voor jou dan:
Je mag het raar vinden, maar het a+0 en vervolgens vergelijken of het gelijk staat aan a, vind ik erg slim bedacht.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <html> <head><title>PHP Web Calc</title></head></html> <body> <?php if(!isset($_POST["value1"])) $_POST["value1"]=0; if(!isset($_POST["value2"])) $_POST["value2"]=0; if(!is_int($_POST['value1'])) { $message="<font color=#FF0000>Value 1 must be a number</font><script>document.forms[0].value1.focus();</script>"; } else if(!is_int($_POST['value2'])) { $message="<font color=#FF0000>Value 2 must be a number</font><script>document.forms[0].value2.focus();</script>"; } if(isset($_POST["oper"]) && !isset($message)) { switch($_POST["oper"]) { case "+": $message=$_POST["value1"]+$_POST["value2"]; break; case "-": $message=$_POST["value1"]-$_POST["value2"]; break; case "*": $message=$_POST["value1"]*$_POST["value2"]; break; case "/": if((int)$_POST["value2"] === 0) { $message="<font color=#FF0000>Division by 0 is impossible...</font><script>document.forms[0].value2.focus();</script>"; } else $message=$_POST["value1"]/$_POST["value2"]; break; default: break; } } else { $message="Enter 2 numbers and press 1 operation button."; } ?> <form action="test.php" method="post"> <table border="0"> <tr><td>Value 1</td><td><input type="text" name="value1" value="<?php echo $_POST["value1"]; ?>"></td> <td>Value 2</td><td><input type="text" name="value2" value="<?php echo $_POST["value2"]; ?>"></td></tr> <tr><td align="center" colspan="4"> <input type="submit" name="oper" value="+"/> <input type="submit" name="oper" value="-" /> <input type="submit" name="oper" value="*"/> <input type="submit" name="oper" value="/" /> </td></tr> <tr><td colspan="4" align="right">$message</td></tr> </table> </form> </body> |
Inderdaad prepared statementsquote:Op zondag 6 april 2014 16:35 schreef DrNick het volgende:
[..]
Wat adviseer je? Dan zal ik daar nog wel naar kijken. Prepared statements in ieder geval, en wat nog?
Ik had overigens naar jouw scriptje gekeken, alleen dat kreeg ik niet werkend. Ik vind dit het prettigst en duidelijkst.
Zal ik ook eens naar kijken.quote:Op zondag 6 april 2014 16:36 schreef bondage het volgende:
[..]
Ah, zo. Vergeet overigens niet de waarden ff door htmlentities te halen voordat ze worden verwerkt in de HTML.
Zal ik doenquote:Op zondag 6 april 2014 16:37 schreef totalvamp het volgende:
Inderdaad prepared statements
Maar wat ik al zei, je script is nu nooit meer goed aan te passen. Daarnaast is het van belang dat je leert omgaan met arrays aangezien je 90% van de tijd data daarin krijgt aangeleverd.
Ook is het handig je code zo netjes mogelijk te maken en als je dingen moet kopieren en plakken weet je dat er iets verkeerd is met je code. (zelfde met col1 col2 col3 in databases).
Zoek op relationele databases, dan zul je zien dat het voor jezelf ook een stuk makkelijker is uiteindelijk
Het is slim gevonden. En dat lijkt mij ook?quote:Op zondag 6 april 2014 16:37 schreef totalvamp het volgende:
[..]
Nee het is niet slim, het is gewoon niet nodig. Je hebt standaard functies in PHP die kunnen kijken of iets een waarde is. Daarnaast staat je HTML vol met fouten.
[ code verwijderd ]
Nee, het is gewoon een gecompliceerde manier om iets te doen wat stukken makkelijker kan. Wat mij meer van toepassing lijkt, is dat de programmeur van het script niet goed wist wat hij deed en zelf ook nog een beginner is.quote:Op zondag 6 april 2014 21:30 schreef Robuustheid het volgende:
[..]
Het is slim gevonden. En dat lijkt mij ook?
En ja ik ben op de hoogte van de functie in PHP om op integers te zoeken, maar daar ging het mij niet om. Het ging mij om dat iemand zoiets creatiefs bedacht heeft.
En wellicht heb je moeite met lezen... Nogmaals: ik heb het niet (er staat niet) gemaakt. Dus het is niet mijn html. Hoezo zitten er fouten in? Het werkt anders prima bij mij.
1 2 3 4 5 6 7 8 9 | <?php //Dit is sowieso een rare manier voor een echo, je gebruikt namelijk altijd ' op een echo te openen dit vanwege het feit dat PHP alles tussen "" parsed op variabelen. echo "<tr><td>Value 1</td><td><input type=text name=value1 value=\"".$_POST["value1"]."\"></td>"; echo '<tr><td>Value 1</td><td><input type="text" name="value1" value="'.$_POST["value1"].'" /></td>'; //Dit zou nooit nodig moeten zijn, omdat je de waarden van te voren controleert. $message=($_POST["value1"]+0)/($_POST["value2"]+0); ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |