quote:
Nada!quote:Op vrijdag 6 augustus 2010 11:58 schreef Trollface. het volgende:
Ik zie het al, DOMDocument::load() laadt vanaf een bestandsnaam; je moet DOMDocument::loadXML($result) doen.
1 2 3 4 5 6 7 8 | $result = soapCall('GetFacturen', array('sessieID' => $_SESSION['loginSession_ID'], 'Contractnummer' => $_SESSION['contractnummer'])); $objDOM = new DOMDocument(); $objDOM->loadXML($result); //make sure path is correct print_r($objDOM->getElementsByTagName("Facturen")); ?> |
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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | <soap:Body> <GetFacturenResponse xmlns="http://ncis.nl/CSSWebservices"> <GetFacturenResult> <xs:schema id="NewDataSet" targetNamespace="ncis" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:mstns="ncis" xmlns="ncis" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="ncis_x003A_Facturen" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Facturen"> <xs:complexType> <xs:sequence> <xs:element name="Result" type="xs:string" minOccurs="0"/> <xs:element name="Remark" type="xs:string" minOccurs="0"/> <xs:element name="ContractID" type="xs:int" minOccurs="0"/> <xs:element name="ContractRegelID" type="xs:int" minOccurs="0"/> <xs:element name="ReferentieID" type="xs:int" minOccurs="0"/> <xs:element name="FactuurID" type="xs:int" minOccurs="0"/> <xs:element name="Soort" type="xs:string" minOccurs="0"/> <xs:element name="Type" type="xs:string" minOccurs="0"/> <xs:element name="Verrekenbaar" type="xs:boolean" minOccurs="0"/> <xs:element name="Termijn" type="xs:int" minOccurs="0"/> <xs:element name="Jaar" type="xs:int" minOccurs="0"/> <xs:element name="Betaalwijze" type="xs:string" minOccurs="0"/> <xs:element name="Rekeningnummer" type="xs:string" minOccurs="0"/> <xs:element name="Media" type="xs:string" minOccurs="0"/> <xs:element name="BedragExcl" type="xs:decimal" minOccurs="0"/> <xs:element name="BedragIncl" type="xs:decimal" minOccurs="0"/> <xs:element name="FactuurBedragIncl" type="xs:decimal" minOccurs="0"/> <xs:element name="VervalDatum" type="xs:dateTime" minOccurs="0"/> <xs:element name="FactuurOpenstaandBedragIncl" type="xs:decimal" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <DocumentElement xmlns="ncis"> <Facturen diffgr:id="Facturen1" msdata:rowOrder="0"> <ContractID>xxxxx</ContractID> <FactuurID>631510</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>8</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_8_20100803.pdf</Media> <BedragExcl>1857200</BedragExcl> <BedragIncl>2210000</BedragIncl> <FactuurBedragIncl>2210000</FactuurBedragIncl> <VervalDatum>2010-08-17T00:00:00+02:00</VervalDatum> </Facturen> <Facturen diffgr:id="Facturen2" msdata:rowOrder="1"> <ContractID>xxxxx</ContractID> <FactuurID>627891</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>7</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_7_20100703.pdf</Media> <BedragExcl>1857200</BedragExcl> <BedragIncl>2210000</BedragIncl> <FactuurBedragIncl>2210000</FactuurBedragIncl> <VervalDatum>2010-07-19T00:00:00+02:00</VervalDatum> </Facturen> <Facturen diffgr:id="Facturen3" msdata:rowOrder="2"> <ContractID>xxxxx</ContractID> <FactuurID>620726</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>6</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_6_20100604.pdf</Media> <BedragExcl>1764800</BedragExcl> <BedragIncl>2100000</BedragIncl> <FactuurBedragIncl>2100000</FactuurBedragIncl> <VervalDatum>2010-06-18T00:00:00+02:00</VervalDatum> </Facturen> <Facturen diffgr:id="Facturen4" msdata:rowOrder="3"> <ContractID>xxxxx</ContractID> <FactuurID>617091</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>5</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_5_20100510.pdf</Media> <BedragExcl>1764800</BedragExcl> <BedragIncl>2100000</BedragIncl> <FactuurBedragIncl>2100000</FactuurBedragIncl> <VervalDatum>2010-05-24T00:00:00+02:00</VervalDatum> </Facturen> <Facturen diffgr:id="Facturen5" msdata:rowOrder="4"> <ContractID>xxxxx</ContractID> <FactuurID>613446</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>4</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_4_20100414.pdf</Media> <BedragExcl>1764800</BedragExcl> <BedragIncl>2100000</BedragIncl> <FactuurBedragIncl>2100000</FactuurBedragIncl> <VervalDatum>2010-04-28T00:00:00+02:00</VervalDatum> </Facturen> <Facturen diffgr:id="Facturen6" msdata:rowOrder="5"> <ContractID>xxxxx</ContractID> <FactuurID>610657</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>3</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_3_20100319.pdf</Media> <BedragExcl>1764800</BedragExcl> <BedragIncl>2100000</BedragIncl> <FactuurBedragIncl>2100000</FactuurBedragIncl> <VervalDatum>2010-04-02T00:00:00+02:00</VervalDatum> </Facturen> <Facturen diffgr:id="Facturen7" msdata:rowOrder="6"> <ContractID>xxxxx</ContractID> <FactuurID>608073</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>2</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_2.pdf</Media> <BedragExcl>1764700</BedragExcl> <BedragIncl>2100000</BedragIncl> <FactuurBedragIncl>2100000</FactuurBedragIncl> <VervalDatum>2010-03-04T00:00:00+01:00</VervalDatum> </Facturen> <Facturen diffgr:id="Facturen8" msdata:rowOrder="7"> <ContractID>xxxxx</ContractID> <FactuurID>603370</FactuurID> <Soort>Factuur</Soort> <Type>Voorschot</Type> <Verrekenbaar>true</Verrekenbaar> <Termijn>1</Termijn> <Jaar>2010</Jaar> <Betaalwijze>IC</Betaalwijze> <Rekeningnummer>XXXXXXX</Rekeningnummer> <Media>Voorschotfactuur_xxxxx_2010_1.pdf</Media> <BedragExcl>1789700</BedragExcl> <BedragIncl>2129700</BedragIncl> <FactuurBedragIncl>2129700</FactuurBedragIncl> <VervalDatum>2010-02-08T00:00:00+01:00</VervalDatum> </Facturen> </DocumentElement> </diffgr:diffgram> </GetFacturenResult> </GetFacturenResponse> </soap:Body> </soap:Envelope> |
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 | $objDocument = DOMDocument::loadXML($result); $objItems = $objDocument->getElementsByTagName('Facturen'); $arrData = array(); for($i = 0; $i < $objItems->length; $i++) { $objItem = $objItems->item($i); $itemArray = array(); $itemArray['contract_id'] = intval($objItem->getElementsByTagName('ContractID')->item(0)->nodeValue); $itemArray['factuur_id'] = intval($objItem->getElementsByTagName('FactuurID')->item(0)->nodeValue); $itemArray['soort'] = $objItem->getElementsByTagName('Soort')->item(0)->nodeValue; $itemArray['type'] = $objItem->getElementsByTagName('Type')->item(0)->nodeValue; $itemArray['verrekenbaar'] = ($objItem->getElementsByTagName('Verrekenbaar')->item(0)->nodeValue == 'true') ? TRUE : FALSE; $itemArray['termijn'] = intval($objItem->getElementsByTagName('Termijn')->item(0)->nodeValue); $itemArray['jaar'] = intval($objItem->getElementsByTagName('Jaar')->item(0)->nodeValue); $itemArray['betaalwijze'] = $objItem->getElementsByTagName('Betaalwijze')->item(0)->nodeValue; $itemArray['rekeningnummer'] = $objItem->getElementsByTagName('Rekeningnummer')->item(0)->nodeValue; $itemArray['media'] = $objItem->getElementsByTagName('Media')->item(0)->nodeValue; $itemArray['bedrag_exclusief'] = intval($objItem->getElementsByTagName('BedragExcl')->item(0)->nodeValue); $itemArray['bedrag_inclusief'] = intval($objItem->getElementsByTagName('BedragIncl')->item(0)->nodeValue); $itemArray['factuurbedrag_inclusief'] = intval($objItem->getElementsByTagName('FactuurBedragIncl')->item(0)->nodeValue); $itemArray['vervaldatum'] = $objItem->getElementsByTagName('VervalDatum')->item(0)->nodeValue; $arrData[] = $itemArray; } var_dump($arrData); ?> |
1 2 3 4 5 6 7 8 9 | $objDOM = new DOMDocument(); $objItems = $objDOM->loadXML($result->GetFacturenResult->any); $objItems = $objDOM->getElementsByTagName('Facturen'); $arrData = array(); etc... ?> |
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 | function soapCall($what, $params){ $soapClient = new SoapClient("xxxxxxxx/login.asmx?WSDL"); $error = 0; try { $info = $soapClient->__call($what, array($params)); } catch (SoapFault $fault) { $error = 1; return " ".$fault->faultcode."-".$fault->faultstring.". "; } if ($info) { return $info; } } //hier roep ik de functie op: $result = soapCall('GetFacturen', array('sessieID' => $_SESSION['loginSession_ID'], 'Contractnummer' => $_SESSION['contractnummer'])); $objDocument = DOMDocument::loadXML($result->GetFacturenResult->any); $objItems = $objDocument->getElementsByTagName('Facturen'); $arrData = array(); ?> |
1 |
1 2 3 4 | <soap:Body> <GetFacturenResponse xmlns="http://ncis.nl/CSSWebservices"> <GetFacturenResult> |
1 2 3 4 | </GetFacturenResponse> </soap:Body> </soap:Envelope> |
Ik snap het ook niet helemaalquote:Op vrijdag 6 augustus 2010 14:01 schreef Likkende_Lassie het volgende:
Het werkt! Maarrrrr wel een beetje een 'vieze' oplossing zo? Gek!
1 2 3 4 5 6 7 8 9 10 11 12 13 | function soapCallTransfer($name, $result){ return '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <'.$name.'Response xmlns="http://ncis.nl/CSSWebservices"> <'.$name.'Result>' .$result. ' </'.$name.'Result> </'.$name.'Response> </soap:Body> </soap:Envelope>'; } ?> |
1 2 3 4 | // first background is a white background #$background_color = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); $background_color = imagecolorallocate($im, 247,247,247); |
http://php.net/manual/en/function.imagecopy.phpquote:Op woensdag 11 augustus 2010 21:11 schreef SpeedyGJ het volgende:
Ik weet niet of ik aan het juiste adres ben![]()
Ik heb een website waar ik promotie banners heb staan, de achtergrond zijn standaard wit (komt van een programma af), nu wil ik een plaatje als achtergrond hebben.
De banner zelf is van PHP gemaakt (nee niet door mij geschreven want ik ben hier een leek in) , hoe moet ik dit gaan aanpakken?
Dit is de code voor de achtergrond kleur.
[ code verwijderd ]
1 2 3 4 5 | $background_color = imagecolorallocate($im, 247,247,247); $achtergrondplaatje = imagecreatefromjpeg('achtergrondplaatje .jpg'); imagecopy($im, $achtergrondplaatje , 0, 0, 0, 0, $breedte_van_de_banner, $hoogte_van_de_banner); ?> |
1 2 3 4 5 6 7 8 | function pagina_doorsturen($titel, $url) { $titel ? hoe los ik dit op ? :o dat hij die meekrijgt. Header($url); exit; } ?> |
1 |
Lol!!! varchar(100) voor een telefoonnummer? ik weet niet wat jij verwacht van de nabije toekomst maar 100 is wel heel erg overdreven veel... 20 is meer dan zat!quote:Op woensdag 18 augustus 2010 14:48 schreef Estolan het volgende:
telefoonnummer varchar(100) latin1_swedish_ci
nummers staan volledig aan elkaar ( zonder spatie of - )
Als het script goed opgezet is, werkt het waarschijnlijk meteen of met wat kleine aanpassingen in php5. Ik zou geen omzetprogramma weten.quote:Op donderdag 19 augustus 2010 14:29 schreef Zhe-AnGeL het volgende:
Ik heb een oud script...wel een leuke
maar het is php 4
hoe kan ik dit het simpelste omzetten naar php 5 is daar een programma voor?
Had een programmaatje gevonden maar die werkt niet op mijn pc
Windows 7
1 2 3 4 5 6 7 8 9 10 | $bericht = eregi_replace("(^|[\n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r\t]*)*)", "<a href=\"\\2\"target=\"_blank\">\\2</a>",$bericht); $bericht = eregi_replace("(^|[\n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+([a-z0-9_-]+)+)(/[^/ \n\r\t]*)*)", "<a href=\"\\2\"target=\"_blank\">\\2</a>",$bericht); $bericht = eregi_replace("(^|[\n\r\t])([a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)","<a href=\"mailto:\\2\">\\2</a>",$bericht); $bericht = eregi_replace("(^|[\n\r\t])(www\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"http://\\2\" target=\"_blank\">\\2</a>",$bericht); $bericht = eregi_replace("(^|[\n\r\t])(www\.([a-z0-9_-]+([a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"http://\\2\" target=\"_blank\">\\2</a>",$bericht); $bericht = eregi_replace("(^|[\n\r\t])(ftp://([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"\\2\" target=\"_blank\">\\2</a>",$bericht); $bericht = eregi_replace("(^|[\n\r\t])(ftp://([a-z0-9_-]+([a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"\\2\" target=\"_blank\">\\2</a>",$bericht); $bericht = eregi_replace("(^|[\n\r\t])(ftp\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"\\2\" target=\"_blank\">\\2</a>",$bericht); ?> |
1 |
1 2 3 | echo "u heeft geen organisatie ingevuld!"; exit; } |
1 2 3 | echo bad character!"; exit; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if ( isset ( $_POST['organisatie'] ) AND $_POST['organisatie'] != "" ) { } // wel ingevuld } else { //niet ingevuld } ?> |
die snap ik niet helemaalquote:Op zondag 22 augustus 2010 09:16 schreef wobbel het volgende:
Nu controleer je alleen of $organisatie bestaat...
Als je een formulier POST controleer je of het veld bestaat met:
[ code verwijderd ]
Wat je daar doet kan korter:quote:Op zondag 22 augustus 2010 09:16 schreef wobbel het volgende:
Nu controleer je alleen of $organisatie bestaat...
Als je een formulier POST controleer je of het veld bestaat met:
[ code verwijderd ]
1 2 3 | if ( !empty ( $_POST['organisatie'] ) ) { ?> |
Zorg dat aan het eind van je pattern, waar [^/ \n\r\t] staat, ook de < uitgesloten wordt. Of voer de nl2br pas uit bij de weergave.quote:Op zaterdag 21 augustus 2010 11:35 schreef wobbel het volgende:
Ik heb het volgende script die automatisch links maakt
[ code verwijderd ]
Als ik nu een bericht heb met http://www.google.nl erin die hij automatisch omzet naar een klikbare link. Als ik nu na google.nl direct een ENTER doe krijg ik de volgende link die niet werkt:
[ code verwijderd ]
Dat krijg ik niet gefixt
dus ik kan dat captcha van google niet gebruiken?quote:Op maandag 23 augustus 2010 14:08 schreef GlowMouse het volgende:
een leuke beveiliging van je hoster.
hmm..balen want ik krijg echt veel spamquote:Op maandag 23 augustus 2010 14:16 schreef GlowMouse het volgende:
nope, niet met deze hoster. Misschien dat je met curl nog wat kunt coden.
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 | /** * Submits an HTTP POST to a reCAPTCHA server * @param string $host * @param string $path * @param array $data * @param int port * @return array response */ function _recaptcha_http_post($host, $path, $data, $port = 80) { $req = _recaptcha_qsencode ($data); $http_request = "POST $path HTTP/1.0\r\n"; $http_request .= "Host: $host\r\n"; $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; $http_request .= "Content-Length: " . strlen($req) . "\r\n"; $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; $http_request .= "\r\n"; $http_request .= $req; $response = ''; if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) { die ('Could not open socket'); } fwrite($fs, $http_request); while ( !feof($fs) ) $response .= fgets($fs, 1160); // One TCP-IP packet fclose($fs); $response = explode("\r\n\r\n", $response, 2); return $response; } ?> |
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 | /** * Submits an HTTP POST to a reCAPTCHA server * @param string $host * @param string $path * @param array $data * @param int port * @return array response */ function _recaptcha_http_post($host, $path, $data, $port = 80) { $req = _recaptcha_qsencode ($data); $url = 'http://' . $host . $path; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $req); curl_setopt($ch, CURLOPT_USERAGENT, 'reCAPTCHA/PHP'); $response = curl_exec($ch); curl_close($ch); $response = explode("\r\n\r\n", $response, 2); return $response; } ?> |
1 2 3 4 | Notice: Undefined offset: 1 in /.../.../recaptchalib.php on line 181 The reCAPTCHA wasn't entered correctly. Go back and try it again.(reCAPTCHA said: ) |
1 2 3 4 5 6 7 8 9 10 11 | $recaptcha_response = new ReCaptchaResponse(); if (trim ($answers [0]) == 'true') { $recaptcha_response->is_valid = true; } else { $recaptcha_response->is_valid = false; $recaptcha_response->error = $answers [1]; ([regel 181]) } return $recaptcha_response; |
hele script? perhaps?quote:Op maandag 23 augustus 2010 14:53 schreef MrNiles het volgende:
dit vind ie niet leuk
[ code verwijderd ]
klopt dat [1]??
Daar kan je natuurlijk ook een script voor schrijvenquote:Op woensdag 25 augustus 2010 15:12 schreef Estolan het volgende:
Ja dat snap ik, dat is handmatig, maar beetje omslachtig als het gaat om 12000 records
Documentatie altijdquote:Op dinsdag 24 augustus 2010 22:54 schreef Tuvai.net het volgende:
Puur uit nieuwsgierigheid: Wie maakt er hier eigenlijk allemaal daadwerkelijk documentatie van zijn/haar code en/of database?ERDs? Klassendiagrammen? Wat gebruiken jullie voor versiebeheer?
ne.net/templates/new/i/p/1.gif[/img] Op woensdag 25 augustus 2010 14:46 schreef Estolan het volgende:quote:[img=12,12]http://i.fokzi[quote][img=12,12]http://i.fokzine.net/templates/new/i/p/1.gif[/img] Op woensdag 25 augustus 2010 16:50 schreef ralfie het volgende:
select id from langetabel group by email having count(*) > 1
uit mn hoofd (?) zou alle dubbele rijen terug moeten geven
je wil alleen de dubbele eruit?quote:Op woensdag 25 augustus 2010 14:46 schreef Estolan het volgende:
Hoe haal je makkelijk dubbele invoeren uit een database.
We hebben nu 12.000gegevens, maar ik wil via email ( of voornaam+achternaam) / ip adres de dubbele data eruit gaan vissen.
Valt hier een script voor te schrijven?
email varchar(100) latin1_swedish_ci
Ik heb dat tot nu toe niet gedaan.quote:Op dinsdag 24 augustus 2010 22:54 schreef Tuvai.net het volgende:
Puur uit nieuwsgierigheid: Wie maakt er hier eigenlijk allemaal daadwerkelijk documentatie van zijn/haar code en/of database?ERDs? Klassendiagrammen? Wat gebruiken jullie voor versiebeheer?
Dat bedoel ik ook, scriptje is zo geschreven en 120kl regels is ook niksquote:Op woensdag 25 augustus 2010 17:40 schreef Xcalibur het volgende:
[..]
Daar kan je natuurlijk ook een script voor schrijven
sorteren op email, en de huidige waarde met de vorige vergelijken.... ook niet zo ingewikkeld
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 | error_reporting(E_ALL); ini_set('display_errors', 1); $name = htmlspecialchars($_POST['name']); $email = htmlspecialchars($_POST['email']); $bericht = htmlspecialchars($_POST['bericht']); if (!$name) { echo "u heeft geen naam ingevuld!"; exit; } if (!$email) { echo "u heeft geen emailadres ingevuld!"; exit; } if ($bericht!= '') { $bericht = str_replace ("\n","<br>",$bericht); $bericht = strip_tags ($bericht, '<br>'); $newRow = '<div class="guestbookheader">'.'Op ' .date('d-m-Y ') . '<br> '.'om ' .date('H:i:s ') . '<br> '. ' schreef' . '<br> '. strip_tags ($name) . '<br> '.'het volgende bericht:' . '</div>' . '<div class="guestbook">' . ($bericht) . '</div>' . '<br> '; $oldRows = join ('', file ('guestbook.txt') ); $fileName = fopen ('guestbook.txt', 'w'); fputs ($fileName, $newRow . chr(13) . chr(10) . $oldRows); fclose ($fileName); $ip = getenv("REMOTE_ADDR"); $message = "" . $name . " van IPadres $ip stuurde het volgende bericht: ____________________________________ "."Naam: "."\t"."\t".$name."\n"."Bericht: "."\t".$bericht." ------------------------------------"; $mailadres = "nielsrijkers@gmail.com"; $message = str_replace ("<br>","\n", $message); mail("$mailadres", "Bericht van gastenboek", $message, "From: " . $email . ""); } include ("readbook.php"); ob_flush(); ?> |
De foutmeldingen zelf verklappen het min of meer al; de waardes 'naam', 'email' en 'bericht' die d.m.v. een POST binnen moeten komen, zijn er niet.quote:Op donderdag 26 augustus 2010 21:48 schreef MrNiles het volgende:
Ik krijg de volgende foutmelding
Notice: Undefined index: name in /home/vhosts/piasonline.nl/subdomains/gastenboek/httpdocs/addbook.php on line 4
Notice: Undefined index: email in /home/vhosts/piasonline.nl/subdomains/gastenboek/httpdocs/addbook.php on line 5
Notice: Undefined index: bericht in /home/vhosts/piasonline.nl/subdomains/gastenboek/httpdocs/addbook.php on line 6
u heeft geen naam ingevuld!
Wat gaat er fout?
[ code verwijderd ]
maar ik krijg deze melding met het openen van de paginaquote:Op donderdag 26 augustus 2010 23:16 schreef Tuvai.net het volgende:
[..]
De foutmeldingen zelf verklappen het min of meer al; de waardes 'naam', 'email' en 'bericht' die d.m.v. een POST binnen moeten komen, zijn er niet.
Dat is omdat je script eigenlijk pas uitgevoerd moet worden als er daadwerkelijk een POST plaats vindt, nu wordt het script altijd uitgevoerd.quote:Op donderdag 26 augustus 2010 23:24 schreef MrNiles het volgende:
[..]
maar ik krijg deze melding met het openen van de pagina
natuurlijk kan ik deze dag nog niet ingevuld hebben...want ik open pas de pagina
1 2 3 4 | { // Code hier } |
1 2 3 4 5 6 7 | { if( $_POST['Action'] == 'PostPlaatsen' ) { // Code hier } } |
Scriptje van andere user gebruikt, en dat werkt primaquote:Op donderdag 26 augustus 2010 11:47 schreef Darkomen het volgende:
[..]
Dat bedoel ik ook, scriptje is zo geschreven en 120kl regels is ook niks
Array en in_array?quote:Op vrijdag 27 augustus 2010 21:33 schreef Crutch het volgende:
Is er een functie of een mogelijkheid om, laten we zeggen, zo'n twintig variabelen(strings) te controleren op één specifieke waarde?
Hallo Trollfacequote:
Verschillend.quote:Op vrijdag 27 augustus 2010 21:41 schreef Trollface. het volgende:
Ligt eraan, hoe zijn ze genoemd?
Hoi
in_array, $_POST?quote:Op vrijdag 27 augustus 2010 21:45 schreef Crutch het volgende:
[..]
Verschillend.
Ze komen allemaal uit een formulier en hebben namen als: $naam, $telefoonnummer, $etcetera..
Laat ze allemaal uit een array komen op het moment dat ze gepost worden?quote:Op vrijdag 27 augustus 2010 21:45 schreef Crutch het volgende:
[..]
Verschillend.
Ze komen allemaal uit een formulier en hebben namen als: $naam, $telefoonnummer, $etcetera..
Dudequote:
Hoe bedoel je?quote:Op vrijdag 27 augustus 2010 21:47 schreef Scorpie het volgende:
[..]
Laat ze allemaal uit een array komen op het moment dat ze gepost worden?
Als je $_POST variablen id`s geeft a la ['field']['naam'] en ['field']['adres'], dan hoef je alleen maar $_POST['field'] uit te lezen, dat is dan namelijk een array. Die id`s heb je dus in je form staan.quote:
Okay. Alle velden hebben ook nog een ander 'id'.quote:Op vrijdag 27 augustus 2010 21:56 schreef Scorpie het volgende:
[..]
Als je $_POST variablen id`s geeft a la ['field']['naam'] en ['field']['adres'], dan hoef je alleen maar $_POST['field'] uit te lezen, dat is dan namelijk een array. Die id`s heb je dus in je form staan.
<?php echo("Daar hebben we een knop voor genaamd ".$volg_topic); ?>quote:
Probeer maar eens uit; maak 2 text velden aan in een form:quote:Op vrijdag 27 augustus 2010 22:20 schreef Crutch het volgende:
[..]
Okay. Alle velden hebben ook nog een ander 'id'.
Ik snap alleen niet precies wat je bedoelt met "a la ['field']['naam']"
Okay, heb het zo gedaan:quote:Op vrijdag 27 augustus 2010 23:17 schreef Scorpie het volgende:
[..]
Probeer maar eens uit; maak 2 text velden aan in een form:
<input type="text" id="['field']['naam']"/>
<input type="text" id="['field']['adres']"/>
En doe na het posten van je form maar eens echo $_POST['field'];
1 2 3 4 5 | <input type="text" id="['field']['naam']"/> <input type="text" id="['field']['adres']"/> <input type="submit" /> </form> |
1 2 3 | echo $_POST['field']; ?> |
quote:Op vrijdag 27 augustus 2010 23:31 schreef Crutch het volgende:
[..]
Okay, heb het zo gedaan:
Formulier:
[ code verwijderd ]
test.php :
[ code verwijderd ]
Dan krijg ik:
Notice: Undefined index: field in C:\wamp\www\test\test.php on line 2
1 2 3 4 5 6 7 8 9 10 11 12 | if(!empty($_POST)){ print_r($_POST); print_r($_POST['field']) ; } ?> <form action="test.php" method="POST"> <input type="text" id="naam" name="field['naam']"/> <input type="text" id="adres" name="field['adres']"/> <input type="submit" /> </form> |
Als ie onder de BSD-licentie is, mag dat.quote:Op vrijdag 27 augustus 2010 22:30 schreef ReWout het volgende:
Vraagje mensen
In een programmeertaal heb ik een validatie class nodig. Nu wou ik deze denk ik gedeeltelijk baseren op de Zend Validatie class. Nu heb ik twee vragen
a. Mag dit?
b. Waaraan moet ik voldoen als dit mag? Moet ik bijvoorbeeld de BSD licentie overnemen?
quote:Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
This product includes software developed by the <organization>.
4. Neither the name of the <organization> nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
Oke, is wel de nieuwe BSD licentie, dus de onderste twee punten zijn ongeldig. Maar als ik de orignele licentie er gewoon bijzet is alles ok.quote:Op zaterdag 28 augustus 2010 00:30 schreef Trollface. het volgende:
[..]
Als ie onder de BSD-licentie is, mag dat.
[..]
Omdat de name moet worden ingevuld, ipv id. Even "id" wijzigen naar "name"quote:Op vrijdag 27 augustus 2010 23:31 schreef Crutch het volgende:
[..]
Okay, heb het zo gedaan:
Formulier:
[ code verwijderd ]
test.php :
[ code verwijderd ]
Dan krijg ik:
Notice: Undefined index: field in C:\wamp\www\test\test.php on line 2
Je kan geen array echo'en hequote:Op zaterdag 28 augustus 2010 11:55 schreef Crutch het volgende:
[..]
Dan echoot het script 'Array'.
Iig bedankt voor de hulp iedereen!
I know, maar dan is het dus een array.quote:Op zaterdag 28 augustus 2010 11:57 schreef Swetsenegger het volgende:
[..]
Je kan geen array echo'en he
Dat hoeft nog niet eens. Alleen het copyright notice.quote:Op zaterdag 28 augustus 2010 00:50 schreef ReWout het volgende:
[..]
Oke, is wel de nieuwe BSD licentie, dus de onderste twee punten zijn ongeldig. Maar als ik de orignele licentie er gewoon bijzet is alles ok.
Gebruik je shorttags ( dus <? ... ?> )? Zo ja, even aanpassen naar <?php ... ?>.quote:Op zaterdag 28 augustus 2010 18:55 schreef MrNiles het volgende:
ik heb op internet een werkend gastenboek, zonder foutmeldingen enzo (nu wel ondertussen)
maar die wil ik lokaal draaien dmv wamp (oid)
als ik dan de pagina bekijk krijg ik ineens vage meldingen
wamp laat phpscript zien ipv ze uit te voeren.
Dus in plaats van een het ingevoerde bericht staat er nu '.($bericht).'
en nog meer van die shit...
what's the problem??
thanx!quote:Op zaterdag 28 augustus 2010 19:14 schreef Tuvai.net het volgende:
[..]
Gebruik je shorttags ( dus <? ... ?> )? Zo ja, even aanpassen naar <?php ... ?>.
Bedankt voor de tip!quote:Op zaterdag 28 augustus 2010 19:18 schreef MrNiles het volgende:
[..]
thanx!
hoe simpel kan php soms zijn...
krijg nu nog wel andere meldingen maar het werkt iig
misschien voor de terug lezers
ik was bezig geweest met reCaptha op een gastenboek te zetten ivm heel veel spam
dat lukte dus niet maar na wat google werk heb ik een hele simpele oplossing gevonden om mijn gastenboek spam vrij te kregen.
ik heb de invulvelden email en message een compleet andere naam gegeven (banaan en sneeuwwitje bv)
en 2 hidden velden de namen email en message gegeven.
als deze velden worden ingevuld dan komt de spam niet door en omdat ze hidden zijn kan een bot ze wel invullen en een gebruiken niet
supersimpel en heel effectief
1 |
1 2 3 | include(BASE_PATH . "/classes/class.test.php"); ?> |
1 2 3 | echo "<table border=1 width=800px><tr><td width=20%> {$row['email']}</td><td width=20%> {$row['voornaam']} </td><td width=20%>{$row['achternaam']} </td width=20%><td>Filename: <a href=download.php?id={$row['id']}> {$row['name']}</a></td></tr></table>"; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | if(isset($_GET['id'])) { // if id is set then get the file with the id from database include 'library/config.php'; include 'library/opendb.php'; $id = $_GET['id']; $query = "SELECT name, type, size, content " . " FROM upload WHERE id = '$id'"; $result = mysql_query($query) or die('Error, query failed'); list($name, $type, $size, $content) = mysql_fetch_array($result); header("Content-length: $size"); header("Content-type: $type"); header("Content-Disposition: attachment; filename=$name"); ob_clean(); flush(); print $content; include 'library/closedb.php'; exit; } ?> |
Je vergeet header("Content-Transfer-Encoding: binary");.quote:Op maandag 30 augustus 2010 16:39 schreef Jumparound het volgende:
hoi,
ik heb een onwijze noobvraag.. sorry daarvoor
Ik gebruik code die ik aanroep via:
[ code verwijderd ]
roept aan:
[ code verwijderd ]
Wat is mijn vraag:
Hoe voorkom ik dat het bestand wat ik wil openen alsnog geopend wordt in de browser? Ik moet het downloaden vanuit de mysql database...
1 2 3 4 5 6 7 8 9 10 | *, CASE feed_id WHEN 0 THEN u2.* ELSE u1.* END CASE FROM objects |
Je idee is goed, alleen het gebruik van CASE niet.quote:Op dinsdag 31 augustus 2010 09:19 schreef Doc.Brown het volgende:
Hmm, volgens mij mis ik de obvious solution maar het wil maar niet lukken;
Situatie: één tabel met woningen en één tabel met gebruikersinformatie. Alleen welke gebruiker bij welke woning hoort is afhankelijk van 2 waardes in de woningentabel; de gebruiker kan ofwel gekoppeld worden met het user_id ofwel door een feed_id die ook aanwezig is in de gebruikerstabel.
Nu doe ik dus 2 left joins voor situatie 1 en situatie 2. Maar dat is natuurlijk niet ideaal omdat je dan altijd 1 tabel joint die vol met null staat en dus in situatie 1 de waardes in PHP nutteloos maakt.
Nu wilde ik eigenlijk een soort IF statement gebruiken om de benodigde tabel te joinen afhankelijk van de waarde van feed_id. Ik kwam de CASE statement tegen maar dan heb ik iets als:
[ code verwijderd ]
Geeft me een syntax error en dat * is natuurlijk nog niet goed. Maar misschien kan dit ook met een slimme manier van joinen gedaan worden? Het gaat het me er dus om dat ik gewoon één user-tabel terug krijg die afhankelijk is van de feed_id.
Any thoughts?
1 2 3 4 5 6 7 8 9 | object.veld1, object.veld2, (CASE object.feed_id WHEN 0 THEN user.id ELSE feed.id END) AS UiteindelijkUserID, (CASE object.feed_id WHEN 0 THEN user.username ELSE feed.username END) AS UiteindelijkUsername FROM object LEFT OUTER JOIN feed ON feed.id = object.feed_id LEFT OUTER JOIN user ON user.id = object.user_id |
ik ben dom geloof ik... maar zoek nog even verder, krijg het echt niet voor elkaar!quote:Op dinsdag 31 augustus 2010 00:08 schreef Tuvai.net het volgende:
Woeps, header("Content-Description: File Transfer"); hoort er ook bij.
En vang meteen die querystring ID af, die's nu gevoelig voor SQL injection.
Is jouw $content wel binair?quote:Op dinsdag 31 augustus 2010 10:44 schreef Jumparound het volgende:
[..]
ik ben dom geloof ik... maar zoek nog even verder, krijg het echt niet voor elkaar!
probeer nu een ander script, maar die loopt vast
yupquote:
http://nl2.php.net/manual/en/function.current.phpquote:Op dinsdag 31 augustus 2010 15:41 schreef Schepseltje het volgende:
hoe kan ik de eerste waarde uit een associative array halen op een nette manier?
ik doe het nu met foreach en dan gelijk een break, maar das lelijk
met reset lijkt het te lukken, thanksquote:Op dinsdag 31 augustus 2010 15:43 schreef mstx het volgende:
[..]
http://nl2.php.net/manual/en/function.current.php
Eventueel met http://nl2.php.net/manual/en/function.reset.php
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 | if(isset($_GET['id'])) { // if id is set then get the file with the id from database header("Content-Description: File Transfer"); header("Content-length: $size"); header("Content-type: $type"); header("Content-Disposition: attachment; filename=$name"); header("Content-Transfer-Encoding: Binary"); include 'library/config.php'; include 'library/opendb.php'; $id = $_GET['id']; $query = "SELECT name, type, size, content " . "FROM upload WHERE id = '$id'"; $result = mysql_query($query) or die('Error, query failed'); list($name, $type, $size, $content) = mysql_fetch_array($result); echo $content; include 'library/closedb.php'; exit; } ?> |
[code=php] :)quote:Op dinsdag 31 augustus 2010 17:15 schreef Jumparound het volgende:
PS, hoe krijg je je php code met kleurtjes?
Maakt niets uit, als het goed is bevalt ie wel de data die je nodig hebt.quote:Op dinsdag 31 augustus 2010 17:30 schreef Jumparound het volgende:
tevroeg gejuigd, hij gaat nu de download.php opslaan
Ik ga er van uit dat het categorie-veld dat je in je wijzigingsformulier gebruikt, een dropdown ( <select> ) is. Je met deze dan niet alleen vullen met de naam van de categorieën, maar de IDs van deze categorieën als value gebruiken, dus als volgt:quote:Op woensdag 1 september 2010 00:40 schreef boem-dikkie het volgende:
Ik zit een beetje vast. Zal vast wel weer een beginnersfoutje zijn maar ik hoop dat jullie mij kunnen helpen.
Ik heb een tabel met nieuws-categorieën en een tabel met nieuws.
In de tabel nieuws staat een rij die 'categorie_id (INT)' heet. Met een JOIN kan ik op de nieuwspagina laten zien welke categorie uit 'nieuws-categorieën' bij welke categorie_id hoor in het nieuwsbericht..
Dat werkt allemaal prima!
Alleen nu heb ik een wijzigingsformulier voor nieuwsberichten waar ik dus ook JOIN gebruik. Zodat de user kan zien welke categorie er momenteel bij het nieuwsbericht hoor.. Alleen door die JOIN wil hij nu als hij een categorie wijzigt de naam van de categorie in de rij 'categorie_id' gooien volgens mij. Dat wil dus niet omdat categorie_id INT als eigenschap heeft...
Dit is echter alleen zo als hij de categorie die al bij het nieuwsbericht hoort laat voor wat het is. Als hij de categorie wijzigt doet hij het wel, als hij iets in het nieuwsbericht aanpast en de categorie zo laat geeft hij dus een 'undefined index' fout.
Ik hoop dat jullie het snappen.Geen idee hoe ik dit handig kan uitleggen..
1 2 3 4 5 | <option value="1">Categorie 1</option> <option value="2">Categorie 2</option> <option value="3">Categorie 3</option> </select> |
1 2 3 4 5 | return true; }else{ return false; } |
Je geeft geen begin en einde aan in je (mogelijke) expressie.quote:Op vrijdag 3 september 2010 08:58 schreef Sitethief het volgende:
[ code verwijderd ]
Ik wil hier mee postcodes valideren, dat gaat soms goed, maar hij pakt ook 5445 gh7 als geldige postcode.....
1 |
Ik zie gewoon een slash als begin en als eind.quote:Op vrijdag 3 september 2010 09:01 schreef Tuvai.net het volgende:
[..]
Je geeft geen begin en einde aan in je (mogelijke) expressie.
[ code verwijderd ]
En die had hij er zelf al bijgezet. Maar het was nog vroeg en ik had nog geen koffie gehad.quote:Op vrijdag 3 september 2010 09:30 schreef Xcalibur het volgende:
Tuvai bedoelt het begin en einde van de string, dus ^ en $
1 |
Overhead dus.quote:Op zaterdag 4 september 2010 14:54 schreef boem-dikkie het volgende:
Ik zie in mijn database (mySQL) steeds staan dat er een 'overheat' is. Ik kan dan op optimaliseer klikken en dan is het weg.. iemand een idee hoe dit veroorzaakt wordt?
Ik delete ook niet daadwerkelijk.. maar gaat het in de toekomst nog problemen opleveren? Of maakt het niet veel uit?quote:Op zaterdag 4 september 2010 15:00 schreef Tuvai.net het volgende:
[..]
Overhead dus.
Overhead zijn stukjes 'vervuilde' / loze ruimte die je tabel/database ooit gebruikt heeft als opslagruimte van een record dat verwijderd is, of voor het uitvoeren van grote queries. Veel databaseplatformen doen dit automatisch, MySQL doet dit niet om zo een stukje sneller te zijn.![]()
Ik heb er zelf al jaren geen last meer van gehad, sinds ik InnoDB ald storage engine gebruik, en records niet meer daadwerkelijk delete (in plaats daarvan zet ik een indicatorveldje op 'true', of een datum).
MySQL met MyISAM als storage engine is, zoals Glowmouse al laat doorschemeren, nou niet bepaald het meest stabiele databaseplatform dat er is. Je zult heel vaak zien dat je overhead zult krijgen, en dat je tabellen bij extreme groei gewoon 'kapot' gaan waardoor je i.p.v. OPTIMIZE TABLE zelfs een REPAIR TABLE commando moet uitvoeren, om het .MYD bestandje (fysieke databestand van MySQL - MyISAM) te repareren.quote:Op zaterdag 4 september 2010 15:14 schreef boem-dikkie het volgende:
Ik delete ook niet daadwerkelijk.. maar gaat het in de toekomst nog problemen opleveren? Of maakt het niet veel uit?
Tabellen gaan niet kapot door hun grootte maar door kapotte hardware of door stroomuitval. In het eerste geval zit je met geen enkele engine 100% veilig.quote:Op zaterdag 4 september 2010 18:07 schreef Tuvai.net het volgende:
[..]
dat je tabellen bij extreme groei gewoon 'kapot' gaan waardoor je i.p.v. OPTIMIZE TABLE zelfs een REPAIR TABLE commando moet uitvoeren, om het .MYD bestandje (fysieke databestand van MySQL - MyISAM) te repareren.
Het is alleen goed genoeg als je het niet erg vindt als je data verloren gaat of als users inconsistente gegevens zien.quote:Op zaterdag 4 september 2010 18:07 schreef Tuvai.net het volgende:
[..]
Overigens wil ik niet zeggen dat MySQL - MyISAM per definitie slecht is hoor. Voor kleine website`jes waar je het over tienduizenden en misschien honderdduizenden records hebt, is het goed genoeg. Maar het is niet geschikt om met miljoenen records om te gaan voor grotere websites / applicaties.
Ik heb in het verleden een eigen forum gehad (PHP en MySQL - MyISAM) waarvan de Posts-tabel op een gegeven moment richting de miljoen records ging. Die tabel ging steeds vaker gewoon 'kapot', zonder dat er sprake was van een verkeerd ingerichte of kapotte server, of stroomuitval. Nu is het zeker zo dat er op elk platform wel eens iets goed mis kan gaan door een van de oorzaken die jij al noemt, maar ik ben dit tot nu toe alleen nog maar tegengekomen bij MySQL in de praktijk. En vaak ook.quote:Op zaterdag 4 september 2010 18:09 schreef GlowMouse het volgende:
Tabellen gaan niet kapot door hun grootte maar door kapotte hardware of door stroomuitval. In het eerste geval zit je met geen enkele engine 100% veilig.
MySQL - MyISAM is goed voor kleine en snelle dingen. Voor een simpele website met een contactformuliertje en gastenboek hoef ik geen relationele database op de achtergrond.quote:Het is alleen goed genoeg als je het niet erg vindt als je data verloren gaat of als users inconsistente gegevens zien.
Als je het kunt reproduceren dan moet je een bugreport indienen, maar MyISAM gaat echt niet zomaar kapot. Het wordt best veel gebruikt voor datamining, en dan heb je het niet over kleine tabellen.quote:Op zaterdag 4 september 2010 18:18 schreef Tuvai.net het volgende:
[..]
Ik heb in het verleden een eigen forum gehad (PHP en MySQL - MyISAM) waarvan de Posts-tabel op een gegeven moment richting de miljoen records ging. Dit tabel ging steeds vaker gewoon 'kapot', zonder dat er sprake was van een verkeerd ingerichte of kapotte server, of stroomuitval. Nu is het zeker zo dat er op elk platform wel eens iets goed mis kan gaan door een van de oorzaken die jij al noemt, maar ik ben dit tot nu toe alleen nog maar tegengekomen bij MySQL in de praktijk. En vaak ook.
Onzin, het is niet voor niks dat MySQL standaard overgaat op InnoDB.quote:MySQL - MyISAM is goed voor kleine en snelle dingen. Voor een simpele website met een contactformuliertje en gastenboek hoef ik geen relationele database op de achtergrond.
1 |
1 |
Ik had inderdaad al opgemerkt ja.quote:Op maandag 6 september 2010 19:47 schreef Darkomen het volgende:
als je een variabele boven je include in de eerste pagina defineerd dan word deze gewoon meegenomen in de include
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 | class Database { public $host = DB_HOST; public $database = DB_DBNAME; public $user = DB_USERNAME; public $password = DB_PASSWORD; public function connect() { $connect = mysql_connect($this->host, $this->user, $this->password) or die (mysql_error()); if($connect) { mysql_select_db($this->database) or die (mysql_error()); } } public function disconnect() { mysql_close($connect) or die (mysql_error()); } } ?> |
Iemand die mij kan vertellen wat ik fout doe?quote:Fatal error: Using $this when not in object context in /home/vhosting/k/[..]/htdocs/cms/libs/database.class.php on line 18
Foutmelding verklapt het min of meer al: $this is alleen beschikbaar wanneer je het over geïnstantieerde objecten hebt. Je dient dus eerst een instantie te maken van je database class/object d.m.v. $var = new Database();, alvorens je $var->connect() kunt uitvoeren.quote:Op maandag 6 september 2010 21:10 schreef poepeneesje het volgende:
Nog een vraag.
[ code verwijderd ]
Als de pagina als include opvraag zie ik in Firebug:
[..]
Iemand die mij kan vertellen wat ik fout doe?
MySQL met MyISAM is inderdaad maar een slecht databaseplatform als je het gaat vergelijken met stabielere platformen als MySQL - InnoDB, Orable, SQL Server, enzovoorts. MyISAM ondersteunt onder andere geen transactions en relaties, en er is vrijwel geen data integriteit.quote:Op maandag 6 september 2010 11:23 schreef Xcalibur het volgende:
Kan iemand wat linkjes posten naar wat het probleem van MyISAM precies is?
Ik heb er zelf nog nooit problemen mee gehad, en ik vind de exacte rowcount altijd wel prettig....
Of je set die waardes gewoon in je constructor? Dan kun je ze oproepen met this, en meegeven bij het instantiëren van de gehele class....quote:Op maandag 6 september 2010 21:22 schreef Tuvai.net het volgende:
[..]
Foutmelding verklapt het min of meer al: $this is alleen beschikbaar wanneer je het over geïnstantieerde objecten hebt. Je dient dus eerst een instantie te maken van je database class/object d.m.v. $var = new Database();, alvorens je $var->connect() kunt uitvoeren.
quote:PHP 5 allows developers to declare constructor methods for classes. Classes which have a constructor method call this method on each newly-created object, so it is suitable for any initialization that the object may need before it is used.
1 2 3 4 5 6 | $this->dbhost = $dbhost; $this->dbname = $dbname; $this->dbuser = $dbuser; $this->dbpassword = $dbpassword; } |
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 | class Database { private static $host = DB_HOST; private static $database = DB_DBNAME; private static $user = DB_USERNAME; private static $password = DB_PASSWORD; private static $connect; public function connect() { self::$connect = mysql_connect(self::$host, self::$user, self::$password) or die (mysql_error()); if(self::$connect) { mysql_select_db(self::$database) or die (mysql_error()); } } public function disconnect() { mysql_close(self::$connect) or die (mysql_error()); } } ?> |
Je zou inderdaad, zoals Sitethief al aangeeft, kunnen overwegen om je verbinding te initialiseren in een 'constructor', een functie genaamd __construct() die automatisch altijd aangeroepen wordt bij het instantiëren van je Database object.quote:Op maandag 6 september 2010 23:28 schreef poepeneesje het volgende:
Tuvai.net, Sitethief en cablegunmaster: Bedankt voor jullie reactie.
Ik heb het zelf als volgt opgelost:
[ code verwijderd ]
Is dit een goede manier of is jullie manier beter en wil je dan uitleggen waarom?
Meeste termen kende ik hier al van maar ik dank je voor de linksquote:Op maandag 6 september 2010 23:41 schreef Tuvai.net het volgende:
[..]
Je zou inderdaad, zoals Sitethief al aangeeft, kunnen overwegen om je verbinding te initialiseren in een 'constructor', een functie genaamd __construct() die automatisch altijd aangeroepen wordt bij het instantiëren van je Database object.
Verdiep je ook eens in 'protection levels' (public, private, protected), 'inheritance' en het verschil tussen 'static' en 'non static'.Als je daarmee overweg kunt, kun je op zich eens gaan stoeien met het bouwen van leuke modellen.
http://www.sitemasters.be(...)tected_en_Private%29
http://theserverpages.com/php/manual/en/language.oop5.static.php
In mijn geval stel in de waardes toch ook maar 1x in?quote:Op maandag 6 september 2010 23:54 schreef cablegunmaster het volgende:
[..]
Meeste termen kende ik hier al van maar ik dank je voor de links.
en wat hij zegt is een __construct() eigenlijk toch het beste in jou geval.
je hoeft namelijk de waardes maar 1x in te stellen lijkt mij.
dus op zijn netst qua code is Sitethief het efficientst bezig.
1 2 3 4 5 6 | $db = new Database(); $db->connect(); [...] $db->disconnect(); ?> |
1 2 3 4 5 | Database::connect(); [...] Database::disconnect(); ?> |
Als je je verbinding initialiseert in je constructor, is $var = new Database(); al voldoende om deze verbinding te initialiseren. Dan hoef je niet nog eens apart je connect() methode te gebruiken (die dan sowieso weg valt).quote:Op dinsdag 7 september 2010 00:08 schreef poepeneesje het volgende:
[..]
In mijn geval stel in de waardes toch ook maar 1x in?
Verder hoef je op mijn manier geen nieuw object aan te maken. Die manier van Sitethief geeft precies hetzelfde resultaat als wat ik doe.
Verder dien ik op de manier van ST de boel op deze manier aan te roepen (zoals Tuvai.net aangaf):
[ code verwijderd ]
En ik kan voldoen met:
[ code verwijderd ]
Als aanvulling is het best mogelijk dat er een situatie komt waarbij twee databaseverbindingen nodig zijn. Dat gaat je niet lukken als de class een static class is.quote:Op dinsdag 7 september 2010 09:23 schreef Tuvai.net het volgende:
[..]
Als je je verbinding initialiseert in je constructor, is $var = new Database(); al voldoende om deze verbinding te initialiseren. Dan hoef je niet nog eens apart je connect() methode te gebruiken (die dan sowieso weg valt).
Het voordeel van het werken met die methode, is dat je logisch database-object krijgt waar je tegen aan programmeert, in plaats van een verzameling statische methodes. Je hebt dan ook in je Database class de mogelijkheid om $this te gebruiken, waarmee je een extra 'scope' toevoegt aan je code. Je kunt op die manier bijvoorbeeld ook er voor kiezen om je verbinding te initialiseren in een aparte, private/protected methode/variabele in je Database class, waarbij je in elke andere methode controleert of deze variabele gevuld is (hetgeen dus betekent dat je verbinding geïnitialiseerd is ). Zo kun je weer andere technieken toepassen, zoals 'Lazy Loading'.
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 | class Database { private $host; private $database; private $user; private $password; private $connect; public function __construct() { $this->host = DB_HOST; $this->database = DB_DBNAME; $this->user = DB_USERNAME; $this->password = DB_PASSWORD; $this->connect(); } private function connect() { if(!$this->connect) { $this->connect = mysql_connect($this->host, $this->user, $this->password) or die (mysql_error()); if($this->connect) { mysql_select_db($this->database) or die (mysql_error()); } } } public function disconnect() { if($this->connect) { mysql_close($this->connect) or die (mysql_error()); } } } ?> |
Dat is een goede! Aangepast. Tevens ook het PDO-object gebruikt om de verbinding op te zetten met MySQL.quote:Op dinsdag 7 september 2010 13:48 schreef Scorpie het volgende:
$this->connect als variable naam zou ik dan $this->connection van maken.
Goede zet. PDO is ideaal voor als je meerdere databaseplatformen wilt ondersteunen. Ook biedt PDO de mogelijkheid om transactions op te bouwen. Handig voor wanneer je dat niet op databaseniveau kunt doen.quote:Op dinsdag 7 september 2010 16:13 schreef poepeneesje het volgende:
Dat is een goede! Aangepast. Tevens ook het PDO-object gebruikt om de verbinding op te zetten met MySQL.
Wat beveiliging betreft, kan ik je OWASP aanraden: http://www.owasp.org/index.php/Main_Pagequote:Op dinsdag 7 september 2010 21:16 schreef boem-dikkie het volgende:
Bedankt voor alle database info heren! Database van mij is in gebruik voor hooguit een paar 100 misschien 1000 records. Dus miljoenen zijn en worden het sowieso niet. Hebben jullie nog tips voor goede tutorials over een stevig inlogsysteem? Gebruik nu gewoon sessions en dergelijke maar lees overal dingen over sessions injection e.d. Zelf al wat gegoogled maar kom vooral bij resultaten en sites uit 2004 enzo. Beetje oud.
Nou wil ik meer dan 1 standaard pagina met 10 resultaten leeghalen... dus ik dacht ik voeg num=100(100 resultaten) toe aan de url:quote:"http://www.google.com/search?q=" . urlencode($keyword) . ""
Dit werkt WEL als ik het normaal laad in een browser, maar werkt NIET via cURL... Heeft iemand de gouden tip voor mij om meer dan 10 resultaten te laden met PHP/cURL van google?!quote:"http://www.google.com/search?num=100&q=" . urlencode($keyword) . "",
quote:Op dinsdag 7 september 2010 21:16 schreef boem-dikkie het volgende:
Bedankt voor alle database info heren! Database van mij is in gebruik voor hooguit een paar 100 misschien 1000 records. Dus miljoenen zijn en worden het sowieso niet. Hebben jullie nog tips voor goede tutorials over een stevig inlogsysteem? Gebruik nu gewoon sessions en dergelijke maar lees overal dingen over sessions injection e.d. Zelf al wat gegoogled maar kom vooral bij resultaten en sites uit 2004 enzo. Beetje oud.
mss dit iets voor jequote:Dave
17-Nov-2009 10:05
If you deploy php code and cannot control whether register_globals is off, place this snippet in your code to prevent session injections:
1
2
3<?php
if (isset($_REQUEST['_SESSION'])) die("Get lost Muppet!");
?>
Je kan het er zelf uitslopenquote:Op donderdag 9 september 2010 12:46 schreef RenRen- het volgende:
[..]
Wel heel veel nutteloze features voor mijn site, is er niets simpelers?
Dat dusquote:Op donderdag 9 september 2010 12:47 schreef Tuvai.net het volgende:
Wat Scorpie zegt. En dat 99% van de galleries met thumbnails werken heeft een reden hoor. Zou leuk worden voor zowel de bezoeker als het bandbreedteverbruik als er hele galerijen met tientallen foto's van origineel formaat in één keer geladen / ge`preload zouden worden.
En dat ik niet met thumbnails wil werken heeft ook een reden. Het is geen gigantische site, en dit lijkt mij persoonlijk practischer. Ik hoef mezelf eigenlijk helemaal niet te verklaren, want dit is gewoon wat ik wil, ongeacht wat 99% van alle andere galleryhouders doen.quote:Op donderdag 9 september 2010 12:47 schreef Tuvai.net het volgende:
Wat Scorpie zegt. En dat 99% van de galleries met thumbnails werken heeft een reden hoor. Zou leuk worden voor zowel de bezoeker als het bandbreedteverbruik als er hele galerijen met tientallen foto's van origineel formaat in één keer geladen / ge`preload zouden worden.
Ik zal even kijken wat ik ermee kanquote:
Dat zal. Ik wil alleen geen thumbnails. Gewoon text.quote:Op donderdag 9 september 2010 13:02 schreef ursel het volgende:
Bij de meeste galleries kan je toch ook instellen hoe groot je thumbnails moeten zijn.
Dat kun je beter met javascript doen.quote:Op donderdag 9 september 2010 12:40 schreef RenRen- het volgende:
Hoi,
Wat ik wil, is dat er in mijn site, links een lijst komt met de linkjes naar de pagina, en dat rechts dan het plaatje inlaadt. Ook wil ik dat er een vorige/volgende komt.
Wel als je het een beetje dynamisch wilt houden.quote:Op donderdag 9 september 2010 13:08 schreef KomtTijd... het volgende:
[..]
Dat kun je beter met javascript doen.
PHP is dan wellicht handig om automatisch een lijst van de betreffende bestanden uit een map te halen, maar niet noodzakelijk.
Hm, het nadeel wat ons altijd wordt verteld is dat Javascript uit te schakelen is. Standaard. Maar ik zal er even naar kijken, dankje!quote:Op donderdag 9 september 2010 13:08 schreef KomtTijd... het volgende:
[..]
Dat kun je beter met javascript doen.
PHP is dan wellicht handig om automatisch een lijst van de betreffende bestanden uit een map te halen, maar niet noodzakelijk.
De meeste mensen die javascript uitschakelen, doen dat bewust. Die weten dat de helft van de sites (voorzichtige schatting) niet meer optimaal functioneert.quote:Op donderdag 9 september 2010 13:10 schreef RenRen- het volgende:
[..]
Hm, het nadeel wat ons altijd wordt verteld is dat Javascript uit te schakelen is. Standaard. Maar ik zal er even naar kijken, dankje!
Ja dat kan, maar niemand doet dat. Als je dat doet zou het halve internet ineens niet meer werken.quote:Op donderdag 9 september 2010 13:10 schreef RenRen- het volgende:
[..]
Hm, het nadeel wat ons altijd wordt verteld is dat Javascript uit te schakelen is. Standaard. Maar ik zal er even naar kijken, dankje!
Oh. Mijn leraar is een dramaking, dat helpt.quote:Op donderdag 9 september 2010 13:20 schreef KomtTijd... het volgende:
[..]
Ja dat kan, maar niemand doet dat. Als je dat doet zou het halve internet ineens niet meer werken.
Als je gewoon een lijst met knoppen/linkjes maakt, met onclick="document.getElementById('grotefoto').src='/link/naar/afbeelding.jpg'", en een grote afbeelding (img-tag) met id="grotefoto", dan moet het eigenlijk al werken. Heel basic, maar de rest is voornamelijk HTML.
Okequote:Op donderdag 9 september 2010 13:24 schreef Tuvai.net het volgende:
Javascript zullen inderdaad maar weinig mensen (onbewust) uitschakelen. Overigens is het mooie van Javascript dat het het 'unobtrusive' kunt toepassen. Dat wilt zeggen dat je je Javascript puur gebruikt 'ter opleuking van', maar dat je pagina/website/applicatie wél nog functioneel is indien Javascript uitgeschakeld is. Denk aan bijvoorbeeld een alternatieve link die je foto in een nieuw venster opent wanneer Javascript uitgeschakeld is, in tegenstelling tot het dynamisch vervangen van een element op een pagina met Javascript.
Welkom in de wereld van OOquote:Op donderdag 9 september 2010 14:11 schreef Sitethief het volgende:
Ik ben tegenwoordig class verslaafd. Ik schrijf overal functions en classes voor, mijn php snippets zijn angstaanjagend kort tegenwoordig
.
bedoel daarmee dat er bijv een foutieve geboortedatum stond ( geboren in 2010 ) en daarna verwijderd is, daardoor is het veld niet meer ingevuld en noem ik leegquote:
En daarom kreeg je nu 2 verkeerde adviezen van mensen die een andere definitie hebben van 'leeg'.quote:Op donderdag 9 september 2010 15:57 schreef Estolan het volgende:
[..]
bedoel daarmee dat er bijv een foutieve geboortedatum stond ( geboren in 2010 ) en daarna verwijderd is, daardoor is het veld niet meer ingevuld en noem ik leeg
Dat is ook de reden dat veel mensen op hun bek gaan bijquote:Op donderdag 9 september 2010 16:02 schreef Scorpie het volgende:
[..]
En daarom kreeg je nu 2 verkeerde adviezen van mensen die een andere definitie hebben van 'leeg'.
1 |
1 |
In phpmyadmin zet je dan default waarde op NULL.quote:Op donderdag 9 september 2010 16:11 schreef Estolan het volgende:
Ok is er dan nog een manier waarbij je het veld dus op NULL krijgt? of is dat een kwestie door NULL in te voeren?
je moet het zien dat wij die data exporteren, dus als iets niet is ingevuld moet het vakje leeg zijn
Ja, zoiets lijkt me mooi, maar de enige tutorials die een beetje begrijpelijk zijn voor mij zijn allemaal sites en tutorials uit 2004-2006...quote:Op donderdag 9 september 2010 12:06 schreef cablegunmaster het volgende:
[..]
[..]
mss dit iets voor je
Daarnaast zie ik veel admins die aan raden toch een Database sessie te maken. dat houd in als ze zijn ingelogd dat de gegevens in een tabel komen. met een Tijd waarde + 60 minuten bvb.
Een sessie tabel. met dezelfde sessie tabel kun je meteen kijken hoeveel bezoekers je hebtop je website.
of ze zijn ingelogd of niet. (gasten / bezoekers).
en als de site de 60 minuten overschrijd dan logt hij je uit. of je moet met dezelfde sessie op een pagina zijn geland en de sql opnieuw updaten.
Dat is naar mijn mening ook het grootste minpunt aan PHP. Het implementeren van Strong Typing in PHP zou hier al veel mee oplossen. Er zitten nu veel te veel functies in PHP die maar iets retourneren, wat van alles kan zijn. Je bent in PHP vaak veel te veel bezig met het controleren en afvangen van waarden, waarvan je eigenlijk gewoon uit zou moeten kunnen gaan dat het een int, een boolean, of een string is.quote:Op donderdag 9 september 2010 16:05 schreef Sitethief het volgende:
[..]
Dat is ook de reden dat veel mensen op hun bek gaan bij
[ code verwijderd ]
en
[ code verwijderd ]
In beide gevallen wordt de string '0' als leeg én als false gezien. Vooral bij array_search ging ik zelf nog wel eens op mijn bek omdat die nog wel eens 0 terug wil geven. Kwestie van de php.net documentatie goed lezen omdat het er daar heel groot bij staat.
Met een klein beetje creativiteit kun je in PHP aantonen dat true gelijk is aan false.quote:Op donderdag 9 september 2010 21:14 schreef Tuvai.net het volgende:
[..]
Dat is naar mijn mening ook het grootste minpunt aan PHP. Het implementeren van Strong Typing in PHP zou hier al veel mee oplossen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public function getTheoryWeekends($connection) { $query = " SELECT * FROM CT_theoryWeekends WHERE theoryWeekendID = ( SELECT theoryWeekendID FROM CT_theoryWeekends WHERE endDate > NOW() AND status = \"enabled\") "; return $connection->query($query)->fetch(PDO::FETCH_ASSOC); } ?> |
quote:Fatal error: Call to a member function fetch() on a non-object in /home/vhosting/k/[...]/htdocs/cms/modules/theorieweekenden/module.class.php on line 21
Je subquery retourneert meerdere resultaten. Maak anders gebruik van de IN() functie van MySQL:quote:Op zondag 12 september 2010 00:30 schreef poepeneesje het volgende:
Ik heb nu een query met daarin een subquery, wanneer ik deze probeer uit te laten voeren geeft hij een fout. Zonder de subquery geeft hij geen error. Iemand die toevallig ziet wat ik verkeerd doe.
[ code verwijderd ]
[..]
1 |
Klote zooiquote:Op zondag 12 september 2010 00:32 schreef Tuvai.net het volgende:
[..]
Je subquery retourneert meerdere resultaten. Maak anders gebruik van de IN() functie van MySQL:
[ code verwijderd ]
Klopt het ongeveer mijn idee met een Sessie handlerquote:ik kan je het principe uitleggen opdat ik het nog niet zelf heb gemaakt maar het gaat als volgt.
1 Een user logt in en alle gegevens die hij heeft worden in een table opgeslagen genaamd Table_Session.
hierin kun je heel simpel inzetten de user_id en de Time, en de Hashcode (zelfgemaakte code gebasseerd op tijd en een paar randomletters ) Randomgenerator niet al te moeilijk om te maken / vinden.
Sample van een row uit de Table_Session tabel.
User_id = 1;
Time = now() + 60 (<--voor in de query) (veld Date gebruiken als waarde)
Hashcode = 2342ahouihf324jnoi; (bvb)
2. Elke pagina die hij laad word de Sessie variabele tijd aangepast met de huidige tijd.
als de huidige tijd groter is dan die van in de tabel word hij uitgelogd. (row uit de Table_Session halen waar de tijd kleiner is dan de huidige tijd.
3. Daarnaast op de achtergrond draait er een query op elke pagina. Deze zoekt de vergelijkbare User_id met de Sessie tabel. als het niet overeen komt (Dmv de hashcode, en als de hashcode anders is of de hele row niet word gevonden in de tabel) word de gebruiker uitgelogd. Dit om injectie van $_SESSION variabele tegen te gaan.
4. Als de tijd verstreken is de 60 minuten dat hij ingelogd mag zijn is hij uitgelogd.
Tijd in de database met de Sessie vergelijken. Even kijken welke je moet vergelijken door deze site: de goeie variabelen te gebruiken. Ik weet niet hoe goed je bent met php.
Dit is een mogelijkheid die ik zou gebruiken om Sessie injectie tegen te gaan.
Als je de gegevens van die personen in een overzicht wilt hebben is het een kwestie van een leftjoin van de Sessie user_id op de user_id van de User table en alles erin te pakken en dan niet met een * maar Table.veldnaam ,table2.veldnaam.
met een simpele Count(*)op alle user_id in de table Sessie heb je alle mensen die zijn ingelogd als getal weergegeven op de website.
Dit zijn mijn inzichten dusver,
zal hem zelf ook eens moeten maken ^^
meteen maar op php vragen hoe ik tijden kan vergelijken .
Groeten,
Cablegunmaster.
Interessant stuk, ik vraag mij af of dit niet een redelijk intensieve methode is voor de DB.quote:Op zondag 12 september 2010 02:21 schreef cablegunmaster het volgende:
[..]
Klopt het ongeveer mijn idee met een Sessie handler?
Tips?
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 | function colorPalette($imageFile, $numColors, $granularity = 5) { $granularity = max(1, abs((int)$granularity)); $colors = array(); $size = @getimagesize($imageFile); if($size === false) { user_error("Unable to get image size data"); return false; } $img = @imagecreatefromjpeg($imageFile); if(!$img) { user_error("Unable to open image file"); return false; } for($x = 0; $x < $size[0]; $x += $granularity) { for($y = 0; $y < $size[1]; $y += $granularity) { $thisColor = imagecolorat($img, $x, $y); $rgb = imagecolorsforindex($img, $thisColor); $red = round(round(($rgb['red'] / 0x33)) * 0x33); $green = round(round(($rgb['green'] / 0x33)) * 0x33); $blue = round(round(($rgb['blue'] / 0x33)) * 0x33); $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue); if(array_key_exists($thisRGB, $colors)) { $colors[$thisRGB]++; } else { $colors[$thisRGB] = 1; } } } arsort($colors); return array_slice(array_keys($colors), 0, $numColors); } if ($handle = opendir('pics/')) { echo "Directory handle: $handle\n"; echo "Files:\n"; /* This is the correct way to loop over the directory. */ while (false !== ($file = readdir($handle))) { echo "$file\n"; echo getimagesize($file); echo colorPalette($handle.$file, 3); echo '<br />'; } closedir($handle); } ?> |
Ik krijg netjes output!quote:Op zondag 12 september 2010 17:17 schreef Treces het volgende:
Ik probeer de "hoofdkleur" uit foto's te halen, deze foto's staan in een map.
Uiteindelijk wil ik alle kleuren sorteren van wit naar zwart met de bestandsnaam erbij.
Ik kom alleen niet verder..
[ code verwijderd ]
Ik krijg de melding "Notice: Unable to get image size data in ...../color.php on line 9".
Iemand die het ziet?
1 |
JPEG en JPG is hetzelfdequote:Op zondag 12 september 2010 17:30 schreef Treces het volgende:
JPG of JPEG zou toch niet zoveel uit moeten maken?
En hoe installeer ik GD2 goed?
1 2 3 4 5 6 7 8 9 10 11 12 13 | GD Support enabled GD Version bundled (2.0.34 compatible) FreeType Support enabled FreeType Linkage with freetype FreeType Version 2.1.4 GIF Read Support enabled GIF Create Support enabled JPG Support enabled PNG Support enabled WBMP Support enabled XBM Support enabled |
De foto's die gesorteerd gaan worden zijn allemaal jpg-files.quote:Op zondag 12 september 2010 17:30 schreef Trollface. het volgende:
Je kunt in plaats van imagecreatefromjpg(...) beter imagecreatefromstring(file_get_contents(...)) doen, detecteert het type automatisch.
Done, zelfde melding.quote:Op zondag 12 september 2010 17:39 schreef wobbel het volgende:
[..]
En hoe roep je het script aan? De JPG met volledige pad? Probeer dat eens
Ja:quote:Op zondag 12 september 2010 17:17 schreef Treces het volgende:
Ik probeer de "hoofdkleur" uit foto's te halen, deze foto's staan in een map.
Uiteindelijk wil ik alle kleuren sorteren van wit naar zwart met de bestandsnaam erbij.
Ik kom alleen niet verder..
[ code verwijderd ]
Ik krijg de melding "Notice: Unable to get image size data in ...../color.php on line 9".
Iemand die het ziet?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $dir = "/home/wesleys/Pictures"; #$dir = "./"; if ($handle = opendir($dir)) { echo "Directory handle: $handle\n"; echo "Files:\n"; /* This is the correct way to loop over the directory. */ while (false !== ($file = readdir($handle))) { echo "$file\n"; $jpg="$dir/$file"; if (is_file($jpg) && is_readable($jpg) && preg_match('/\.je?pg$/i', $jpg)) { print_r(colorPalette($jpg, 3)); print_r(getimagesize($jpg)); } } closedir($handle); } ?> |
1 2 3 4 5 6 7 8 9 10 | $database = new Database(); $module = new Module(); $overview = $module->getTheoryWeekends($database->connection); $smarty->assign("overview", $overview); $database->disconnect(); ?> |
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 | class Module { public function getTheoryWeekends($connection) { $overview = array(); $query = " SELECT * FROM CT_theoryWeekends WHERE theoryWeekendID IN ( SELECT theoryWeekendID FROM CT_theoryWeekends WHERE endDate > NOW() AND status = \"enabled\") AND status = \"enabled\" ORDER BY theoryWeekendID DESC, startDate ASC "; $select = $connection->query($query)->fetchAll(PDO::FETCH_OBJ); foreach($select as $key => $value) { if(!array_key_exists($value->theoryWeekendID, $overview)) { $overview[$value->theoryWeekendID] = array($select[$key]); } else { $overview[$value->theoryWeekendID][] = $select[$key]; } } return $overview; } } ?> |
Wat dus verwijst naar $select = [...] in module.class.php. Iemand een idee hoe ik dit kan oplossen en waarom dit probleem zich voor doet?quote:Fatal error: Call to a member function fetchAll() on a non-object in C:\Users[...]\theorieweekenden\module.class.php on line 23
Dit is inderdaad het volledige module.class.php bestand -> de foutmelding verwijst naar $select = $connection->query($query)->fetchAll(PDO::FETCH_OBJ);quote:Op maandag 13 september 2010 13:13 schreef Light het volgende:
Is die weergave van module.class.php het volledige bestand? En klopt de regelnummering ook? (Is regel 23 waar in de foutmelding naar wordt verwezen ook regel 23 in de code hier?
En misschien heeft het met php-versies te maken. Welke versie draait er op je server? En welke in xampp?
Daar zeg je me nog eens watquote:Op maandag 13 september 2010 13:33 schreef Scorpie het volgende:
Is je testdata wel hetzelfde? Ik vermoed van niet namelijk.
1 2 3 | html_entity_decode($input,ENT_QUOTES,'UTF-8') ?> |
1 2 3 | mysql_real_escape_string(stripslashes(trim(htmlentities($input,ENT_QUOTES, 'UTF-8')))) ?> |
Nee, gewoon zoals het hoort in de database doen (met codes enzo, laat alleen mysql_real_escape_string erop) en dan als je alles uit de database haalt, het functionen en utf8ten enzovoorts...quote:Op vrijdag 17 september 2010 13:54 schreef Sitethief het volgende:
decoding
[ code verwijderd ]
encoding
[ code verwijderd ]
Ik vraag me al een paar dagen af of dit de ideale manier is om dingen in de database te zetten en er weer uit te halen........
Waarom zet je die data niet gewoon in je personen tabel?quote:Op vrijdag 17 september 2010 16:02 schreef Joooo-pi het volgende:
Ik ben nog steeds wat aan het klooien met mySQL en nu heb ik de volgende vraag:
[voorbeeld]
1 tabel met personen:
id
naam
2 tabel met data:
id
datum
persoon
aantal
[/voorbeeld]
De persoon in de 2e tabel moet natuurlijk gelinkt zijn aan tabel 1. W3schools.com heeft het over een Foreign key, maar in PHPmyAdmin zie ik dat nergens staan. Hoe moet ik te werk gaan?
Nou... als magic quotes aan staat wil je wel strip slashen....quote:Op vrijdag 17 september 2010 21:18 schreef Dalando het volgende:
[..]
Nee, gewoon zoals het hoort in de database doen (met codes enzo, laat alleen mysql_real_escape_string erop) en dan als je alles uit de database haalt, het functionen en utf8ten enzovoorts...
Ik denk dat als je gewoon lekker offline wilt werken je het beste 'USBwebserver' kunt downloaden. Gratis software, en extreem makkelijk. http://www.usbwebserver.net/nl/quote:Op vrijdag 17 september 2010 21:39 schreef NonameNogame het volgende:
hallo hallo hallo,
Ik zou graag php willen leren om scriptjes te kunnen schrijven en die dan kan verwerken in een site.
Het leren programmeren kan ik mezelf wel aanleren door tutorials e.d. Wat mij echter niet duidelijk is, is de gehele installatie van php icm Apache.
- Ik wil dus eerst Apache installeren en dan PHP. Maar als ik nu naar de apache site ga, krijg ik een shitload aan opties qua 'projects'. Nu is mijn vraag, welk apache-project moet ik downloaden voor mijn doeleinden? (doel: simpelweg leren van PHP-coderen en het testen van zelfgemaakte basic programmatjes. Ik wil nog niets online zetten).
- Als ik een apache project download, zoals bijv. Apache http, is mijn laptop dan direct te 'bezoeken' vanaf het internet? (ik ben nog een noob met servers en netwerken enzo).
Nogmaals, mijn doel voorlopig is om alleen PHP te leren voor OFFLINE-gebruik. Ik wil wel basic scriptjes kunnen maken en basic html-paginás waar ik die scriptjes in verwerk, en ik wil voorlopig (lees: eerste half jaar), alles graag offline-uittesten.
Wat moet ik installeren?
Maar dat hoort uit te staan bij een goede installatie. En in PHP6 kan het niet meer aan.quote:Op vrijdag 17 september 2010 21:41 schreef Swetsenegger het volgende:
[..]
Nou... als magic quotes aan staat wil je wel strip slashen....
Er zal zat shared hosting zijn met magic quotes aan. Maar goed dan zoquote:Op vrijdag 17 september 2010 21:49 schreef Light het volgende:
[..]
Maar dat hoort uit te staan bij een goede installatie. En in PHP6 kan het niet meer aan.
1 2 3 4 5 | if(get_magic_quotes_gpc()){ //strip_slashes } ?> |
Truequote:Op vrijdag 17 september 2010 21:56 schreef Swetsenegger het volgende:
[..]
Er zal zat shared hosting zijn met magic quotes aan. Maar goed dan zo
[ code verwijderd ]
Daar had roonaan een leuke functie voor geschreven:quote:Op vrijdag 17 september 2010 22:19 schreef Light het volgende:
[..]
TrueZolang je er maar rekening mee houdt dat $_GET en $_POST (en de andere superglobals) ook arrays als elementen kunnen hebben en dat array_walk_recursive pas sinds PHP5 bestaat.
1 2 3 4 5 6 7 | function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } ?> |
Dit is beetje simpel voorbeeld, maar er is dan nog een tabel met een rijtje constanten. In de data tabel combineren dan persoon en die andere constante met gegevens op een bepaalde datum...quote:Op vrijdag 17 september 2010 21:20 schreef boem-dikkie het volgende:
[..]
Waarom zet je die data niet gewoon in je personen tabel?
1 |
1 2 3 | ini_set('memory_limit', '12M'); ?> |
Okay, opgelost door een php.ini met memory_limit = 12M in de desbetreffende map te flikkeren.quote:Op zaterdag 18 september 2010 01:55 schreef Crutch het volgende:
AAAAARGH!!!!![]()
Ik lees de volgende foutmelding in een log file:
[ code verwijderd ]
En dat komt door deze regel in een PHP-bestand:
[ code verwijderd ]
Die klopt toch gewoon?
Of loopt mijn hosting provider nu te kutten?
En de aanhalingstekens waren fout.quote:Op zaterdag 18 september 2010 02:12 schreef Crutch het volgende:
[..]
Okay, opgelost door een php.ini met memory_limit = 12M in de desbetreffende map te flikkeren.
Nou. Ik hoop dat ik je dit duidelijk kan uitleggen.quote:Op vrijdag 17 september 2010 22:30 schreef Joooo-pi het volgende:
[..]
Dit is beetje simpel voorbeeld, maar er is dan nog een tabel met een rijtje constanten. In de data tabel combineren dan persoon en die andere constante met gegevens op een bepaalde datum...
Wat is het verschil in werking tussen zo'n verwijzende sleutel als ik hem uitleg en een foreign keyquote:Op zaterdag 18 september 2010 11:19 schreef GlowMouse het volgende:
Dan heb je nog geen foreign key. Alleen InnoDB ondersteunt foreign keys, en je kunt ze niet aanmaken door in phpmyadmin te klikken maar je moet zelf de query ervoor typen.
http://dev.mysql.com/doc/(...)key-constraints.html
Dat er een check plaatsvindt of categorie_id echt bestaat wanneer je een rij invoegt/aanpast.quote:Op zaterdag 18 september 2010 11:20 schreef boem-dikkie het volgende:
[..]
Wat is het verschil in werking tussen zo'n verwijzende sleutel als ik hem uitleg en een foreign key?
Hmm, misschien denk ik te moeilijk en neem ik het begrip "relationele database" te serieus...quote:Op zaterdag 18 september 2010 11:21 schreef GlowMouse het volgende:
[..]
Dat er een check plaatsvindt of categorie_id echt bestaat wanneer je een rij invoegt/aanpast.
Kan wel gewoon in PHPMyAdmin hoor. Als je een InnoDB tabel hebt verschijnt er op de tabel-structuur pagina een linkje 'Relatieoverzicht'.quote:Op zaterdag 18 september 2010 11:19 schreef GlowMouse het volgende:
Dan heb je nog geen foreign key. Alleen InnoDB ondersteunt foreign keys, en je kunt ze niet aanmaken door in phpmyadmin te klikken maar je moet zelf de query ervoor typen.
http://dev.mysql.com/doc/(...)key-constraints.html
Oke, e.e.a. moet dus wel gelinkt worden in de database. Hoe kan ik dit het beste opbouwen?quote:Op zaterdag 18 september 2010 12:23 schreef Tuvai.net het volgende:
Het idee van relationele databases is dat je de logica en relaties van objecten/entiteiten op databaseniveau neerlegt. Je kunt zeker in je PHP code (op applicatieniveau) allemaal checks gaan uitvoeren, maar dat is veel te omslachtig. Als je foreign keys legt dan vertel je je database eigenlijk dat TabelX - VeldX verwijst naar TabelY - VeldX. Sowieso is het veel beter voor de integriteit van je gegevens, als je met een relationeel databasemodel werkt. Je kunt in een niet-relationele database bijvoorbeeld een record invoeren, met een veld dat verwijst naar een record dat niet eens bestaat, hetgeen weer resulteert in het schrijven van allerlei overbodige code m.b.t. het controleren en dergelijke.
Je kunt hier gewoon PHPMyAdmin voor gebruiken.quote:Op zaterdag 18 september 2010 12:40 schreef Joooo-pi het volgende:
[..]
Oke, e.e.a. moet dus wel gelinkt worden in de database. Hoe kan ik dit het beste opbouwen?
(ps. ik werk dus met een LAMP servertje)
Zoals je zelf al zegt dat doe je in .htaccess, heeft niets met PHP te maken.quote:Op zondag 19 september 2010 11:16 schreef boem-dikkie het volgende:
Weet iemand trouwens hoe ik gemakkelijk mijn URL kan veranderen in iets anders?
Ik heb nu al wel met een .htaccess bestandje dat hij alle extensies weghaalt dus dat je gewoon website.com/pagina/ krijgt..
Alleen ik heb dus nu op profiel pagina's website.com/lidprofiel.php?id=59.
Zou het liefst gewoon website.com/naamvandepersoon/ of website.com/lidprofiel/59/ willen hebben.
1 2 3 | RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?page=$1 [QSA] |
mySQL heeft volgens mij een ingebouwde timestamp functie die bijgewerkt wordt zodra er data in dat record verandert.quote:Op maandag 20 september 2010 09:25 schreef Chandler het volgende:
Weet iemand ook een manier om uit te vinden of een mysql tabel is geupdated? zodat dat er een veld is met een timestamp/datum/oid.
Eventueel te achterhalen op welke datum/tijd deze tabel voor't laatst is geupdated? dit ivm caching er van?
1 |
1 |
Wat bedoel je precies met "het hoogste aantal records per postcodegebied"?quote:Op woensdag 22 september 2010 20:56 schreef Estolan het volgende:
Nu wel
Een klant van ons wil een top10 selectie ontvangen van het hoogste aantal records per postcode gebied ( bv postcode 1000-1099 ).
Het zal wellicht makkelijker kunnen, maar dit is het eerste waar ik op kwam...quote:Op woensdag 22 september 2010 15:33 schreef Chandler het volgende:
Ik had gehoopt dat dit gemakkelijker te achterhalen was zonder speciaal extra veld maar helaas.
Andere vraag.
Stel ik heb een array
$array = array(1 => "test", 2 => "test1", 3 => "test2");
nu verwijder ik $array[2] en heb dus dan nog 1 & 3 over, hoe kan ik simpel zorgen dat 3 geen 3 blijft maar 2 wordt?
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 | class dataLoop { private $array = array(); /* * @output array $newArray * @param array $array * @param string $key * @short In $array wordt de key $key (+ value) verwijderd en * de overige arrays worden naar voren geschoven. */ public function deleteKey($array, $key) { foreach($array as $aKey => $aValue) { if($key != $aKey && $aKey < $key) { $newArray[$aKey] = $aValue; } elseif($key != $aKey && $aKey > $key) { $newArray[$aKey-1] = $aValue; } } return $newArray; } } $array = array(1 => "test", 2 => "test1", 3 => "test2"); print_r($array); echo("<br />"); $dataloop = new dataLoop; print_r($dataloop->deleteKey($array, 1)); ?> |
1 2 3 4 | Array ( [1] => test [2] => test1 [3] => test2 ) Array ( [1] => test1 [2] => test2 ) ?> |
Leuk, maar unset gevolgd door array_values is korterquote:Op woensdag 22 september 2010 22:29 schreef ouyevoli het volgende:
[..]
Het zal wellicht makkelijker kunnen, maar dit is het eerste waar ik op kwam...
[ code verwijderd ]
De output:
[ code verwijderd ]
geen idee, ik heb de database niet in elkaar gezetquote:
Volgens mij is dit niet helemaal wat ik zoekquote:Op woensdag 22 september 2010 22:29 schreef ouyevoli het volgende:
[..]
Het zal wellicht makkelijker kunnen, maar dit is het eerste waar ik op kwam...
[ code verwijderd ]
De output:
[ code verwijderd ]
1 2 3 4 5 | $arrData = array('foo', 'bar', 'baz'); unset($arrData[1]); $arrData = array_values($arrData); ?> |
Na array_values() begint je array met index 0quote:Op woensdag 22 september 2010 22:31 schreef GlowMouse het volgende:
[..]
Leuk, maar unset gevolgd door array_values is korter
quote:Op donderdag 23 september 2010 08:31 schreef Chandler het volgende:
Grappig, ik dacht dat daar wel een functie voor was in php
Maar tnx ppl, ik had zelf ook al een kleine functie voor geschreven... :
quote:
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |