Held !quote:Op woensdag 11 februari 2009 19:27 schreef Light het volgende:
[..]
Da's niet zo moeilijk toch? Gewoon nadenken wat je wilt, namelijk artikelnummer en aantal op dezelfde regel (table row).
[ code verwijderd ]
quote:Op woensdag 11 februari 2009 19:43 schreef cablegunmaster het volgende:
[..]
Held !Dankje
Hiermee haal ik het wel ^^. ik dacht een moeilijke while met elke while dit maar een for is beter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $k = count($art_no); echo '<table>'; for($i = 0; $i < $k ; $i++) { if($aantal[$i] > 0 ){ echo '<tr>'; echo '<td>'.$i.'</td>'; echo '<td>'.$art_no[$i].'</td>'; echo '<td>'.$aantal[$i].'</td>'; echo '</tr>'; } } echo '</table>'; ?> |
Kan, ik weet niet of dat een (duidelijke) snelheidswinst oplevert.quote:Op woensdag 11 februari 2009 19:43 schreef slacker_nl het volgende:
Die count even uit de loop halen mensen.
Correctquote:Op woensdag 11 februari 2009 19:47 schreef cablegunmaster het volgende:
[..]
[ code verwijderd ]
zo heb ik hem dus als aantal groter is dan 0 toch?
maar dan krijg ik 0 6 2 te zien ipv de waardesquote:
1 2 3 4 5 | echo $art_nr; $k = count($art_nr); echo $k."<br/>"; ?> |
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 | If(!empty($_POST)){ echo "<br/>".Var_dump($_POST)."<br/>"; print "artikelnr:<br/>"; foreach($_POST['artikel_nr'] as $i => $art_nr) print($i . ' = ' . $art_nr. '<br/>'); print "aantallen:<br/>"; foreach($_POST['artikelaantal'] as $i => $aantal){ print($i . ' = ' . $aantal. '<br/>'); } $k = count($art_nr[$i]); echo $k."<br/>"; echo $art_nr; echo '<table>'; for($i = 0; $i < $k; $i++) { echo '<tr>'; echo '<td>'.$i.'</td>'; echo '<td>'.$art_nr[$i].'</td>'; echo '<td>'.$aantal[$i].'</td>'; echo '</tr>'; } echo '</table>'; echo $k; } ?> |
Nee natuurlijk nietquote:Op woensdag 11 februari 2009 18:00 schreef Roy_T het volgende:
Je was tegelijkertijd ook 20 keer zoveel write queries aan het doen dan reads, zoals naar jouw zeggen in je real life situatie?
Gelukkig maar, bij jouw situatie hoor je geen grote verschillen te ontdekken. Die zie je pas bij grote belasting. Die indices zouden je query wel 100x sneller maken. Wellicht dat je nog andere queries hebt die er profijt van hebben, want ik zou toch neigen naar wel toevoegen.quote:Op woensdag 11 februari 2009 21:03 schreef Chandler het volgende:
[..]
Maar ik heb getest op een database van myISAM en dezelfde database maar dan geconverteerd naar innoDB en het verschil wsa praktisch nihil
Met dit kleine voorbeeld niet, maar met grotere arrays wel.quote:Op woensdag 11 februari 2009 20:10 schreef Light het volgende:
[..]
Kan, ik weet niet of dat een (duidelijke) snelheidswinst oplevert.
Oh, dan moet je in mijn stukje code $art_nr en $aantal vervangen door $_POST['artikel_nr'] en $_POST['artikelaantal']. Maar dat kon je natuurlijk ook zelf bedenken.quote:Op woensdag 11 februari 2009 20:31 schreef cablegunmaster het volgende:
[..]
maar dan krijg ik 0 6 2 te zien ipv de waardes
doe ik toch iets fouts
* gaat napluizen
laatste getal is laatste $aantal maar dan alleen het eerste cijfer
$i is 0
en mn $k echot 1 uit
die 6 komt van art_nrs die wel goed doortellen
[ code verwijderd ]
uitkomst:
$art_nr = 6
$k = 1
doe ik toch iets fout( count is voor arrays en ik nam aan dat er 6 waardes in zitten maar hij vind van niet
)
zelfs met apache testen kom ik hierop uit![]()
[ code verwijderd ]
terwijl bij de foreach hij wel alles er mooi uitgooit![]()
quote:Op woensdag 11 februari 2009 21:37 schreef Light het volgende:
[..]
Oh, dan moet je in mijn stukje code $art_nr en $aantal vervangen door $_POST['artikel_nr'] en $_POST['artikelaantal']. Maar dat kon je natuurlijk ook zelf bedenken.
Het hele row vs table locking voordeel gaat op bij veel writes, dus je testcase is waardeloosquote:Op woensdag 11 februari 2009 21:03 schreef Chandler het volgende:
Nee natuurlijk niet
Maar ik heb getest op een database van myISAM en dezelfde database maar dan geconverteerd naar innoDB en het verschil wsa praktisch nihil
ja toen ik het eenmaal door had heb ik dit geschrevenquote:Op woensdag 11 februari 2009 21:37 schreef Light het volgende:
[..]
Oh, dan moet je in mijn stukje code $art_nr en $aantal vervangen door $_POST['artikel_nr'] en $_POST['artikelaantal']. Maar dat kon je natuurlijk ook zelf bedenken.
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 | $p = count($_SESSION['artikelnr']); // k= aantal regels van het winkelmandje $k = 1; $totaalprijs= 0; for($i = 0; $i < $p; $i++) { if($_SESSION['artikelaantal'][$i] > 0 ) { if(is_numeric($_SESSION['artikelaantal'][$i])) { if($_SESSION['artikelaantal'][$i] <= $_SESSION['voorraad'][$i]) { echo '<tr>'; echo '<td>'.$k.'</td>'; echo '<td>'.$_SESSION['artikelnr'][$i].'</td>'; echo '<td>'.$_SESSION['omschrijving'][$i].'</td>'; echo '<td>'.$_SESSION['artikelaantal'][$i].'</td>'; echo '<td>'.$_SESSION['artikelprijs'][$i].'</td>'; echo '</tr>'; $k = $k+1; $totaalprijs = $totaalprijs +($_SESSION['artikelprijs'][$i] * $_SESSION['artikelaantal'][$i]); } } } } echo "<tr><td colspan =\"4\">Totaal prijs ¤".$totaalprijs."</td></tr></table></form><br/>"; } ?> |
1 |
* shrugs * kon zo ook jaquote:Op donderdag 12 februari 2009 00:38 schreef Roy_T het volgende:
Waarom gebruik je drie if's binnen elkaar, en niet gewoon:
[ code verwijderd ]
(het lijkt me overigens logischer om eerst te kijken of iets numeriek is, voordat je gaat kijken of het groter is dan 0)
In dit geval geen extra haakjes nodig hoorquote:Op donderdag 12 februari 2009 00:41 schreef cablegunmaster het volgende:
* shrugs * kon zo ook jamaar ik vind het zo'n gedoe met && en || dan moet je weer met extra haakjes werken
![]()
het is voor een school project waar niemand meehelpt en ik een hoog cijfer op ga halenquote:Op donderdag 12 februari 2009 00:43 schreef Roy_T het volgende:
[..]
In dit geval geen extra haakjes nodig hoor
Jouw manier werkt, maar is allesbehalve "marktconform" (en zou bij ieder bedrijf onacceptabel zijn).
extra overhead = rekenkracht ?quote:Op donderdag 12 februari 2009 00:58 schreef Roy_T het volgende:
Het idee is iig om geen overbodige statements te gebruiken, dus als het in één if kan: stop het in één if(tenzij het echt onleesbaar wordt, maar dat is hier niet het geval).
Wanneer "is_numeric($_SESSION['artikelaantal'][$i])" false is trouwens, dan voert 'ie de rest van de if niet uit, dus je zorgt niet voor extra overhead
tenzij je foutmeldingen of iets anders wilt triggeren, afhankelijk van wat er fout gaat, dan kom je er niet uit met 1 statement.... maar in dit geval (zonder else statements) is 1 statement wel een stuk netter ja.quote:Op donderdag 12 februari 2009 00:58 schreef Roy_T het volgende:
Het idee is iig om geen overbodige statements te gebruiken, dus als het in één if kan: stop het in één if(tenzij het echt onleesbaar wordt, maar dat is hier niet het geval).
Dat leek mij voor zich te sprekenquote:Op donderdag 12 februari 2009 08:28 schreef Xcalibur het volgende:
tenzij je foutmeldingen of iets anders wilt triggeren, afhankelijk van wat er fout gaat, dan kom je er niet uit met 1 statement.... maar in dit geval (zonder else statements) is 1 statement wel een stuk netter ja.
ik weet dat het met visio kan implementeren maar dat was ook ver van volledig maar je kon wel verbinding maken met de database en alles binnen halen. hoe en wat geen ideequote:Op donderdag 12 februari 2009 11:30 schreef Keiichi het volgende:
Weet iemand toevallig een scriptje/programma die een database structuur graphisch kan weergeven?
DBDesigner 4 kan dat wel volgens mij, als je een Windows app zoekt. Freeware volgens mij.quote:Op donderdag 12 februari 2009 11:30 schreef Keiichi het volgende:
Weet iemand toevallig een scriptje/programma die een database structuur graphisch kan weergeven?
Ws zet ik het wel om, maar goed. Toch vind ik het vervelend dat het uitlezen van zo weinig data zoveel tijd moet kostenquote:Op woensdag 11 februari 2009 21:15 schreef GlowMouse het volgende:
[..]
Gelukkig maar, bij jouw situatie hoor je geen grote verschillen te ontdekken. Die zie je pas bij grote belasting. Die indices zouden je query wel 100x sneller maken. Wellicht dat je nog andere queries hebt die er profijt van hebben, want ik zou toch neigen naar wel toevoegen.
Klopt, daarin heb je gelijk. Maar testen op de huidige server is gewoon niet te doenquote:Op woensdag 11 februari 2009 23:32 schreef Roy_T het volgende:
Het hele row vs table locking voordeel gaat op bij veel writes, dus je testcase is waardeloos
How about lokaal?quote:Op donderdag 12 februari 2009 12:42 schreef Chandler het volgende:
Klopt, daarin heb je gelijk. Maar testen op de huidige server is gewoon niet te doen![]()
Zet alles eens in code blocks (of beter, gebruik een pastebin voor zulke grote lappen code).quote:Op vrijdag 13 februari 2009 01:16 schreef Buonissimo het volgende:
Hoi, ik ben een PHP noob en heb een contactformuliertje online gevonden. Het werkt perfect behalve 1 ding: Ik krijg de woonplaats van de persoon die het invult niet door, de naam, email, en bericht lukt perfect. Hoe komt dit? Hieronder vind je de broncodes van de twee relevante bestanden:
1 |
1 2 | $City = Trim(stripslashes($_POST['City'])); |
En gebruik header("Location: /error.html"); om door te sturen!quote:Op vrijdag 13 februari 2009 01:16 schreef Buonissimo het volgende:
Hoi, ik ben een PHP noob en heb een contactformuliertje online gevonden. Het werkt perfect behalve 1 ding: Ik krijg de woonplaats van de persoon die het invult niet door, de naam, email, en bericht lukt perfect. Hoe komt dit? Hieronder vind je de broncodes van de twee relevante bestanden:
Index.html
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>
Vind ik ook...quote:Op vrijdag 13 februari 2009 10:19 schreef veldmuis het volgende:
Ik ga voor camelCase. CamelCase staat slordig. Vind ik.
Ik heb héél veel code van anderen gezien. Daarin inderdaad wel $camelCase (wat mij betreft prima), maar nooit $CamelCase.quote:Op vrijdag 13 februari 2009 10:15 schreef slacker_nl het volgende:
Dat is gewoon een coding stijl (@hoofdletters voor variablen). Er zijn zat mensen die met Hoofdletters coden. OF CamelCase...
quote:Op vrijdag 13 februari 2009 11:28 schreef Chandler het volgende:
ik doe ook camelCase zelfs met php functies.
vind isSet mooier dan isset :P
ps. weet iemand hoe ik simpel en snel alle values uit een array in een string kan zetten? dus 0=>'a', 1=>'b' naar $str = 'ab';
1 2 3 4 | $a = array(0 => 'a', 1 => 'b'); print join('', $a); ?> |
In een Location-header moet de volledige URL, inclusief http://quote:Op vrijdag 13 februari 2009 08:30 schreef Likkende_Lassie het volgende:
[..]
En gebruik header("Location: /error.html"); om door te sturen!
En helaas is PHP zo ranzig dat het nog werkt ook.quote:Op vrijdag 13 februari 2009 11:28 schreef Chandler het volgende:
ik doe ook camelCase zelfs met php functies.
vind isSet mooier dan isset![]()
Ik wist dat het gemakkelijk was iddquote:Op vrijdag 13 februari 2009 11:30 schreef Tiemie het volgende:
Ach laten we dan maar niet beginnen over zoveel andere functies van PHPquote:Op vrijdag 13 februari 2009 11:39 schreef Roy_T het volgende:
En helaas is PHP zo ranzig dat het nog werkt ook.
En GlowMouse: rete-irritant inderdaad
Anyone?quote:Op donderdag 12 februari 2009 12:56 schreef Chandler het volgende:
Ik heb werkelijk geen idee hoe ik dit zou moeten simuleren?
Ik zou naar een kant en klare app zoeken, tenzij je zelf multithreaded applicaties kunt schrijven. Anders vind je nooit de grenzen van een databaseserver.quote:Op vrijdag 13 februari 2009 11:44 schreef Tiemie het volgende:
[..]
gewoon heel veel inserts doen en tegelijkertijd selects doen op die tabel lijkt me.
Dat gaat mij iig niet lukken, ik ga eens zoeken!quote:Op vrijdag 13 februari 2009 11:47 schreef GlowMouse het volgende:
Ik zou naar een kant en klare app zoeken, tenzij je zelf multithreaded applicaties kunt schrijven. Anders vind je nooit de grenzen van een databaseserver.
Toch apart dat PHP zo gefocused is op lowerCamelCase, want in veel programmeertalen (o.a. Pascal, Python, Java en .NET) kom je wel veel UpperCamelCase tegen.quote:Op vrijdag 13 februari 2009 10:59 schreef Roy_T het volgende:
[..]
Ik heb héél veel code van anderen gezien. Daarin inderdaad wel $camelCase (wat mij betreft prima), maar nooit $CamelCase.
lowerCamelCase voor variabelen en UpperCamelCase voor classes.quote:Op vrijdag 13 februari 2009 13:15 schreef Tijn het volgende:
[..]
Toch apart dat PHP zo gefocused is op lowerCamelCase, want in veel programmeertalen (o.a. Pascal, Python, Java en .NET) kom je wel veel UpperCamelCase tegen.
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | function calculateTextBox($text, $fontFile, $fontSize, $fontAngle) { $rect = imagettfbbox($fontSize, $fontAngle, $fontFile, $text); $minX = min(array($rect[0], $rect[2], $rect[4], $rect[6])); $maxX = max(array($rect[0], $rect[2], $rect[4], $rect[6])); $minY = min(array($rect[1], $rect[3], $rect[5], $rect[7])); $maxY = max(array($rect[1], $rect[3], $rect[5], $rect[7])); return array("left" => abs($minX), "top" => abs($minY), "width" => $maxX - $minX, "height" => $maxY - $minY, "box" => $rect); } putenv('GDFONTPATH=' . realpath('.')); $im = imagecreatetruecolor(721, 241); $color = imageColorAllocate($im, 0, 0, 0); $back = imagecolorallocate($im, 255, 255, 255); imagefill($im, 0, 0, $back); // lines for ($x = 0; $x < 4; $x++) { imageline($im, 0, $x * 80, 721, ($x * 80), $color); } for ($x = 0; $x < 11; $x++) { imageline($im, $x * 80, 1, $x * 80, 241, $color); } $fontsize = 40; $font = 'test2.ttf'; $x = 0; $y = 0; foreach (range("a", "z") AS $id => $key) { $bbox = calculateTextBox($key, $font, $fontsize, 0); imagettftext ($im, 12, 0, $x + 3, $y + 14, $color, "standard.ttf", $key); imagettftext ($im, $fontsize, 0, $x + (80/2 - $bbox['width']/2), $y + (80 - ($bbox['height']/2)), $color, $font, $key); $x = $x + 80; if ($x > 700) { $x = 0; $y = $y + 80; } } header('Content-Type: image/png'); imagePNG($im); ?> |
1 2 3 4 5 6 | $im = imagecreatetruecolor(721, 241); for ($x = 0; $x < 11; $x++) { imageline($im, $x * 80, 1, $x * 80, 241, $color); } ?> |
1 2 3 4 | $x + (80/2 - $bbox['width']/2), $y + (80 - ($bbox['height']/2)), ?> |
Dan valt de lijn buiten de afbeeldingquote:
En dat snap ik niet helemaal, hoe kan ik de letters dan wel netjes naast elkaar krijgen? of is dit in jou opinie mooi genoeg?quote:Dat moet je niet doen. Zoals je kunt lezen: "the coordinates given by x and y will define the basepoint of the first character". Wil je ze netjes naast elkaar hebben, moet je dit dus niet van het karakter afhankelijk maken.
Door ze allemaal op dezelfde baseline te zetten. Dan staan ze netjes recht. Als je ze allemaal een ander basepoint geeft (zoals je nu doet), staan ze allemaal op een andere hoogte.quote:Op zaterdag 14 februari 2009 09:55 schreef Chandler het volgende:
[..]
hoe kan ik de letters dan wel netjes naast elkaar krijgen?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |