Niemand?quote:Op vrijdag 4 september 2009 16:37 schreef Chandler het volgende:
Ik heb weer een breinbreaker
Stel je voor ik heb een tabel voor het opslaan van hits, ips (het aantal unieke users), max online en de datum
nu doe ik voor deze query een ON DUPLICATE KEY UPDATE met de velden hits en ips maar wil ik ook graag gebruiken om te checken of de waarde die ik wil updaten groter of kleiner is, als deze groter is dan door te voeren en indien deze kleiner is de huidige waarde te laten staan! (voor veld max = max aantal online tegelijk die dag)
Weet iemand hoe ik dit kan realiseren?
ik schreef en begreep het zelf dus hopelijk jullie ook
1 2 3 | $item = Page::item(2); ?> |
1 2 3 | $item = Page->item(2); ?> |
Omdat goed documenteren niet in het eisenpakket was opgenomen.quote:Op maandag 7 september 2009 21:37 schreef Swetsenegger het volgende:
Waarom zijn al die betaalsystemen kut gedocumenteerd?
Ik snap er geen kut meer van. Inhoud van $reply:quote:Op zondag 6 september 2009 21:59 schreef Light het volgende:
Kun je niets met de xml-functies in php(5)?
En anders is het ook met 1 preg_match() op te lossen:
[ code verwijderd ]
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 | <status result="ok"> <ewallet> <id>45491</id> <status>completed</status> <created>20090908123603</created> <modified/> </ewallet> <customer> <currency>EUR</currency> <amount>1595</amount> <exchange_rate>1</exchange_rate> <firstname>Naam</firstname> <lastname>Naam</lastname> <city>Plaats</city> <state/> <country>NL</country> <countryname>Netherlands</countryname> </customer> <transaction> <id>90</id> <currency>EUR</currency> <amount>1595</amount> <description>Bestelling.</description> <var1/> <var2/> <var3/> <items><br /><table style="border-collapse:collapse;width:100%;text-align:center"><tr style="color:black;font-size:9pt;"><td style="border-style:solid;border-width:1px 0 1px 1px;border-color:rgb(160,166,176)">Aantal</td><td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Artikelcode</td><td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Artikel</td><td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Kleur</td><td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Maat</td><td style="border-style:solid;border-width:1px 0;border-color:rgb(160,166,176)">Prijs</td></tr><tr style="background-color:white;font-size:11pt;"> <td style="width:45px;">1</td> <td style="width:75px;">t-001</td> <td style="width:250px;">Mexx - Top</td> <td style="margin:5px;width:10px;background-color:#000000"></td> <td style="width:250px;">large</td> <td>EUR. 15,95</td> </tr></table><br /><table style="width:100%;border:solid 1px rgb(160,166,176);text-align:left;"><tr><td style="color:black;font-size:11pt;">Prijs:</td><td style="width:600px;text-align:right;font-size:14pt;color:black;">EUR. 15,95</td></tr></table> </items> </transaction> </status> |
1 2 3 4 5 | $id = array(); preg_match('/\<transaction\>.*\<id\>(.*)\<\/id\>.*\<\/transaction\>/U', $reply, $id); print_r($id); ?> |
1 |
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 | <status result="ok"> <ewallet> <id>45438</id> <status>completed</status> <created>20090908101011</created> <modified/> </ewallet> <customer> <currency>EUR</currency> <amount>1999</amount> <exchange_rate>1</exchange_rate> <firstname>Naam</firstname> <lastname>Naam</lastname> <city>plaats</city> <state/> <country>NL</country> <countryname>Netherlands</countryname> </customer> <transaction> <id>82</id> <currency>EUR</currency> <amount>1999</amount> <description>Bestelling .</description> <var1/> <var2/> <var3/> <items/> </transaction> </status> |
1 2 3 4 5 | ( [0] => <transaction><id>82</id><currency>EUR</currency><amount>1999</amount><description>Bestelling 82 bij Fashion in the City. U kunt de status van uw bestelling bekijken als u inlogged op onze website.</description><var1/><var2/><var3/><items/></transaction> [1] => 82 ) |
1 2 3 4 5 6 7 8 9 10 11 12 | function toggle(obj) { var el = document.getElementById(obj); el.checked= (el.checked != true ? true : false ); } </script> </head> <body> <table> <tr onclick="toggle('checkbox');"><td>------------------langerij--------------</td><td><input type="checkbox" id="checkbox" /></td></tr> </table> </body> |
1 |
1 |
hoe wil je dan toggelen?quote:Op dinsdag 8 september 2009 15:31 schreef ralfie het volgende:
[ code verwijderd ]
Waarom niet gewoon
[ code verwijderd ]
?
Iemand een idee waarom de pragmatch over zijn nek gaat in de eerste situatie?quote:Op dinsdag 8 september 2009 12:19 schreef Swetsenegger het volgende:
[..]
Ik snap er geen kut meer van. Inhoud van $reply:
[ code verwijderd ]
[ code verwijderd ]
[ code verwijderd ]
Is de inhoud van $reply DIT (dus zonder de html in <items>):
[ code verwijderd ]
[ code verwijderd ]
Ja later besefte ik me dat dat met een true/false setting natuurlijk kan.quote:Op woensdag 9 september 2009 10:21 schreef ralfie het volgende:
[..]
beide stukjes code doen precies hetzelfde
quote:Op dinsdag 8 september 2009 16:59 schreef Swetsenegger het volgende:
[..]
Iemand een idee waarom de pragmatch over zijn nek gaat in de eerste situatie?
1 2 3 | preg_match('/\<transaction\>.*\<id\>(.*)\<\/id\>.*\<\/transaction\>/Us', $reply, $match); print_r($match[1]); |
1 |
1 2 3 4 5 | $match preg_match('/(\d+)-\d/', $string, $match); print_r($match); ?> |
Tjah kan ook moet alleen dan even preg_match gaan programmeren aangezien ik niet php gebruik maar een andere taal. Iig bedankt. Heb het nu iig tijdelijk opgelost met 2x ereg_replacequote:Op vrijdag 11 september 2009 11:10 schreef slacker_nl het volgende:
Doe gewoon 't gewoon zo:
[ code verwijderd ]
Van die reseveringen.quote:Op zaterdag 5 september 2009 11:13 schreef Sjoe538 het volgende:
[..]
Wat voor historie zou je bij willen houden?
De functiequote:Fatal error: Uncaught exception 'DOMException' with message 'Wrong Document Error'
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 | public function addElement($p_aElement) { if($p_aElement['appendTo'] != FALSE) { $aAppendTo = $this->_XML->getElementsByTagName($p_aElement['appendTo']); } // Remove the first element ([appendTo])of the array. array_shift($p_aElement); $objTestElement = $this->createElement('tests'); foreach($p_aElement as $sKey => $sValue) { $objElement = $this->createElement($sKey); $objElement->appendChild($this->createTextNode($sValue)); $objTestElement->appendChild($objElement); } if(isset($aAppendTo)) { foreach($aAppendTo as $objAppendTo) { $objAppendTo->appendChild($objTestElement); } } else { // mag aan de root gezet worden } $this->_XML->saveXML(); return TRUE; } ?> |
hartelijk bedankt =)quote:Op dinsdag 15 september 2009 14:59 schreef GlowMouse het volgende:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
waar komt de fout naar voren? Ik heb 0.0 ervaring met xml en php, maar ik zou zeggen dat je xml file niet valide is ofzo.quote:Op dinsdag 15 september 2009 15:12 schreef ursel het volgende:
Iemand nog antwoord op mijn vraag..
Ik heb al in de manual gekeken, maar kan niet echt een antwoord vinden. Het resultaat van de eerste query is een project met de titel: "Een typologie van PPS in het LNV domein". Het is dus wel een los woord, maar de fulltext search vindt 'm nietquote:Op woensdag 16 september 2009 10:50 schreef GlowMouse het volgende:
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
Maar ik gok zomaar dat pps geen los woord is.
Deze tabel bestaat uit 73 rijenquote:
ah, dat verklaart een hoop weet je misschien hoe ik dat aan kan passen, als ik niet bij de config van MySQL kan?quote:Op woensdag 16 september 2009 10:57 schreef GlowMouse het volgende:
http://dev.mysql.com/doc/(...)atural-language.html
"Some words are ignored in full-text searches"
Omdat 't een regex vraag wasquote:Op vrijdag 11 september 2009 12:29 schreef slacker_nl het volgende:
Wat doe je dan in het php topic??
Zo maar opgelost:quote:Op woensdag 16 september 2009 10:59 schreef daReaper het volgende:
[..]
ah, dat verklaart een hoop weet je misschien hoe ik dat aan kan passen, als ik niet bij de config van MySQL kan?
[edit]Ik zie na wat gegoogle dat dit dus niet kan... Behoorlijk waardeloos dus
Dat vermoedde ik inderdaad, maar het is niet een heel erg grote database, dus ik denk niet dat dit problemen op gaat leveren.quote:Op woensdag 16 september 2009 12:40 schreef GlowMouse het volgende:
titel LIKE '% pps %' werkte niet? De performance penalty van dit soort constructies wil je niet weten
1 2 3 4 5 6 7 8 9 10 11 | $this->html = file_get_contents($this->url); $this->dom = new DomDocument(); @$this->dom->loadHTML($this->html); $this->xpath = new DomXpath($this->dom); /*Deze functie haalt de meta van een pagina op*/ $this->metaKeywords = $this->xpath->query('/html/head/meta'); return $this->metaKeywords->item(0)->nodeValue; ?> |
Tof dit werktequote:Op donderdag 17 september 2009 11:44 schreef GlowMouse het volgende:
een primary key of unique toevoegen op (gebruikerid,pakketid). Dat kan gewoon onder Structure, Details.
MyISAM kan niet zoeken naar substrings < 4 karakters. Simpel. Met de stopwoorden die er in zitten heeft het niks te maken, daar komt pps niet in voor.quote:Op woensdag 16 september 2009 10:49 schreef daReaper het volgende:
Ik kom er even niet uit met een full text search.
Ik heb een tabel met de volgende kolommen:
id
titel
omschrijving
status
datum
Als ik nu de query "SELECT id FROM projecten WHERE titel LIKE '%pps%' OR omschrijving LIKE '%pps%'; uitvoer, krijg ik netjes 1 resultaat terug.
Ik heb een fulltext index op de kolommen "titel" en "omschrijving" die de titel "titel" draagt.
Als ik echter de query "SELECT id FROM projecten WHERE MATCH (titel, omschrijving) AGAINST ('pps'); uitvoer, krijg ik géén resultaten terug (maar ook geen foutmelding).
Wat kan hier aan de hand zijn?
1 2 3 4 5 6 7 8 9 10 11 12 | ----------------------- 1 | 1 | 1251909627 2 | 2 | 1251909727 3 | 1 | 1251909827 4 | 2 | 1251909927 5 | 1 | 1251910027 6 | 2 | 1252773627 7 | 1 | 1252773627 8 | 2 | 1252773627 9 | 1 | 1253205628 10 | 2 | 1253205628 |
1 2 3 4 5 6 | from_unixtime(datestart,"%Y-%v") AS weekInYear, count(*) as numberOfRegistrations FROM Listitems GROUP BY weekInYear ORDER BY datestart |
1 2 3 4 | 2009-36 | 5 2009-37 | 3 2009-38 | 2 |
1 2 3 4 | 2009-36 | 3 | 2 | 5 2009-37 | 1 | 2 | 3 2009-38 | 1 | 1 | 2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | `id` int(11) NOT NULL auto_increment, `soort` int(11) NOT NULL, `dateStart` int(11) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; INSERT INTO `Listitems` VALUES ('1', '1', '1251909627'); INSERT INTO `Listitems` VALUES ('2', '2', '1251909727'); INSERT INTO `Listitems` VALUES ('3', '1', '1251909827'); INSERT INTO `Listitems` VALUES ('4', '2', '1251909927'); INSERT INTO `Listitems` VALUES ('5', '1', '1251910027'); INSERT INTO `Listitems` VALUES ('6', '2', '1252773627'); INSERT INTO `Listitems` VALUES ('7', '1', '1252773627'); INSERT INTO `Listitems` VALUES ('8', '2', '1252773627'); INSERT INTO `Listitems` VALUES ('9', '1', '1253205628'); INSERT INTO `Listitems` VALUES ('10', '2', '1253205628'); |
quote:Op donderdag 17 september 2009 19:07 schreef GlowMouse het volgende:
Het makkelijkste en meest logische is om GROUP BY week,group te gebruiken en dan je applicatie de rest te laten doen.
1 2 3 4 5 6 7 | from_unixtime(datestart,"%Y-%v") AS weekInYear, soort, count(*) as numberOfRegistrations FROM Listitems GROUP BY weekInYear , soort ORDER BY datestart |
1 2 3 4 5 6 | 2009-36 2 2 2009-37 2 2 2009-37 1 1 2009-38 1 1 2009-38 2 1 |
quote:Op vrijdag 18 september 2009 13:43 schreef pc-fr34k het volgende:
.
Ik zit met een probleempje waar ik niet uit kom. Ik heb 2 arrays:
Vandaag: Array ( [1] => 2 [2] => 1 [3] => 1 [4] => 1 [5] => 2 [6] => 10 [7] => 1 [999] => 1 )
Gisteren: Array ( [1] => 5 [2] => 0 [6] => 3 )
Hier is de key het ID van een linkpartner en de value is het aantal hits op die dag.
Nu wil ik de som van vandaag en gisteren in 1 array. Hoe zorg ik dat overal waar de key gelijk is de 2 waardes bij elkaar opgeteld worden?
Bvd
1 2 3 4 | foreach(array_keys($array1) as $key) { $totaal[$key] = $array1[$key] + $array2[$key]; } |
Als $array2[$a] niet bestaat, krijg je minimaal een notice. Die kun je onderdrukken, maar 't is niet netjes. En je moet er nog rekening mee houden dat een key wel in $array2 kan voorkomen en niet in $array1 zit.quote:Op vrijdag 18 september 2009 13:55 schreef daReaper het volgende:
[..]
[ code verwijderd ]
Niet getest, laat maar weten of het werkt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $total = array(); foreach($array1 as $key => $value) { if(isset($array2[$key]) { $total[$key] = $value + $array2[$key]; unset($array2[$key]); } else { $total[$key] = $value; } } foreach($array2 as $key => $value) { // Alles wat we nog gemist hebben $total[$key] = $value; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | pr.[product_naam], logp.[logpers_datum], MAX(l.[log_uitgave]), p.[persoon_naam] FROM [product] AS pr LEFT JOIN [log] AS l ON l.[product_id] = pr.[product_id] LEFT JOIN [log_persoon] AS lp ON lp.[log_id] = l.[log_id] LEFT JOIN [persoon] AS p ON p.[persoon_id] = logp.[persoon_id] WHERE logp.[persoon_rol] = '6' GROUP BY pr.[product_id], pr.[product_naam], logp.[logpers_datum], p.[persoon_naam], l.[log_uitgave] ORDER BY l.[log_uitgave] DESC |
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 | product_id product_naam 1 Stofzuiger 2 Appelsap 3 Wijn 4 ABC Log log_id product_id log_uitgave 1 1 1 2 2 1 3 3 1 4 3 2 5 4 1 Log_persoon log_id persoon_id persoon_rol log_datum 1 1 2 2009-08-09 1 2 3 2009-08-12 1 4 6 2009-08-13 2 2 1 2009-08-17 2 1 6 2009-08-18 3 3 4 2009-08-19 3 3 5 2009-08-22 3 1 6 2009-08-28 4 2 6 2009-08-29 5 4 6 2009-08-30 Persoon persoon_id persoon_naam 1 Jan 2 Piet 3 Klaas 4 Kees Het resultaat wat ik dan wil is... ---------------------------------------- 1. stofzuiger 2009-08-13 1 Jan 2. Appelsap 2009-08-18 1 Jan 3. Wijn 2009-08-29 2 Piet 4. ABC 2009-08-30 1 Kees |
wat is je resultaat nu ? en waarom mis je een orderby artikel ID? en wat is er met je where aan de hand =)? waarom alleen persoon 6?quote:Op maandag 21 september 2009 12:59 schreef ReWout het volgende:
Ik heb wat moeite met 't ophalen van data...
Ik heb 4 tabellen...
- product (bestaat uit info product)
- log (bestaat uit info van veranderingen product o.a. versie nummer & product id)
- log_persoon (bestaat uit log_id & persoon_id & rol_id (een getal welke de "rol" voorstelt van de persoon))
- persoon (bestaat uit info over persoon)
Wat ik nu wil is dat ik van alle producten de info selecteer met daarbij de laatste log gegevens en de daarbij horende persoons gegeves...
Wat ik heb
[ code verwijderd ]
[ code verwijderd ]
WHERE artikel IN (800, 200, 300)quote:Op maandag 21 september 2009 12:39 schreef cablegunmaster het volgende:
vraagje.
ik heb een $_SESSION en daarin zitten meerdere nrs bvb 800,200,300
dit zijn nummers die ik met behulp van een database in weergave wil weergeven.
$sql = select * from artikelen
where artikel = '".$_SESSION['artikelid']."' ";
of moet er perse een for while loop? of een for loop bij?
met een extra $I variabele of iets dergelijks.
(meerdere waardes in 1 where statement)
Even voor de zekerheid, hebben we het hier over MySQL? En zo nee, over welke SQL-smaak dan wel?quote:Op maandag 21 september 2009 12:59 schreef ReWout het volgende:
Ik heb wat moeite met 't ophalen van data...
Ik heb 4 tabellen...
- product (bestaat uit info product)
- log (bestaat uit info van veranderingen product o.a. versie nummer & product id)
- log_persoon (bestaat uit log_id & persoon_id & rol_id (een getal welke de "rol" voorstelt van de persoon))
- persoon (bestaat uit info over persoon)
Wat ik nu wil is dat ik van alle producten de info selecteer met daarbij de laatste log gegevens en de daarbij horende persoons gegeves...
Wat ik heb
[ code verwijderd ]
[ code verwijderd ]
Nah MSSQL.quote:Op maandag 21 september 2009 13:58 schreef Light het volgende:
[..]
Even voor de zekerheid, hebben we het hier over MySQL? En zo nee, over welke SQL-smaak dan wel?
Dan staat er <? include("/http://www.website.nl/pagina.html")?> ;-)quote:Op dinsdag 22 september 2009 09:45 schreef Swetsenegger het volgende:
als je dat 'inc' voor die http weghaalt?
Het leek me dat DAT wel duidelijk was.quote:Op dinsdag 22 september 2009 10:04 schreef Darkomen het volgende:
[..]
Dan staat er <? include("/http://www.website.nl/pagina.html")?> ;-)
Dus 'inc/' weghalen.
Erhm, sorry, die inc had ook niet in die post moeten staan .quote:Op dinsdag 22 september 2009 09:45 schreef Swetsenegger het volgende:
als je dat 'inc' voor die http weghaalt?
Had ik al gezien idd. Krijg het wel voor elkaar dat de pagina geladen wordt, maar dan staan er allemaal getallen voor.quote:Op dinsdag 22 september 2009 10:04 schreef Darkomen het volgende:
[..]
Dan staat er <? include("/http://www.website.nl/pagina.html")?> ;-)
Dus 'inc/' weghalen.
Of
http://nl3.php.net/manual/en/function.file-get-contents.php
Geen idee.. server van klant. Als dit aan staat; werkt het dan wel?quote:Op dinsdag 22 september 2009 10:27 schreef Light het volgende:
En staat allow_url_fopen aan of uit? (zie phpinfo() )
Als je er bestanden op kunt zetten, kun je er ook een php-bestand opzetten met alleen maarquote:Op dinsdag 22 september 2009 10:36 schreef cosmick het volgende:
[..]
Geen idee.. server van klant. Als dit aan staat; werkt het dan wel?
1 |
Kun je dat iets meer toelichten please?quote:Op dinsdag 22 september 2009 12:14 schreef Light het volgende:
[quote]Op dinsdag 22 september 2009 12:14 schreef Light het volgende:
[..]
Als je er bestanden op kunt zetten, kun je er ook een php-bestand opzetten met alleen maar
[ code verwijderd ]
. Die aanroepen via de browser en je krijgt een hoop info.
Als allow_url_fopen aan staat, moet het volgens mij wel werken.
1 |
1 2 3 | $regex = '!' . preg_quote('<h3>') . '(.*?)+' . preg_quote('</h3><div>') . '(.*?)' . preg_quote('</div>') . '!ism'; ?> |
1 2 | <h3>content</h3><div>content</div> |
1 |
Ik snap niet helemaal wat je wilt doen, maarquote:Op woensdag 23 september 2009 10:23 schreef Chandler het volgende:
Kleine vraag m.b.t regex.
Ik wil graag data uit html filteren maar krijg het niet helemaal voor elkaar.
De data die ik wil filteren ziet er zo uit
[ code verwijderd ]
voorbeeld qua regex die werkt
[ code verwijderd ]
ik wil dus alleen bovenstaande uitlezen en bv niet als resultaat het volgende krijgen
[ code verwijderd ]
oftewel ik moet breaken tot </h3> echter krijg ik dit niet voor elkaar met
[ code verwijderd ]
weet iemand wat ik fout doe?
1 2 3 | preg_match("#<h3>(.*?)</h3><div>(.*?)</div>#", $html, $matches); var_dump($matches); |
Het is overigens gelukt met deze code:quote:Op dinsdag 22 september 2009 09:43 schreef cosmick het volgende:
Even een include-vraag .
In sites gebruik ik altijd includes voor headers, footers etc. op deze manier: <? include("inc/scripts.php")?> .
Werkt natuurlijjk prima. Maar wat als ik nu een externe pagina wil includen? Dacht met mijn domme hoofd dat dat simpel zo zou gaan maar helaas:
<? include("ihttp://www.website.nl/pagina.html")?>
Iemand een oplossing?
1 2 3 4 5 6 7 8 9 10 11 | $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.bepaaldewebsite.nl/pagina-text.html"); curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7'); curl_exec($ch); curl_close($ch); ?> |
Dat heb ik geprobeerd maar op een of andere manier werkt het niet en krijg ik toch meer resultaten dan wat ik zoekquote:Op woensdag 23 september 2009 11:27 schreef Xcalibur het volgende:
Dan moet je hem niet-greedy maken.
Ik weet alleen niet uit m'n hoofd welke modifier dat is, maar dat kan je wel googlen
Thnx!quote:
Die is wel leuk ja thanks voor de linkquote:Op woensdag 23 september 2009 21:40 schreef marq het volgende:Een stukje MVC voor de puristen, heel erg elegant!
http://code.google.com/p/barebonesmvc-php/
1 |
quote:Op donderdag 24 september 2009 14:58 schreef mark_1980 het volgende:
Ik kan een aardig stukje php-en, maar reguliere expressies zijn echt helemaal nieuw voor me, maar nu heb ik het toch echt een keer nodig!!
In een pagina die is opgeslagen mijn database staat een tag;
[ code verwijderd ]
Nu wil ik allereerst er voor zorgen dat de [album xxxxxxxx] tag wordt vervangen voor het uitvoeren van een functie, die als argumenten de waarden uit album en style mee krijgen.
Hoe kan ik dit het beste aanpakken?
1 2 3 4 5 6 | preg_match("/album=\"?(.+?)\"?/", $s, $match); $album = $match[1]; unset($match); preg_match("/style=\"?(.+?)\"?/", $s, $match); $style = $match[1]; |
Dat zou ook kunnen.quote:Op donderdag 24 september 2009 17:57 schreef pc-fr34k het volgende:
Is het niet handiger om kleuren aan cijfers te verbinden zodat je maar 1 keer de kleuren hoeft toe te voegen en de parser het uiteindelijk omzet naar de kleur in de goede taal?
gewoon normaliseren, als een enum niet kan omdat er meerdere combinaties mogelijk zijn gebruik je gewoon een losse koppeltabel waarnaar toe je gaat verwijzen. Meertaligheid kun je dan middels gettext implementeren. Let op dat PHP's gettext extensie niet thread-safe is, dus je bent bijna verplicht apache_mpm_prefork te gebruiken.quote:Op donderdag 24 september 2009 16:07 schreef wobbel het volgende:
Ik heb een tabel SHOP_Producten met daarin al mijn producten. Nu wil ik voor elk product ook nog een kleur kunnen toevoegen. Nu kan ik een varchar aanmaken met daarin seperators, dus: "zwart|rood|grijs".
Is dit een goede oplossing? Het is een bestaand meertalig shopsysteem waarvan ik het niet zo 123 een tabelletje toevoeg met meerdere uitvoeringen.
Is deze gedachtengang goed, of moet ik het toch anders aanpakken?
Dank je wel, maar het lijkt nog niet te werken. Als ik $style en $album echo, krijg ik niet de resultaten die ik zou willen. Namelijk:quote:
Het is de bedoeling dat de code wordt opgeslagen in een db binnen de content.quote:
1 2 3 | [album album="12" style="modern"] <p>Lorum Ipsum</p> |
1 2 3 | showAlbum($album, $style); <p>Lorum Ipsum</p> |
Bekijk je html-output.quote:Op vrijdag 25 september 2009 13:19 schreef cablegunmaster het volgende:
probleempje :
[ code verwijderd ]
ik krijg alleen het eerste woord terug "automatische " of acceptgiro hoe los ik dit op?
zaten eerst dubbele quotes omheen.
Je gebruikt zowel HTML als php binnen je <?php ... ?>quote:Op vrijdag 25 september 2009 13:19 schreef cablegunmaster het volgende:
probleempje :
[ code verwijderd ]
ik krijg alleen het eerste woord terug "automatische " of acceptgiro hoe los ik dit op?
zaten eerst dubbele quotes omheen.
quote:Op vrijdag 25 september 2009 13:19 schreef cablegunmaster het volgende:
probleempje :
[ code verwijderd ]
ik krijg alleen het eerste woord terug "automatische " of acceptgiro hoe los ik dit op?
zaten eerst dubbele quotes omheen.
opmaak fout van fok.nl de eerste php weg denken en de laatste ?> afsluiting ook.quote:Op vrijdag 25 september 2009 13:33 schreef ursel het volgende:
[..]
Je gebruikt zowel HTML als php binnen je <?php ... ?>
Dan zit je if(isset) toch nog steeds binnen je <option>quote:Op vrijdag 25 september 2009 13:39 schreef cablegunmaster het volgende:
[..]
[..]
opmaak fout van fok.nl de eerste php weg denken en de laatste ?> afsluiting ook.
fout gekopieerdquote:Op vrijdag 25 september 2009 13:48 schreef ursel het volgende:
[..]
Dan zit je if(isset) toch nog steeds binnen je <option>
1 2 3 | if(isset($_POST['betaling'])){ echo "<option selected value=".$_POST['betaling'].">".$_POST['betaling']."</option>"; } ?> |
1 2 3 4 5 6 7 8 9 10 | while ($row = mysql_fetch_assoc($queryget)) { $id = $row['id']; $name = $row['name']; $email = $row['email']; $message = $row['message']; $date = $row['date']; $time = $row['time']; |
quote:
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 | echo "<h1>scrhijf in het gastenboek!</h1>"; //connect $connect = mysql_connect('Localhost','*****_******','*******') or die("User error"); //select db mysql_select_db( 'rdonkers_gastenboek' or die("select error")); //get query $queryget = mysql_query( 'SELECT * FROM gastenboek' or die("query error")); while ($row = mysql_fetch_assoc($queryget)) { $id = $row['id']; $name = $row['name']; $email = $row['email']; $message = $row['message']; $date = $row['date']; $time = $row['time']; //display echo " name: $name <br> "; } echo '<hr>'; echo " <form action='gastenboek.php' method='post'> Username:<input type='text' name='username' maxlength='20'><br> Email:<input type='text' name='email' maxlength='50'><br> Message<textarea cols='40' rows='5' maxlength='250'></textarea><br> <input type='submit' name='submit' value='send'> </form> "; ?> |
Regel 14:quote:
1 2 3 | $queryget = mysql_query( 'SELECT * FROM gastenboek')or die("query error")); ?> |
Nee, er staan precies genoeg haakjes, alleen niet op de juiste plek.quote:Op zondag 27 september 2009 02:20 schreef cablegunmaster het volgende:
Mist een ) in het bold toe gevoegd als hij die code in php pakt
Nu staat er een ) te veel.quote:mysql_query( ' ') or die ("mysql_error());
quote:zoek eens op php naar een fout afhandeling.
handiger is een $sql variabele te maken en die in een mysql_query($sql); te stoppen zodat als je variabelen gebruikt in je sql die kan outputten met een echo om je sql fout te vinden.
Zoiets?quote:Op donderdag 1 oktober 2009 17:37 schreef ReWout het volgende:
SELECT * FROM gallery WHERE views=MAX(views)
Hoe doe ik dat? :s), ik wil dus 't element met 't grootst aantal views hebben.
1 |
Waarom niet? Dat werkt wel, en 't is een stuk minder omslachtig :)quote:oh btw ik wil niet horen dat ik dus
SELECT * FROM gallery ORDER BY views DESC LIMIT 1
ofzo :P
Ik geloof niet dat ik snap wat je zegt....quote:Op donderdag 1 oktober 2009 17:48 schreef ReWout het volgende:
[..]
Nah want die resultaat (hoeft) correnspondeert dan niet met de andere geselecteerde rijen
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 | id naam 1 Abc 2 Bcd 3 Cde 4 Def Tabel 2: id id_tabel1 uitgave_nummer versie_nummer 1 1 1 a 2 1 1 b 3 1 1 c 4 1 2 a 5 1 3 a 6 2 1 a 7 2 1 b 8 3 1 a 9 3 1 b 10 3 2 a 11 4 1 a 12 4 2 a 13 4 3 a 14 4 4 a 15 4 4 b 16 4 4 c |
Is dat een nieuw probleem of nog steeds hetzelfde probleem? In het laatste geval, hoe hadden we moeten weten dat je query over 2 tabellen gaat?quote:Op vrijdag 2 oktober 2009 07:22 schreef ReWout het volgende:
De query gaat over 2 tabellen...
[ code verwijderd ]
Nu wil ik alleen diegene selecteren uit tabel1 waarbij de uitgave_nummer nummer 't grootst is en vervolgens ook 't versie_nummer het grootste is...
Bijvoorbeeld de resultaat van me query moet zijn
id naam uitgave versie
1 Abc 3 a
2 Bcd 1 b
3 Cde 2 a
4 Def 4 c
Hetzelfde probleem en je hebt gelijk had ik moeten vermelden maar ik dacht dat 't toch niet zoveel uitmaakte omdat ik dus inprincipe dus gewoon een WHERE clause maximum nodig heb waardoor ik dus alleen de hoogste uitgave/versie eruit haalquote:Op vrijdag 2 oktober 2009 07:33 schreef Light het volgende:
[..]
Is dat een nieuw probleem of nog steeds hetzelfde probleem? In het laatste geval, hoe hadden we moeten weten dat je query over 2 tabellen gaat?
Nee helaas niet want...quote:Op vrijdag 2 oktober 2009 08:59 schreef Xcalibur het volgende:
Dan zou ik lekker op uitgave en versie sorteren en het eerste record pakken
Voor je oorspronkelijke probleem blijft mijn query prima volgens mij
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 | id naam 1 Abc 2 Bcd 3 Cde 4 Def Tabel 2: id id_tabel1 uitgave_nummer versie_nummer 1 1 1 a 2 1 1 b 3 1 1 c 4 1 2 a 5 1 3 a 6 2 1 a 7 2 1 b 8 3 1 a 9 3 1 b 10 3 2 a 11 4 1 a 12 4 2 a 13 4 3 a 14 4 4 a 15 4 4 b 16 4 4 c 17 4 5 a |
1 2 3 4 5 6 7 8 9 | n.[id], n.[titel], MAX(m.[uitgave]) AS [uitgave], MAX(m.[versie]) AS [versie] FROM [tabel1] AS n LEFT JOIN [tabel2] AS m ON m.[id_tabel1] = n.[id] GROUP BY n.[id], n.[titel] |
Wanneer ik dan MAX(m.[Versie]) wegdoe (en toevoeg bij GROUP BY anders error) dan krijg je weer dubbele resultatenquote:Op donderdag 1 oktober 2009 17:48 schreef ReWout het volgende:
[..]
Nah want die resultaat (hoeft) correnspondeert dan niet met de andere geselecteerde rijen
Die query zou ikzelf ook logisch vinden, maar helaas mag je in de where clause geen MAX(), MIN(), AVG() functies uitvoerenquote:Op vrijdag 2 oktober 2009 10:47 schreef cablegunmaster het volgende:
SELECT tabel2.uitgave_nummer,tabel1.naam,tabel2.versie_nummer
FROM tabel2
LEFT JOIN tabel1 ON
tabel1.id = tabel2.id_tabel1
WHERE tabel2.uitgave_nummer = max(uitgave_nummer)
AND tabel2.versie_nummer = max(versie_nummer)
zoiets ? weet niet of alle velden kloppen maar het idee is dat hij de naam pakt en het uitgave nummer en de versienummer en daarvan de laatste pakt.
dus de maximale waarde in uitgave nummer en waar ook de grootste waarde in versienummer staat
en waarom zou dat niet mogen ?quote:Op vrijdag 2 oktober 2009 11:04 schreef ReWout het volgende:
[..]
Die query zou ikzelf ook logisch vinden, maar helaas mag je in de where clause geen MAX(), MIN(), AVG() functies uitvoeren
Al aardig op de goeie weg alleen retouneert diequote:Op vrijdag 2 oktober 2009 11:19 schreef cablegunmaster het volgende:
[..]
en waarom zou dat niet mogen ?
ooh regels las het net dan moet je het met subqueries doen
SELECT tabel2.uitgave_nummer,tabel1.naam,tabel2.versie_nummer
FROM tabel2
LEFT JOIN tabel1 ON
tabel1.id = tabel2.id_tabel1
WHERE tabel2.uitgave_nummer =
(select max(uitgave_nummer)
from tabel2
where versienummer = (
select max(versie_nummer
from tabel2))
Zoiets Niet getest maar het idee moet ongv duidelijk zijn
meer info over subqueries:
http://dev.mysql.com/tech-resources/articles/4.1/subqueries.html
1 2 3 4 | Def 4 b Def 4 c Def 4 d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 1 1 1 a 2 1 1 b 3 1 1 c 4 1 2 a 5 1 3 a 6 1 3 b 7 2 1 a 8 2 2 a 9 2 2 b 10 3 1 a 11 3 1 b 12 3 2 a 13 3 2 b 14 3 2 c 15 3 3 a 16 4 1 a 17 4 2 a 18 4 3 a 19 4 3 b 20 4 4 a 21 4 4 b 22 4 4 c 23 4 4 d |
1 2 | Abc 3 b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | n.[titel], m.[uitgave], m.[versie] FROM [tabel1] AS n LEFT JOIN [tabel2] AS m ON n.[id] = m.[id_tabel1] WHERE m.[versie] = ( SELECT MAX([versie]) FROM [tabel2] WHERE [uitgave] = m.[uitgave] ) AND m.[uitgave] = ( SELECT MAX([uitgave]) FROM [tabel2] WHERE [id_tabel1] = n.[id] ) |
Ja klopt toch? Een uitgave (4 bijvoorbeeld) kan meerdere versies hebben (a, b, c, d) en ik moet dus de max versie hebben van die uitgave...quote:Op vrijdag 2 oktober 2009 11:38 schreef cablegunmaster het volgende:
Lees wat je doet.
je selecteert de max versie. waar uitgave is gelijk aan uitgave... (nutteloos zinnetje)
Klopt toch ook? Er staan meerdere uitgaves in de tabel... 1, 2, 3, 4?quote:en uitgave = select maximale uitgave van tabel 2 waar id = id.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | n.[titel], MAX(m.[uitgave]), MAX(m.[versie]) FROM [tabel1] AS n LEFT JOIN [tabel2] AS m ON n.[id] = m.[id_tabel1] WHERE m.[uitgave] = ( SELECT MAX(m2.[uitgave]) FROM [tabel2] AS m2 WHERE m2.[id_tabel1] = n.[id] ) GROUP BY n.[titel], n.[id] |
1 2 3 4 5 | a 10 b 20 c 30 d 40 |
1 2 3 4 | a 10 c 20 e 30 |
Dankquote:Op zondag 4 oktober 2009 12:02 schreef GlowMouse het volgende:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
mysql_pingquote:Op zondag 4 oktober 2009 14:40 schreef poepeneesje het volgende:
Kan iemand vertellen hoe ik met PHP kan controleren of een connectie met een DB nog bestaat.
Bedankt voor je snelle reactie.quote:
Op regel 41 staat het volgende:quote:Warning: mysql_ping(): 4 is not a valid MySQL-Link resource in /home/vhosting/../general/content.php on line 41
1 2 3 4 5 6 | if(!mysql_ping($connect)) { include("./database/mysql-database-connect.php"); } ?> |
Je moet wel eerst de connectie (je resource )al eens gelegd hebben. Anders weet de functie niet op welke connectie moet kijken of deze nog steeds open is.quote:Op zondag 4 oktober 2009 15:20 schreef poepeneesje het volgende:
[..]
Bedankt voor je snelle reactie.
Nu krijg ik de volgende melding en ik kan niet vinden waarop deze slaat:
[..]
Op regel 41 staat het volgende:
[ code verwijderd ]
Klopt, in bepaalde gevallen lijkt het alsof de connectie niet te worden opgezet en kunnen bepaalde queries niet worden uitgevoerd, om niet onnodig een connectie te willen opzetten, wil ik graag een soort van check om te kijken of de verbinding al bestaat.quote:Op zondag 4 oktober 2009 15:44 schreef ursel het volgende:
[..]
Je moet wel eerst de connectie (je resource )al eens gelegd hebben. Anders weet de functie niet op welke connectie moet kijken of deze nog steeds open is.
Je hebt gelijk. Ik heb het getest met een simpel stukje code om een bestand te uploaden naar die beveiligde map. Met dat simpele programma krijg ik geen scherm te zien.quote:Op zondag 4 oktober 2009 21:48 schreef GlowMouse het volgende:
Dat scherm komt niet door je move_uploaded_file.
clientside checks zijn te omzeilen dus moet je sowieso nog in php checkenquote:Op maandag 5 oktober 2009 16:18 schreef Tegan het volgende:
Ik heb een <FORM> waarin vier keer gekozen kan worden uit steeds tien vaste waardes (1 t/m 10).
Die vier waardes insert ik dan in mijn database. Ik moet dus vantevoren checken of die vier waardes EN uniek zijn aan elkaar (geen getal komt twee keer voor) EN of ze een van die tien vaste waardes hebben (ieder van de vier getallen ligt tussen 1 en 10).
Hoe kan ik dat het beste oplossen. In het <FORM> zelf, of tijdens het submitten dat checken en een error geven? Weet eigenlijk niet hoe ik dit het beste kan aanpakken.
1 2 3 | doe iets } |
1 2 3 | doe iets } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $n=4; $nrs = array(); for($i=1; $i<=$n; $i++) { $nrs[$i] = intval($_POST['nr' . $i]); if($nrs[$i] < 0 || $nrs[$i] > 10) { // x niet in [1,10] doorsneden met IN } } if($n != count(array_unique($nrs)) { // niet uniek } ?> |
Wat je kunt doen is een array maken met de waarde als index. Dus bijvoorbeeld als je 1,4,6 en 10 hebt dan krijg je $array[1] = "iets"; $array[4] = "iets"; $array[6] = "iets"; $array[10] = "iets";quote:Op maandag 5 oktober 2009 16:18 schreef Tegan het volgende:
Ik heb een <FORM> waarin vier keer gekozen kan worden uit steeds tien vaste waardes (1 t/m 10).
Die vier waardes insert ik dan in mijn database. Ik moet dus vantevoren checken of die vier waardes EN uniek zijn aan elkaar (geen getal komt twee keer voor) EN of ze een van die tien vaste waardes hebben (ieder van de vier getallen ligt tussen 1 en 10).
Hoe kan ik dat het beste oplossen. In het <FORM> zelf, of tijdens het submitten dat checken en een error geven? Weet eigenlijk niet hoe ik dit het beste kan aanpakken.
Tot je er na maanden achterkomt dat je bv. nr2 niet met nr4 vergeleek.quote:Op maandag 5 oktober 2009 16:45 schreef Xcalibur het volgende:
Niet de mooiste oplossing misschien, wel een hele begrijpbare
Ziet er goed uit, maar je checkt de range 0 t/m 10 ipv 1 t/m 10.quote:
Reguliere expressies zijn overkill voor dit voorbeeld. En daarbij zijn de ereg-functies sowieso niet aan te raden. Er staat een duidelijke en niet te missen waarschuwing op die pagina.quote:Op maandag 5 oktober 2009 16:38 schreef Darkomen het volgende:
http://nl3.php.net/manual/en/function.ereg.php
Hier staan een mooi voorbeeld wat je kan aanpassen voor jouw functie.
Het zal niet het eerste script zijn dat niet volledig doorgetest wordt. Of waar ondanks goed testen toch nog fouten inzitten.quote:Op maandag 5 oktober 2009 18:15 schreef Xcalibur het volgende:
waarom zou je daar na maanden achterkomen?
Als je wat maakt moet je het wel testen natuurlijk, en dat geldt voor *iedere* oplossing, dus je opmerking ontgaat me een beetje....
Ik heb net even uitgezocht waar het aan lag.quote:Op zondag 4 oktober 2009 21:48 schreef GlowMouse het volgende:
Dat scherm komt niet door je move_uploaded_file.
1 |
1 |
1 2 | WHERE user NOT IN (SELECT user FROM votes WHERE round = '$round' AND action = 'vote'); |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |