abonnement Unibet Coolblue Bitvavo
  vrijdag 3 november 2006 @ 00:32:28 #101
1607 Ali Salami
Altijd actueel
pi_43193307
Zou net zeggen, je kan idd MIN/MAX gebruiken.
Hatsjoe!
  vrijdag 3 november 2006 @ 00:39:47 #102
1607 Ali Salami
Altijd actueel
pi_43193466
http://dev.mysql.com/doc/refman/4.1/en/example-maximum-row.html

Kijk daar maar even, staat het uitgelegd
Hatsjoe!
  vrijdag 3 november 2006 @ 00:40:07 #103
42636 TheSeeker_NL
Damn fine coffee
pi_43193478
thanks ik ga het lezen
  vrijdag 3 november 2006 @ 00:42:05 #104
42636 TheSeeker_NL
Damn fine coffee
pi_43193511
hah super! het werkt, dit was precies wat ik zocht!

1
2
3
SELECT naam
FROM   Persoon
WHERE  handicap=(SELECT MIN(handicap) FROM Persoon);


super geholpen!
  vrijdag 3 november 2006 @ 01:23:34 #105
1607 Ali Salami
Altijd actueel
pi_43194215
Mooi
Hatsjoe!
pi_43220716
Weet iemand een goed script dat excel sheets kan uitlezen in php, ik heb er wat gevonden maar ze konden allemaal (behalve hele dure) niet overweg met &#tekens...

Weet iemand een goed script? google had veel maar helaas niet wat ik zocht (gratis , of ongv 10 euro oid)


Nu ben ik zelf even opzoek gegaan en heb aardig informatie gevonden over excel com. En met wat voorbeelden heb ik het volgende gemaakt.

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
<?
    $excel = new COM("excel.application") or die("Unable to instanciate excel");  

    //bring it to front  
    $excel->Visible = 1;//NOT
    //dont want alerts ... run silent  
    $excel->DisplayAlerts = 1;  

    //open  document  
    $excel->Workbooks->Open("d:/excel.xls");  

    for ($h = 1; $h <= 3; $h++)
    {
        $book  = $excel->Workbooks(1);
        $sheet = $book->Worksheets($h);

        echo "<table>n";
        //Wtite row
        for ($i = 1; $i <= 150; $i++)
        {
            echo "<tr>n";
            //write colom
            for ($j = 1; $j <= 5; $j++)
            {
                $cell = $sheet->Cells($i, $j); // #Select the cell (Row Column number)
                $cell->activate;               // #Activate the cell
            
                if($cell->value == '0')
                {
                    $td = "";
                }
                else
                {
                    $td = $cell->value;
                }

                echo "<td>" . $td . "</td>n"; // #write the cell
            }
            echo "</tr>n";
        }
        echo "</table>n";
    }

    //closing excel  
    $excel->Quit();  


echter als ik het bestand uitlees krijg ik nog steeds vage teksten! wat is de inhoud dan zou je je afvragen!?

Rij A - Nederlandse tekst (arial)
Rij C - Thaise tekens (Angsana New)
Rij E - Engelse tekst (arial)

Maar als ik het uitlees krijg ik het volgende te zien.



Oftewel ik lees iets niet goed uit, volgens mij moet ik ergens nog kunnen instellen welk karakterset ik wil gebruiken... maar dat kan ik dus niet vinden liefst zou ik gewoon alle teksten van een cel in &# codes willen hebben maar goed.

Dit moet de uitkomst zijn ongv.





[ Bericht 43% gewijzigd door Chandler op 04-11-2006 11:05:07 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 4 november 2006 @ 23:12:14 #107
62215 qu63
..de tijd drinkt..
pi_43247233
op de een of andere manier kan ik niet meer via CURL op Fok posten

als ik wil posten krijg ik een #68 (Je bent niet ingelogd en kunt daarom niet reageren. Log eerst in, of vul je gebruikersnaam en wachtwoord in bij het reageervenster, en probeer het dan opnieuw.)
en bij het wijzigen van mijn profiel een #3(Je bent niet ingelogd en kunt daarom geen gebruik maken van deze functie. Klik hier om in te loggen, of hier om je te registreren.)

ik heb gewoon mijn eigen sessionid gebruikt die niet aan mijn ip gebonden is, gebruikersnaam en eachtwoord worden ook meegezonden..

iemand een tip?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 5 november 2006 @ 12:41:02 #108
62215 qu63
..de tijd drinkt..
pi_43256142
quote:
Op zaterdag 4 november 2006 23:12 schreef qu63 het volgende:
op de een of andere manier kan ik niet meer via CURL op Fok posten

als ik wil posten krijg ik een #68 (Je bent niet ingelogd en kunt daarom niet reageren. Log eerst in, of vul je gebruikersnaam en wachtwoord in bij het reageervenster, en probeer het dan opnieuw.)
en bij het wijzigen van mijn profiel een #3(Je bent niet ingelogd en kunt daarom geen gebruik maken van deze functie. Klik hier om in te loggen, of hier om je te registreren.)

ik heb gewoon mijn eigen sessionid gebruikt die niet aan mijn ip gebonden is, gebruikersnaam en eachtwoord worden ook meegezonden..

iemand een tip?
foutje in mn sessionid dus
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_43263067
Ik hoop dat iemand mij bij he volgende kan helpen:
Ik wil mijn menu uit een database halen. Dit bestaat 3 onderdelen:
-de menu items uit de tabel menu halen
-de submenu items de titels (van de tekst pagina's) uit de teksten tabel halen
- extra submenuitems uit de tabel submenuitems halen.

Nou wil ik dat ik in het extra submenuitems tabel een plaats kan meegeven die bepaald hoe hoog een bepaald submenu item komt te staan. Om dat te programeren had ik het volgende in gedachten:

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
<?php
<ul>

$taal = "NL";
$menu_array = array();
$submenu_array = array();
include(
"config.php");
@
mysql_select_db("database")
or die (
"kon geen database selecteren");
$query = "SELECT menu  FROM menu WHERE taal='$taal' ORDER BY ID";
$result = mysql_query($query);
while (list(
$menu) = mysql_fetch_row($result))
{
$de_menu = urldecode($menu);
$menu_array[] = "<li>$de_menu</li>";
$query2 = "SELECT titel FROM tekst WHERE taal='$taal' AND menu='$menu' ORDER BY ID";
$result2 = mysql_query($query2);
while (list(
$titel) = mysql_fetch_row($result2))
{
$de_titel = urldecode($titel);
$submenu_array[] = "<ol><a href='../$database/$titel'>$de_titel</a></ol>";}
$query3 = "SELECT titel , URL , priority FROM submenu WHERE taal='$taal' AND menu='$menu' ORDER BY ID";
$result3 = mysql_query($query3);
while (list(
$titel, $url, $priority) = mysql_fetch_row($result3))
{
$de_titel = urldecode($titel);
if (empty(
$priority))  {$submenu_array[] = "<ol><a href='$url'>$de_titel</a></ol>"; }
else {               
$output = array_slice ($submenu_array, $priority);
                        
$menu_array[] = "<ol><a href='$url'>$de_titel</a></ol>";
                        
$submenu_array = array_merge ($submenu_array, $output);
}
}
$menu_array = array_merge ($menu_array, $submenu_array);
print_r($menu_array);
unset (
$menu_array);
unset (
$submenu_array);
}

</
ul>
?>


Alleen is de uitkomst dus niet helemaal goed. Het probleem zit hem in het plaatsen op een bepaalde plaats in de array. Ik krijg mijn array niet meer mooi terug bijelkaar. Hoe kan ik dit het beste oplossen? Iemand tips?
  FOK!-Schrikkelbaas zondag 5 november 2006 @ 17:12:04 #110
1972 Swetsenegger
Egocentrische Narcist
pi_43264161
Misschien makkelijker om je eens in een hierarchisch model te verdiepen?
pi_43264437
Het is ook verstandig om de data met één query op te halen. Als je nu 10 menu's hebt met 10 submenu's dan moet je 120 query's uitvoeren!
Waarom gebruik je urldecode() op de gegevens die uit de database komen
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_43264678
Ik zal eens in een hierarchisch model duiken.

@superrembo
De gegevens in de database zijn urlgedecodeerd zodat ik ze direct uit de database kan halen. Ik had wat problemen met een aantal menu items waar een apostroph in voorkwam. Door met urldecode en encode te werken heb ik die problemen opgelost.
pi_43265064
Aha, dat is een oplossing, die wel werkt, maar toch is het niet de goede oplossing. Je moet mysql_real_escape_string() of addslashes() gebruiken als je een string in een query zet. Op de gegevens die je uit de database terug krijgt hoef je dan geen urldecode() o.i.d. toe te passen. Wel moet je natuurlijk htmlentities() of htmlspecialchars() gebruiken dat je een string in html gebruikt.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_43265706
Ik had ook mysql_real_eascape_string() kunnen gebruiken maar voor mij was het resultaat hetzelfde.Het voordeel vam urldecode() voor mij was dat ik die toch al toepaste op mijn site.
Let wel, ik zet de string niet in een query, ik haal de alle titels op uit de database, controleer welke titel bestaat (overeenkomt met de string) en gebruik dan de titel die ik uit de database heb getrokken om de rest van de site te laden.
pi_43266784
Je hebt die titel toch een keer met urlencode() in je database gezet, via een sql query?
Je maakt het jezelf alleen maar moeilijk als je jezelf verkeerde encoding aanleert. Dat soort dingen blijven je achtervolgen. (Zie het gehannes met de \ in replique )
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 5 november 2006 @ 19:46:43 #116
1972 Swetsenegger
Egocentrische Narcist
pi_43268686
quote:
Op zondag 5 november 2006 18:43 schreef SuperRembo het volgende:
Je maakt het jezelf alleen maar moeilijk als je jezelf verkeerde encoding aanleert. Dat soort dingen blijven je achtervolgen. (Zie het gehannes met de \ in replique )
Helaas heb ik dat door schade en schande zelf ondervonden.
Eerst gebruikte ik altijd addslashes omdat dat bij mijn hoster werkte.
Tot hij mijn website naar een andere machine verhuizde
Toen ben ik gaan controleren of magic quotes aanstonden.
Tegenwoordig strip ik slashes deep (zie php.net) en gebruik ik mysql_real_escape_string
pi_43269132
Aan de hand van jullie eerdere reacties ga ik vanavond bezig om mijn database design wat te optimaliseren.
Graag hoop ik daarom op nog wat tips
Ik heb een database met een aantal tabellen
teksten (hierin de teksten)
acties (specifieke database voor actie teksten andere opbouw dan gewonen teksten)
projecten (idem)
nieuws

Dan heb ik een menu met 7 items en een aantal menuitems hebben submenuitems. Maar niet alle teksten komen in het menu voor. Een aantal van deze items zijn echter niet losstaand maar vormen een soort menu voor zichzelf zonder dat het in de balk voorkomt.

Hoe kan ik dit het beste oplossen?
  zondag 5 november 2006 @ 20:28:20 #118
94421 IceHeat
Spiritually bankrupt
pi_43270242
quote:
Op zondag 5 november 2006 19:58 schreef ExCibular het volgende:
Aan de hand van jullie eerdere reacties ga ik vanavond bezig om mijn database design wat te optimaliseren.
Graag hoop ik daarom op nog wat tips
Ik heb een database met een aantal tabellen
teksten (hierin de teksten)
acties (specifieke database voor actie teksten andere opbouw dan gewonen teksten)
projecten (idem)
nieuws

Dan heb ik een menu met 7 items en een aantal menuitems hebben submenuitems. Maar niet alle teksten komen in het menu voor. Een aantal van deze items zijn echter niet losstaand maar vormen een soort menu voor zichzelf zonder dat het in de balk voorkomt.

Hoe kan ik dit het beste oplossen?
Ik zou eerst een ERD maken als ik jouw was.
pi_43275056
quote:
Op zondag 5 november 2006 20:28 schreef IceHeat het volgende:

[..]

Ik zou eerst een ERD maken als ik jouw was.
Ik had nog nooit van een ERD gehoord. Maar ik ga het e.e.a. maar een in kaart brengen. Bedankt voor de tips!
  zondag 5 november 2006 @ 22:17:39 #120
94421 IceHeat
Spiritually bankrupt
  dinsdag 7 november 2006 @ 16:14:38 #121
71919 wonderer
Hung like a My Little Pony
pi_43327427
Om SQL injection te voorkomen, doe ik

$ID=settype($id,"int");

zodat alles dat geen nummer is, eruit wordt gefilterd. $id is de variabele die in de functie wordt ingevoerd (geen userinput, maar als ik het mezelf zo kan aanleren, kan het vast geen kwaad). $id gaat er nu al 46329 in en komt er al 1 uit. Da's natuurlijk niet de bedoeling. Waar ligt dat aan, en hoe fix it het?

edit: nevermind, php.net niet goed gelezen

[ Bericht 8% gewijzigd door wonderer op 07-11-2006 16:22:48 ]
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_43333068
Ik ben op dit moment bezig om een serie functies te schrijven die mij gaan helpen om op een hele makkelijke manier formulieren te maken, controleren/valideren en verwerken.
Nu kun je op google een heleboel achtergrond informatie vinden maar de meeste teksten zijn nogal basis en verklappen hier en daar en klein intressant detail, maar 90-95% van alle informatie weet ik al.
Heeft er iemand een écht goeie tutorial die precies aangeeft welke functies belangrijk zijn om je form te valideren?

En wat ik ook graag wil weten, hoe kun je het beste controleren of een formulier ook écht door jou webserver is verstuurd? Met spoofing kunnen ze een hoop headers veranderen las ik ergens dus dat is niet echt wat ik zoek. Is een random value aanmaken in een hidden input en die controleren met een session een veilige en goede methode?

Andere hints en tips zijn ook welkom.

Ohja, ik weet dat er een dergelijk systeem al bestaat in PEAR maar dat is heel erg uitgebreid en ik heb er even naar gekeken maar ik snap ook niet echt goed hoe die alles hebben gedaan. Ik doe het liever zelf, dat ik er ondertussen nog van leer ook.

Het belangrijkste is dus voor mij, hoe maak ik mijn formulieren veiliger?
-
pi_43333297
Het belangrijkste voor jou is: hoe maak je de verwerking van de gegevens uit de formulieren veiliger.
pi_43333328
Yup dat klopt beter, en is metteen een leuke samenvatting van dat hele verhaal.
-
pi_43336760
Het verhaal
Er was eens een tabel met daarin 1,1 miljoen achternamen. Bijvoorbeeld 'Janssen' en 'van der Laan'. Nu wordt er gezocht met een query:

1SELECT * FROM Achternamen WHERE Achternaam LIKE '%Jan%' OR Achternaam LIKE '%Laan%'


Op deze manier worden dus de achternamen 'Janssen' en 'van der Laan' gevonden. Deze tabel doorzoeken met slechts 100 (oid) records er in gaat goed en snel, maar 1.1 miljoen is toch een ander verhaal.

Doordat er een % voor het zoekwoord geplaatst wordt, kan MySQL de index op het Achternaam-veld niet gebruiken, omdat niet duidelijk is waarmee het te zoeken woord begint (% betekend 0 of meer willekeurige tekens). Dit eerste % teken weglaten

1SELECT * FROM Achternamen WHERE Achternaam LIKE 'Jan%' OR Achternaam LIKE 'Laan%'


zou 'Janssen' wel vinden maar 'van der Laan' niet, omdat de achternaam niet met 'Laan' begint.

Oke oplossen met een full-text index zou kunnen, maar helaas kan/mag/whatever ik deze niet gebruiken.

Andere manier dus
Ik heb twee tabellen gemaakt:

1
2
AchternaamDeel(ID,Deelnaam)
AchternaamDeelLink(Achternaam_ID,AchternaamDeel_ID)


Ik splits de achternamen op: 'Janssen' blijft 'Janssen' en 'van der Laan' wordt opgedeeld in 3 stukken: 'van' 'der' en 'Laan'.

Deze deelnamen worden in de AchternaamDeel tabel opgeslagen, en in de AchternaamDeelLink tabel worden de deelnamen gelinkt met Achternaam_ID, die verwijst naar de Achternamen tabel waar de achternaam in oorspronkelijke vorm is opgeslagen.

We zoeken hierin met:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT * FROM Achternamen WHERE ID IN 
(
   SELECT
      AchternaamDeelLink.Achternaam_ID
   FROM
      AchternaamDeelLink
   LEFT JOIN
      AchternaamDeel 
   ON
      AchternaamDeelLink.AchternaamDeel_ID=AchternaamDeel .ID
   WHERE   
      AchternaamDeel.Deelnaam LIKE 'Jan%' OR
      AchternaamDeel.Deelnaam LIKE 'Laan%'
   GROUP BY
      AchternaamDeelLink.Achternaam_ID
   ORDER BY
      COUNT(AchternaamDeelLink.Achternaam_ID) DESC
   
)

(Met de score bereken ik welke het meest overeenkomt met de zoektermen)

Damn! dat werkt tegenover de andere manier retesnel (13 sec tegenover > 1 minuut)! Maar toch niet snel genoeg... Ik wil bijvoorbeeld per pagina slechts 10 achternamen afbeelden, maar een LIMIT is niet in de subquery te plaatsen omdat MySQL (5) dan klaagt dat die functie niet geimplementeerd is. Deze limit moet dus bij de buitenste query, wat betekend dat voor de subquery wel alle resultaten worden opgehaald.

Ik heb verder de benodigde indexen aangemaakt, maar zoals hieronder uit de EXPLAIN van MySQL blijkt, wordt er nogsteeds een trage filesort gebruikt.

12   DEPENDENT SUBQUERY   AchternaamDeel   range   PRIMARY,AchternaamDeel   AchternaamDeel   32   N   55   Using where; Using temporary; Using filesort


Iemand een idee hoe ik dit verder kan optimaliseren? (Of pak ik het verkeerd aan?)
pi_43344267
quote:
Op dinsdag 7 november 2006 19:05 schreef splendor het volgende:

En wat ik ook graag wil weten, hoe kun je het beste controleren of een formulier ook écht door jou webserver is verstuurd? Met spoofing kunnen ze een hoop headers veranderen las ik ergens dus dat is niet echt wat ik zoek. Is een random value aanmaken in een hidden input en die controleren met een session een veilige en goede methode?
Volgens mij bestaat er geen waterdicht methode om dat te controleren. Maar als je alles goed controleert is dat niet echt een issue.

Overigens heb je sinds php 5.2 Input filtering. Misschien kan je inspiratie opdoen door daar eens een kijkje naar te nemen.
..///
pi_43349435
quote:
Op vrijdag 3 november 2006 23:36 schreef Chandler het volgende:
Weet iemand een goed script dat excel sheets kan uitlezen in php, ik heb er wat gevonden maar ze konden allemaal (behalve hele dure) niet overweg met &#tekens...

Weet iemand een goed script? google had veel maar helaas niet wat ik zocht (gratis , of ongv 10 euro oid)


Nu ben ik zelf even opzoek gegaan en heb aardig informatie gevonden over excel com. En met wat voorbeelden heb ik het volgende gemaakt.
[ code verwijderd ]

echter als ik het bestand uitlees krijg ik nog steeds vage teksten! wat is de inhoud dan zou je je afvragen!?

Rij A - Nederlandse tekst (arial)
Rij C - Thaise tekens (Angsana New)
Rij E - Engelse tekst (arial)

Maar als ik het uitlees krijg ik het volgende te zien.

[afbeelding]

Oftewel ik lees iets niet goed uit, volgens mij moet ik ergens nog kunnen instellen welk karakterset ik wil gebruiken... maar dat kan ik dus niet vinden liefst zou ik gewoon alle teksten van een cel in &# codes willen hebben maar goed.

Dit moet de uitkomst zijn ongv.

[afbeelding]

Iemand een idee
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43349587
quote:
Op woensdag 8 november 2006 08:03 schreef Chandler het volgende:

[..]

Iemand een idee
Daar zal iets fout gaan met encoding of de charset of iets dergelijks. Waarschijnlijk krijg je unicode binnen uit excel. Stuur je wel de goede headers? Gebruik je htmlspecialchars()?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas woensdag 8 november 2006 @ 08:47:51 #129
1972 Swetsenegger
Egocentrische Narcist
pi_43349883
quote:
Op dinsdag 7 november 2006 19:05 schreef splendor het volgende:

En wat ik ook graag wil weten, hoe kun je het beste controleren of een formulier ook écht door jou webserver is verstuurd? Met spoofing kunnen ze een hoop headers veranderen las ik ergens dus dat is niet echt wat ik zoek. Is een random value aanmaken in een hidden input en die controleren met een session een veilige en goede methode?
Dat is min of meer het idee achter een captcha.
Ik genereer een unieke code. Die unieke code plaats ik in een sessie en op beeld als een image. De gebruiker moet vervolgens de code die op het beeld staat overtikken als hij het formulier invult. Alsna de submit ($_POST['captcha'] != $_SESSION['captcha']) { die('spammert');}
pi_43350467
me php boek is opgestuurd
ben benieuwd
  FOK!-Schrikkelbaas woensdag 8 november 2006 @ 09:29:27 #131
1972 Swetsenegger
Egocentrische Narcist
pi_43350540
quote:
Op woensdag 8 november 2006 09:25 schreef mschol het volgende:
me php boek is opgestuurd
ben benieuwd
Welk boek?
pi_43350703
quote:
Op woensdag 8 november 2006 08:19 schreef SuperRembo het volgende:

[..]

Daar zal iets fout gaan met encoding of de charset of iets dergelijks. Waarschijnlijk krijg je unicode binnen uit excel. Stuur je wel de goede headers? Gebruik je htmlspecialchars()?
Sr, htmlspecialchars werkt helaas niet... krijg dezelfde output. en goede headers stuur ik inderdaad niet. Heb namelijk geen idee welke ik moet sturen die zowel gewone karakters als thaise karakters ondersteunen...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43350728
quote:
Op woensdag 8 november 2006 09:29 schreef Swetsenegger het volgende:

[..]

Welk boek?
deze
  woensdag 8 november 2006 @ 09:53:57 #134
85514 ralfie
!Yvan eht nioj
pi_43350999
quote:
Op dinsdag 7 november 2006 20:31 schreef GVRuud het volgende:
heel verhaal
Je kunt natuurlijk ook de manier gebruiken die veel officiele instanties gebruiken
achternaam, tussenvoegsels

als in

Laan, van der
Jansen

Het wordt iets moeilijker om bijv 'van der Laan' te zoeken (dit zul je met php om moeten bouwen) maar verder denk ik dat het een goed alternatief is.
pi_43351932
Kleine vraag, ben nu bezig met een MYSQL class. Dit omdat bepaalde zaken gemakkelijker kunnen in php scripts. Echter wil ik deze class ook binnen andere functies in het globale script gebruiken. Nu moet ik echter voor ieder functie $mysql (de gestarte class) meegeven. Is er ook een andere manier zodat ik niet voor iedere lokale functie $mysql hoef mee te geven?

Tnx..

vb.
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
<?php
class MySQL
{
    var
$db;

    function
connect()
    {
       
// connect
    
}

    function
do_query($sql)
    {
        
// doe de query...
    
}
}

function
testA()
{
     
$query = $mysql->run_query("QUERY");
}

function
testB($mysql)
{
     
$query = $mysql->run_query("QUERY");
}

$mysql = new MySQL;

$mysql->connect();

testA();
testB();
?>


testA werkt niet, testB wel.... somebody?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 8 november 2006 @ 14:15:24 #136
85514 ralfie
!Yvan eht nioj
pi_43358052
Je kunt $GLOBALS['mysql'] gebruiken, of in elke functie 'global $mysql;' zetten, om de globale variabele aan te spreken.

Andere tip:
Je kunt mysql->connect() beter als constructor maken. Mocht je dat niet kennen, Constructors zijn functies die automatisch aangeroepen worden als een object gemaakt wordt
1
2
3
4
5
6
<?php
class MySQL {
function
__construct(){
mysql_connect($bla,$blaa,$blaa) or die("couldnt get database");
}
?>

wanneer je nu $x=new MySQL; doet, zal __construct() aageroepen worden (bij <php 5 heeft de constructor de naam van het object zelf (in dit geval 'function MySQL()' ). Scheelt weer een regel.
pi_43359334
@ralfie.. ah, ik had er wel wat overgehoord maar had de klepel nog niet zien hangen Die construct is inderdaad erg handig! maar dacht dat $GLOBALS nogal vies was om mee te coden of mag dat tegenwoordig wel weer

Maaruh nog iets over die construct! Indien je die gebruikt voor bv connecten, dan moet je toch alle gegevens continue in het script zelf hardcoden (username/pass/etc!?) En dat wil ik dus buiten deze class houden

[ Bericht 24% gewijzigd door Chandler op 08-11-2006 15:15:42 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 8 november 2006 @ 21:51:22 #138
85514 ralfie
!Yvan eht nioj
pi_43375187
quote:
Op woensdag 8 november 2006 14:53 schreef Chandler het volgende:
@ralfie.. ah, ik had er wel wat overgehoord maar had de klepel nog niet zien hangen Die construct is inderdaad erg handig! maar dacht dat $GLOBALS nogal vies was om mee te coden of mag dat tegenwoordig wel weer

Maaruh nog iets over die construct! Indien je die gebruikt voor bv connecten, dan moet je toch alle gegevens continue in het script zelf hardcoden (username/pass/etc!?) En dat wil ik dus buiten deze class houden
$GLOBALS schijnt beter te zijn zelfs als een variabele global declareerd, omdat er dan opnieuw iets gedeclareert wordt en $GLOBALS al bestaat. Andere methoden om globalen aan te spreken ken ik niet.

De mysql_connect() was ter voorbeeld, je kunt hem ook zonder argumenten aanroepen zoals jij deed in je code
pi_43375743
quote:
Op woensdag 8 november 2006 14:15 schreef ralfie het volgende:

Andere tip:
Je kunt mysql->connect() beter als constructor maken. Mocht je dat niet kennen, Constructors zijn functies die automatisch aangeroepen worden als een object gemaakt wordt
[ code verwijderd ]

wanneer je nu $x=new MySQL; doet, zal __construct() aageroepen worden (bij <php 5 heeft de constructor de naam van het object zelf (in dit geval 'function MySQL()' ). Scheelt weer een regel.
Niet helemaal mee eens. Als je een class mysql maakt dan zou die voor verschillende projecten bruikbaar moeten zijn. En dat beperk je weer als je in de class zelf usernames en passwords enzo gaat zetten. Maar een constructor is natuurlijk ook een functie en kan ook parameters accepteren. Als je daar dingen voor username en password bjizet kun je die doorgeven naar de connect functie en kun je wel je configuratie centraal houden.
pi_43382339
Correct, al heb ik amper ooit meerdere databases moeten gebruiken maar goed . Daarvoor is het inderdaad handiger om de username ed in een appart bestand/variabel(en) te houden
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43384354
Hallo! Ik heb een vraagje.

Het is simpel om random iets uit een database te poepen met RAND(), maar wat nou als ik dat uit 3 verschillende databases tabellen wil doen? Dus:

- 'text' ophalen uit tabel 'bla'
- 'titel' ophalen uit tabel 'bla2'
- 'nogiets' ophalen uit tabel 'bla3'

Met RAND() maak ik dat ik uit tabel 'bla' random 'text' pak en dat in $text zet. Maar ik wil dus dat hij dat random doet uit alle tabellen.

Ik zat te denken om drie queries uit te voeren, dat in een array of string te gooien, en dan een ander scriptje gebruiken om daar weer van te kiezen. Maar dat leek mij heel omslachtig, ik denk tenminste dat dat handiger kan. Dit bevorderd ook niet eens de snelheid.

Het idee is namelijk dat ik een radiostream op Internet heb, en dat ik daar iedere 20 seconden met een cronjobje de titel van wil veranderen (de ene keer een nieuwstitel, de andere keer het weerbericht, weer de andere keer wat er op dat moment speelt).

Alvast bedankt voor tips/voorbeelden!
dit
is
mijn
signature.
pi_43391855
Een klein vraagje:

ik heb een dropdownbox:

1
2
3
4
5
6
7
8
<select name="requiredsoortklant" id="requiredsoortklant" tabindex="25">
            <?php 
      $result = mysql_query("SELECT * FROM `soortklant` ORDER BY `Naam` ASC"); 
           while (list($Naam) = mysql_fetch_row($result)){ 
           echo ("<option value=$Naam>$Naam</option>n");
         }
      ?>
        </select>


die gevuld wordt met waardes uit een tabel

Vervolgens kan je er een kiezen en deze door POST toevoegen in een ander tabel. Probleem is echter als er een waarde in zit waar een spatie in zit zoals "Albert Hein" dan wordt alleen "Albert" opgeslagen in de tabel. Hoe krijg ik dit opgelost ? anyone ?
It's time to kick ass and chew bubble gum... and I'm all out of bubble gum
pi_43392044
quote:
Op donderdag 9 november 2006 05:51 schreef RiderXXX het volgende:
Het is simpel om random iets uit een database te poepen met RAND(), maar wat nou als ik dat uit 3 verschillende databases tabellen wil doen?
Je kunt dat op dezelfde manier doen als je joinet:
1
2
3
4
5
6
SELECT t1.text, t2.naam, t3.etc
FROM tabel1 t1
LEFT JOIN tabel2 t2 ON t1.t2id = t2.id
LEFT JOIN tabel3 t3 ON t2.t3id = t3.id
ORDER BY RAND()
LIMIT 0, 3

Als de tabellen niet aan elkaar gerelateerd zijn kun je met subqueries werken.

Zoals ik in een aantal posts geleden opmerkte, MySQL werkt niet optimaal met ORDER BY RAND(). Als je heel veel records hebt kunnen de queries langzamer gaan werken, heb je er niet zo heel veel dan maakt het niets uit.
pi_43392113
quote:
Op donderdag 9 november 2006 12:58 schreef Xtr3mE het volgende:
Een klein vraagje:

ik heb een dropdownbox:
[ code verwijderd ]

die gevuld wordt met waardes uit een tabel

Vervolgens kan je er een kiezen en deze door POST toevoegen in een ander tabel. Probleem is echter als er een waarde in zit waar een spatie in zit zoals "Albert Hein" dan wordt alleen "Albert" opgeslagen in de tabel. Hoe krijg ik dit opgelost ? anyone ?
In (X)HTML moet je altijd de waarden van attributen omgeven door aanhalingstekens. Dus like that:
1           echo ("<option value=\"" . htmlentities($Naam) . "\">" . htmlentities($Naam) . "</option>n");

De htmlentities() is er om dingen als aanhalings naar & quot; om te zetten e.d.
pi_43394174
thx voor je reply volgens mij heb je de code nog aangepast want eerst kreeg ik een foutmelding
maar nu wel oke
It's time to kick ass and chew bubble gum... and I'm all out of bubble gum
pi_43395902
quote:
Op woensdag 8 november 2006 08:47 schreef Swetsenegger het volgende:

[..]

Dat is min of meer het idee achter een captcha.
Ik genereer een unieke code. Die unieke code plaats ik in een sessie en op beeld als een image. De gebruiker moet vervolgens de code die op het beeld staat overtikken als hij het formulier invult. Alsna de submit ($_POST['captcha'] != $_SESSION['captcha']) { die('spammert');}
Zo'n image verification script heb ik al eens gemaakt, dat is hetzelfde toch?
Maar om dat nu in elk formulier in te bouwen zie ik niet zitten. Ik ben bijvoorbeeld ook met een spelletje bezig en om in te loggen wil ik het gaan gebruiken maar zeker niet in het spel zelf.

wipes66 ook bedankt, goeie link is dat. Al ben ik wel bezig het met classes (OO) op te lossen, lijkt me toch net ff fijner werken, zeker met foutmeldingen.

Mocht er nog iemand anders ideeën hebben dan post gerust, ik blijf het topic volgen.
-
pi_43396514
ik wil een array maken in een array op deze manier:

$array["dit"]["dat"] = "blaat";

maar dat werkt niet?

hoe moet ik het schrijven?


[edit]
even dollartekentje dr voor gezet
As a rule, I never touch anything more sophisticated and delicate than myself.
  FOK!-Schrikkelbaas donderdag 9 november 2006 @ 15:22:29 #148
1972 Swetsenegger
Egocentrische Narcist
pi_43396625
quote:
Op donderdag 9 november 2006 15:19 schreef Desdinova het volgende:
ik wil een array maken in een array op deze manier:

array["dit"]["dat"] = "blaat";

maar dat werkt niet?

hoe moet ik het schrijven?
Zelf doe ik zoiets met een sessie:

$_SESSION['giftwrap'][$value]=$_POST[$value]

Dat werkt prima
pi_43396686
kan dit niet in een gewone variabele dan?
As a rule, I never touch anything more sophisticated and delicate than myself.
  FOK!-Schrikkelbaas donderdag 9 november 2006 @ 15:26:46 #150
1972 Swetsenegger
Egocentrische Narcist
pi_43396757
quote:
Op donderdag 9 november 2006 15:24 schreef Desdinova het volgende:
kan dit niet in een gewone variabele dan?
Lijkt me wel
heb je hier wat aan: http://onaje.com/php/article.php4/44
pi_43396815
misschien kijk ik ergens overheen..

ik heb

1   $prices[$row->Ext]['year'] = $row->year;

en krijg parse error
1Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' in /usr/home/rmmedia/domains/roosmultimedia.nl/public_html/Site/scriptincludes/general/constants.php on line 26


line 26 is de regel die ik gepost heb. $row is een object gemaakt met mysql_fetch_object()..


Shite. heb hem al.. Objectnaam begon met een getal (ie. $row->1year)..
As a rule, I never touch anything more sophisticated and delicate than myself.
  FOK!-Schrikkelbaas donderdag 9 november 2006 @ 15:33:47 #152
1972 Swetsenegger
Egocentrische Narcist
pi_43396977
quote:
Op donderdag 9 november 2006 15:28 schreef Desdinova het volgende:
misschien kijk ik ergens overheen..

ik heb
[ code verwijderd ]

en krijg parse error
[ code verwijderd ]

line 26 is de regel die ik gepost heb. $row is een object gemaakt met mysql_fetch_object()..


Shite. heb hem al.. Objectnaam begon met een getal (ie. $row->1year)..
LOL. Nou succes verder
pi_43422957
quote:
Op donderdag 9 november 2006 13:04 schreef JeRa het volgende:

[..]

Je kunt dat op dezelfde manier doen als je joinet:
[ code verwijderd ]

Als de tabellen niet aan elkaar gerelateerd zijn kun je met subqueries werken.

Zoals ik in een aantal posts geleden opmerkte, MySQL werkt niet optimaal met ORDER BY RAND(). Als je heel veel records hebt kunnen de queries langzamer gaan werken, heb je er niet zo heel veel dan maakt het niets uit.
Kun je me iets meer uitleg geven, hier word ik niet zo wijs uit Het zijn trouwens vier tabellen:

streamrds: text
nieuws: datum titel
frequenties: stad frequentie
top100_shout: naam text

Dus van tabel 'streamrds' is het 'text' en van top100_shout 'naam' EN 'text'. Wat moet ik er dan neergooien?
dit
is
mijn
signature.
pi_43423074
quote:
Op vrijdag 10 november 2006 12:31 schreef RiderXXX het volgende:

[..]

Kun je me iets meer uitleg geven, hier word ik niet zo wijs uit
Misschien kun jij even uitleggen hoe je drie tabellen (toch?) aan elkaar gerelateerd zijn, en hoe je precies de random records daaruit wilt halen
pi_43423088
quote:
Op woensdag 8 november 2006 09:37 schreef Chandler het volgende:

[..]

Sr, htmlspecialchars werkt helaas niet... krijg dezelfde output. en goede headers stuur ik inderdaad niet. Heb namelijk geen idee welke ik moet sturen die zowel gewone karakters als thaise karakters ondersteunen...
Ik ben er bijna uit, het excel probleem dan...

Nu heb ik een ander probleem.

Voor mijn webshop ben ik bezig met een class, deze is natuurlijk bij iedere aanroep (include) weer leeg, echter wil ik proberen met sessies de inhoud te saven... echter gaat er iets fout..

Om de sessie aantemaken en de produkten te saven
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    
function saveSession()
    {
        
$_SESSION['shop'] = array();
        
        
$_SESSION['shop']['stuks']           = $this->stuks;
        
$_SESSION['shop']['produkten']       = addslashes(serialize($this->produkten));
        
$_SESSION['shop']['produkten_stuks'] = $this->produkten_stuks;
        
$_SESSION['shop']['totaalbedrag']    = $this->totaalbedrag;

        echo
'save';
            
print_r($_SESSION['shop']);

    }
?>


en om het weer in te laden gebruik ik dit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    
function shop()
    {
        if (isSet(
$_SESSION['shop']))
        {
            
$this->stuks           = $_SESSION['shop']['stuks'];
            
$this->produkten       = stripslashes(unserialize($_SESSION['shop']['produkten']));
            
$this->produkten_stuks = $_SESSION['shop']['produkten_stuks'];
            
$this->totaalbedrag    = $_SESSION['shop']['totaalbedrag'];
        }
        else
        {
            
$this->stuks           = 0;
            
$this->produkten       = array();
            
$this->produkten_stuks = 0;
            
$this->totaalbedrag    = 0;
        }
    }
?>


Dit is de sessie en class inhoud bij bestellen van een produkt
quote:
$_SESSIE
Array
(
[stuks] => 1
[produkten] => a:1:{i:2;a:5:{s:5:"titel";s:15:"Produkt titel 2";s:10:"stuk_prijs";s:1:"0";s:12:"totaal_prijs";s:1:"0";s:5:"stuks";i:1;s:7:"details";s:15:"Produkt tekst 2";}}
[produkten_stuks] => 1
[totaalbedrag] => 0
)[/code]

[quote]CLASS data
object(shop)(4)
{
["stuks"]=> int(1)
["produkten"]=> array(1)
{
[2]=> array(5)
{
["titel"]=> string(15) "Produkt titel 2"
["stuk_prijs"]=> string(1) "0"
["totaal_prijs"]=> string(1) "0"
["stuks"]=> int(1)
["details"]=> string(15) "Produkt tekst 2"
}
}
["produkten_stuks"]=> int(1)
["totaalbedrag"]=> int(0)
}
Echter krijg ik steeds een probleem met het laden ervan... dan zegt het dat het een probleem heeft met unserialize van $_SESSION['shop']['produkten']..

PS addslashes en stripslashes heb ik er nu in zitten en geeft ie een ander probleem..

zonder addslashes/stripslashes
quote:
Notice: argument passed to unserialize() is not an string in d:wwwbedrijfwww.heartbeadsdesign.nlincludeshop.class.php on line 20
Lijn 20 is de unserialize regel in functie shop() waar de sessie tot class data wordt omgezet.

met addslashes/stripslashes
quote:
Warning: Invalid argument supplied for foreach() in d:wwwbedrijfwww.heartbeadsdesign.nlincludeshop.class.php on line 62
saveArray ( [stuks] => [produkten] => N; [produkten_stuks] => [totaalbedrag] => ) array(4) { ["stuks"]=> NULL ["produkten"]=> string(2) "N;" ["produkten_stuks"]=> NULL ["totaalbedrag"]=> NULL }
oftewel blijkt dat de array $this->produkten helemaal vern**kt is :X

Wie heeft een idee??
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43423114
quote:
Op vrijdag 10 november 2006 12:35 schreef JeRa het volgende:

[..]

Misschien kun jij even uitleggen hoe je drie tabellen (toch?) aan elkaar gerelateerd zijn, en hoe je precies de random records daaruit wilt halen
Hmja, ik heb net die post geupdate met de tabellen en wat ik er precies uit wil halen. Ik wil dat dus gewoon geheel random doen, zoals ik met RAND() LIMIT 1 zou kunnen doen, en dan die uitkomst in $text gooien. Dan kan ik $text gebruiken om de titel in de server te veranderen..

Maar ik wil dat dus (in dit geval) met 4 tabelletjes doen, en dan ook vershillende rijnamen.
dit
is
mijn
signature.
pi_43423184
quote:
Op vrijdag 10 november 2006 12:31 schreef RiderXXX het volgende:

[..]

Het zijn trouwens vier tabellen:

streamrds: text
nieuws: datum titel
frequenties: stad frequentie
top100_shout: naam text

Dus van tabel 'streamrds' is het 'text' en van top100_shout 'naam' EN 'text'. Wat moet ik er dan neergooien?
En als ik je goed begrijp wil je dus uit één willekeurige tabel van de vier die je daar beschrijft een random row halen?
pi_43423233
Klopt asj een boessie! (klopt als een bus)
dit
is
mijn
signature.
pi_43423364
quote:
Op vrijdag 10 november 2006 12:40 schreef RiderXXX het volgende:
Klopt asj een boessie! (klopt als een bus) :P
Dan bepaal je éérst wat je random tabel is in PHP:
1
2
3
4
5
<?php
$tabellen
= array('streams', 'nieuws', 'etc');
$tabel = $tabellen[array_rand($tabellen)];
unset(
$tabellen);
?>

Vervolgens doe je een query:
1
2
3
4
5
<?php
$query
= 'SELECT * FROM `' . $tabel . '` ORDER BY RAND() LIMIT 1';
$result = mysql_query($query);
$data = mysql_fetch_assoc($result);
?>

En afhankelijk van welke $tabel je hebt output je de juiste kolommen :)
1
2
3
4
5
6
7
8
9
10
<?php
switch ($tabel)
{
    case
'streams':
        echo
$data['text']; //ofzo
        
break;
    case
'nieuws':
        
// etc
}
?>
pi_43423449
Aah relaxed!!! Dit snap ik tenminste.. bedankt

Edit: wat als ik nu alleen in de tabel 'nieuws' wil sorteren op 'datum' en daar ook dan maar random uit de laatste 10 berichten eentje wil kiezen?

[ Bericht 30% gewijzigd door RiderXXX op 10-11-2006 13:14:55 ]
dit
is
mijn
signature.
pi_43424875
quote:
Op vrijdag 10 november 2006 12:36 schreef Chandler het volgende:

[..]

Ik ben er bijna uit, het excel probleem dan...

Nu heb ik een ander probleem.

Voor mijn webshop ben ik bezig met een class, deze is natuurlijk bij iedere aanroep (include) weer leeg, echter wil ik proberen met sessies de inhoud te saven... echter gaat er iets fout..

Om de sessie aantemaken en de produkten te saven
[ code verwijderd ]

en om het weer in te laden gebruik ik dit
[ code verwijderd ]

Dit is de sessie en class inhoud bij bestellen van een produkt
[..]

Echter krijg ik steeds een probleem met het laden ervan... dan zegt het dat het een probleem heeft met unserialize van $_SESSION['shop']['produkten']..

PS addslashes en stripslashes heb ik er nu in zitten en geeft ie een ander probleem..

zonder addslashes/stripslashes
[..]

Lijn 20 is de unserialize regel in functie shop() waar de sessie tot class data wordt omgezet.

met addslashes/stripslashes
[..]

oftewel blijkt dat de array $this->produkten helemaal vern**kt is :X

Wie heeft een idee??
Ik heb het probleem anders opgelost... door de data die geserialized is te decoden met base64 en daar krijg ik dus weer geen errors van.

1
2
3
<?php
    $this
->produkten       = unserialize(base64_decode($_SESSION['shopdata']['produkten']));
?>

The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43425048
quote:
Op vrijdag 10 november 2006 12:48 schreef RiderXXX het volgende:
Aah relaxed!!! Dit snap ik tenminste.. bedankt :D :*

Edit: wat als ik nu alleen in de tabel 'nieuws' wil sorteren op 'datum' en daar ook dan maar random uit de laatste 10 berichten eentje wil kiezen?
Hoe je dat in PHP doet moet je zelf gaan bepalen, maar de SQL ziet er ongeveer zo uit (subquery):
1
2
3
4
5
6
7
8
SELECT * FROM (
    SELECT *
    FROM nieuws
    ORDER BY datum DESC
    LIMIT 0, 10
) t1
ORDER BY RAND()
LIMIT 1
pi_43425252
quote:
Op woensdag 8 november 2006 09:53 schreef ralfie het volgende:

[..]

Je kunt natuurlijk ook de manier gebruiken die veel officiele instanties gebruiken
achternaam, tussenvoegsels

als in

Laan, van der
Jansen

Het wordt iets moeilijker om bijv 'van der Laan' te zoeken (dit zul je met php om moeten bouwen) maar verder denk ik dat het een goed alternatief is.
Ja dat zou inderdaad kunnen, maar zoeken naar 'der Laan' zou op die manier niet werken, terwijl dat wel de bedoeling is.
pi_43425368
quote:
Op vrijdag 10 november 2006 13:44 schreef GVRuud het volgende:

[..]

Ja dat zou inderdaad kunnen, maar zoeken naar 'der Laan' zou op die manier niet werken, terwijl dat wel de bedoeling is.
Je zou bepaalde woorden kunnen laten herkennen als tussenvoegsels, zodat je uiteindelijk toch op 'Laan' uitkomt?
pi_43425731
Nou, probleem één is klaar. Nu weer het volgende (grote) probleem:

Ik wil een database opbouwen met daarin 'album releases'. Ik wil dat op de volgende manier kunnen showen op de website:


[maand] [jaar]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]

[maand] [jaar]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]


etc.. en de nieuwste maand boven. Maar hoe kan ik dat het beste doen? Het mooiste zou zijn om gewoon één tabelletje te hebben met 'albumreleases' en dat ik daar alles invul, maar wat is het beste qua opbouw in php en sql?
dit
is
mijn
signature.
  FOK!-Schrikkelbaas vrijdag 10 november 2006 @ 14:57:55 #166
1972 Swetsenegger
Egocentrische Narcist
pi_43427535
quote:
Op vrijdag 10 november 2006 13:59 schreef RiderXXX het volgende:
Nou, probleem één is klaar. Nu weer het volgende (grote) probleem:

Ik wil een database opbouwen met daarin 'album releases'. Ik wil dat op de volgende manier kunnen showen op de website:


[maand] [jaar]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]

[maand] [jaar]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]
[dag] [artiest] [albumtitel] [label]


etc.. en de nieuwste maand boven. Maar hoe kan ik dat het beste doen? Het mooiste zou zijn om gewoon één tabelletje te hebben met 'albumreleases' en dat ik daar alles invul, maar wat is het beste qua opbouw in php en sql?
Lees eens wat over database normalisatie.
Ik zie hier sowieso al een tabel of 3 (tabel artiesten, tabel albums, tabel labels). Plus een koppeltabel waarbij je een artiest en label aan een album knoopt)

-edit- dat zal je op de langere termijn werk besparen (je hoeft elke artiest of label maar 1 keer in te voeren en kan je vervolgens meerdere malen aan een album titel koppelen. Zo hoef je bv maar 1 keer Metallica in te voeren voor Load, Reload en Garage inc.), je database kleiner houden omdat er geen dubbele invoer in staat EN makkelijker uitbreidbaar in de toekomst als je meer informatie wil bij je album releases.

[ Bericht 7% gewijzigd door Swetsenegger op 10-11-2006 15:04:46 (uitleg) ]
pi_43428654
Let overigens wel op dat alhoewel een genormaliseerde database een erg nette manier van datarepresentatie is, bepaalde database management systems zoals MySQL vaak veel sneller werken met redundante data. Even snel sorteren op het aantal nummers per artiest is er bijvoorbeeld niet bij, behalve als je dat in een apart veld in de tabel 'artiesten' opslaat met een index erop.

De oplossing voor dat soort problemen ligt bij materialized views, welke MySQL nog niet ondersteunt. Verder leken me cross-table indices ook een goed idee (indexen die je kunt definiëren over de hele database over meerdere tabellen ipv per tabel), maar toen ik dat op GoT voorstelde als nieuwe feature werden ze allemaal kwaad en vroegen me om MySQL-configuraties omdat ze dachten dat ik een performanceprobleem had
pi_43428786
ja maar GoT zijn nubs

* RiderXXX rent naar GoT.
dit
is
mijn
signature.
pi_43433967
Ik heb een wordpress blog en ik blijf errors krijgen, volgens mij server logs gebeurd het hier.


[Fri Nov 10 10:02:55 2006] [error] [client <MIJNIP> mod_security: Access denied with code 500. Pattern match "(ht|f)tps?:/" at POST_PAYLOAD [id "300018"] [rev "3"] [msg "Generic PHP code injection protection via ARGS"] [severity "CRITICAL"] [hostname "sk8indtc.trimsalonpluto.nl"] [uri "/wp-admin/link-manager.php?link_id=22&action=linkedit"] [unique_id "0VhGQ38AAAEAAGavwgkAAAAB"]


hier word ik alleen niet veel wijzer uit. er staat dus acces denied with code 500 dat krijg ik als ik een link edit in wordpress. ("/wp-admin/link-manager.php). Hoe kan ik dit oplossen?
ik zie daar ook staan Generic Code injection. Is het misschien dat een bepaalde beveiliging van mijn host dit tegengaat omdat ie denkt dat ik een hacker ben oid?
0023
pi_43434110
ik heb ff "Generic PHP code injection protection via ARGS" in google gegooid vond dit:
http://www.etomite.org/forums/lofiversion/index.php?t6231.html

die gast had hetzelfde lag dus aan de host die apache heeft dichtgetimmerd
0023
pi_43455667
quote:
Op woensdag 8 november 2006 14:15 schreef ralfie het volgende:
Je kunt $GLOBALS['mysql'] gebruiken, of in elke functie 'global $mysql;' zetten, om de globale variabele aan te spreken.

Andere tip:
Je kunt mysql->connect() beter als constructor maken. Mocht je dat niet kennen, Constructors zijn functies die automatisch aangeroepen worden als een object gemaakt wordt
[ code verwijderd ]

wanneer je nu $x=new MySQL; doet, zal __construct() aageroepen worden (bij <php 5 heeft de constructor de naam van het object zelf (in dit geval 'function MySQL()' ). Scheelt weer een regel.
bestaat er niet ook een manier om $db om te toveren naar een superglobal?
..///
pi_43482605
Ik heb wat vraagjes over sessies in PHP. Ten eerste, de veiligheid.

Ik gebruik de volgende code om wat informatie uit een gePOST formulier op te slaan in de sessie:

1
2
3
4
5
6
<?php
$_SESSION
["naam"]     = $_POST["naam"];
$_SESSION["adres"]    = $_POST["adres"];
$_SESSION["postcode"] = $_POST["postcode"];
$_SESSION["plaats"]   = $_POST["plaats"];
?>


Is dit veilig? De POST data wordt dus direct in de sessie opgeslagen. Verder wordt die sessie-data weer op het scherm van de gebruiker getoont. De sessies worden opgeslagen in een database via een eigen sessie handler (overgenomen uit PHP in a Nutshell). Verder wordt de data aan het einde van de sessie definitief weggeschreven in een andere tabel in de database.

Ik weet dat er dingen zijn als addslashes() enzo, maar zijn die ook nodig als de magic quotes aan staan?

En verder is er ook een array die wordt opgeslagen in $_SESSION["data"]. Die array wordt dan aan het einde verspreid over meerdere rijen in een andere tabel opgeslagen. Moet ik dan nog handmatig dingen doen met serialize en unserialize?

Verder gebeurd het soms (heel vreemd overigens) dat de data niet correct in de sessie wordt opgenomen. Voorbeeld: ik heb op 1 pagina staan:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start
();

//wat code

if( /*is er gepost? */ )
{
  
$_SESSION["naam"] = $_POST["naam"];
}

//nog meer code

echo($_SESSION["naam"]);
?>


Als ik dan de naam POST naar die pagina, dan gebeurt het soms dat de naam (of andere velden) niet correct in de sessie worden bewaard. Het wordt wél op het scherm getoond, maar na een refresh (en dan niet herposten) is de data verdwenen.

Hebben jullie tips om dit te verbeteren, veiliger te maken en eventueel de "vergeet"-bug te verhelpen?
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_43482709
waarom save je $_POST gegevens niet zo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
foreach ($_POST as $key => $value)
{
    
// er van uitgaand dat er geen arrays in je posts staan
    
$_SESSION['postdata'][$key] = $value;
}

en wil je dit weer echooon

foreach ($_SESSION['postdata'] as $key => $value)
{
    echo
$key . " = " . $value . "<br />";
}
?>


zo ongv doe ik het ook met mijn parser... is altijd handig als je formulieren moet checken!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43482804
quote:
Op zondag 12 november 2006 18:14 schreef Chandler het volgende:
waarom save je $_POST gegevens niet zo
[ code verwijderd ]

zo ongv doe ik het ook met mijn parser... is altijd handig als je formulieren moet checken!
Omdat niet alle data die wordt gepost ook in de sessie bewaard moet worden.

Dan kan ik die natuurlijk middels een if() er weer uit filteren, maar ik vond het zo makkelijker.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_43482862
Correct, maar stel je gebruikt een template... dan kun je alle namen weer laten hergebruiken in de velden van je template... zoals ik zelf nu doe bij invul velden van formulieren waarbij ik de data check... als het fout is wil ik graag ook weer de teksten terug in de velden die de gebruiker heeft ingevuld...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43483044
Dat doe ik zo:

1<input id="fnaam" name="naam" type="text" tabindex="1" value="<?=$_SESSION["naam"]?>" />


Als iemand dus het formulier opnieuw wil/moet invullen, dan staat de reeds ingevulde data er al weer.

En het formulier laten genereren aan de hand van de data die in een $_SESSION["postdata"] zit gaat niet zo eenvoudig denk ik, omdat het formulier bestaat uit text, radio, select en hidden dingen . Dan zou die informatie ook weer apart moeten worden opgeslagen.

Ik heb daarom niet voor een template gekozen, maar het formulier dus zoals hierboven gewoon hardcoded opgeslagen. M'n site heeft overigens ook niet zoveel formulieren.

Overigens is het wel een goede tip die ik ga onthouden.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
pi_43489209
Weet iemand het volgende..

Als ik fopen gebruik op het volgende:

1fopen('http://htmllive.com/button_maker/generate.php?font=arial&font_size=10&align_text=center&text_color=FFFFFF&text=Click Me&style=1','r')


Dan kan hij deze link niet openen...

Ik gebruik het volgens deze code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$url_file = fopen($web_image,'r');

$newimage = "c:/temp/test.gif";
if($url_file){
   $newfile = fopen($newimage,'wb');
   while (!feof($url_file)) {
      $chunk = fread($url_file,1024);
      fwrite($newfile,$chunk);
   }
   fclose($newfile);
}
else{
   $error['no_file'] = "no file found on URL $web_image";
}
pi_43493326
Een url openen met fopen() kan alleen als allow-url-fopen aan staat. Als het je eigen server is kan je dat aan zetten, anders gebruik je een socket.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 12 november 2006 @ 23:26:10 #179
12880 CraZaay
prettig gestoord
pi_43493860
quote:
Op zondag 12 november 2006 18:10 schreef papernote het volgende:

Is dit veilig? De POST data wordt dus direct in de sessie opgeslagen. Verder wordt die sessie-data weer op het scherm van de gebruiker getoont.
Dit alleen is al niet veilig en biedt ruimte voor bijvoorbeeld XSS (Cross Site Scripting), omdat je untrusted data zonder controle teruggeeft richting de browser.
pi_43498458
quote:
Op zondag 12 november 2006 23:26 schreef CraZaay het volgende:

[..]

Dit alleen is al niet veilig en biedt ruimte voor bijvoorbeeld XSS (Cross Site Scripting), omdat je untrusted data zonder controle teruggeeft richting de browser.
Je hebt gelijk, je zo zou ie zo je data die je van $_POST of $_GET moeten checken!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_43503563
$query = "UPDATE Cart SET Extrainfo = Extrainfo + 'rn bla' WHERE Domain = '".$key."' AND SessionID = '".session_id()."'";

ik had eigenlijk gehoopt dat hij met deze query de informatie achter de huidige bestaande waarde zou zetten.. maar de waarde wordt geupdate naar 0, wat mij het idee geeft dat hij probeert op te tellen. Is er een manier om dit toch voor elkaar te boxen?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_43503656
Dat kan met de concat functie.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_43505014
hah!

werkt

danku.

( $query = "UPDATE Cart SET Extrainfo = concat(Extrainfo, 'rn bla') WHERE Domain = '".$key."' AND SessionID = '".session_id()."'"; voor geinteresseerden)
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_43512301
Ik heb deze query:

1
2
3
4
5
6
7
$sql =    mysql_query("
            SELECT *
            FROM dkm_disco_tracks
            INNER JOIN dkm_disco_albums
            ON dkm_disco_tracks.album = dkm_disco_albums.id
            ORDER BY dkm_disco_tracks.album, dkm_disco_tracks.track
") or die (mysql_error());


Ik wil de gegevens die uit deze query komen in een array kwijt die er zo uit ziet:

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
<?php
$array
=     Array // Aray die alle albums bevat
            
(

                
'Blackout' => Array // Array die alle songs van een album bevat
                
(
        
                    
'Walk Away',
                    
'Worker Song',
                    
'The Outcast',
                    
'Black Velvet Band',
                    
'Gonna Be A Blackout',
                    
'World Full of Hate'
        
                
),
        
                
'Sing Loud, Sing Proud' => Array // Array die alle songs van een album bevat
                
(
        
                    
'For Boston',
                    
'The Legend of Finn MacCumhail',
                    
'Which Side Are You On?',
                    
'The Rocky Road To Dublin',
                    
'Heroes from Our Past',
    
                )

            );
?>


mn database structuur is zo:

DKM_DISCO_ALBUMS(id, titel)
DKM_DISCO_TRACKS(id, track_titel, track_nr, album)

in DKM_DISCO_TRACKS is album het id van album in DKM_DISCO_ALBUMS

Ben al halve dag aan het kloten, maar wil niet lukken.
Gezocht: KAMER in UTRECHT
pi_43513600
Zo te zien heb je nog niets gebruikt van de tips die hier gegeven zijn.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_43513836
jawel... maar iemand anders heeft met met paar dingen opweg geholpen. en dat zag er iets anders uit.

met de bovenstaande query en deze php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$prevAlbum
= -1;

while(
$row = mysql_fetch_array($query))
{
   if(
$prevAlbum != $row['album'])
   {
      
// Album titel weergeven
      
if($prevAlbum != -1) echo "</ul>";
      echo
"<li><a href="#">$row[titel]</a></li><ul>";
      
$prevAlbum = $row['album'];
   }

   echo
"<li>$row[track_titel]</li>";
}
?>


Krijg ik de volgende uivoer

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
<ul>

  <li><a href="#">ALBUM TITLE 1</a>

    <ul>
      <li>TRACK TITEL 1</li>
      <li>TRACk TITEL 2</li>
      <li>TRACk TITEL 3</li>
      <li>...</li>
    </ul>

  </li>


  <li><a href="#">ALBUM TITLE 2</a>

    <ul>
      <li>TRACK TITEL 1</li>
      <li>TRACk TITEL 2</li>
      <li>TRACk TITEL 3</li>
      <li>...</li>
    </ul>

  </li>

</ul> 


Maar nu wil ik het niet in een lijst, maar in een array die er uitziet als hier boven. en dat wil niet lukken
Gezocht: KAMER in UTRECHT
pi_43523122
Oja, als je dubbele kolomnamen in je query hebt, dan rename je gewoon de kolommen in je tabellen :{

Het principe is hetzelfde als het maken van de lijst. Als je snapt hoe dat werkt, dan kan je op dezelfde manier die geneste array opbouwen.

1
2
3
4
5
6
7
8
9
initialiseer album array
while (loop over rows) 
{
   if (album id gewijzigd) 
   {
      nieuw item aan album array toevoegen
   }
   track titel toevoegen
}
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_43523566
Dat probleem had ik idd al gevonden.

Het titel in DKM_DISCO_TRACKS hernoemd naar track_titel
heb je iets mee info over hoe je array's opbouwt. heb hier nooit echt mee gewerkt. dus zou begod niet weten wat de mogelijkheden zijn
Gezocht: KAMER in UTRECHT
pi_43527718
M'n opmerking over het hernoemen van kolomnamen was ironisch bedoeld. Maar dat is blijkbaar niet over gekomen. Een handigere oplossing had ik eerder al gegeven: een alias gebruiken.
1SELECT a.titel AS titel1, b.titel AS titel2 FROM a INNER JOIN b ON a.id = b.id


Hoe je array's opbouwt kan je lezen in tutorials, bijvoorbeeld bij w3schools.com.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_43534431
ik weet niet of je er al uit bent, maar misschien is dit wat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
while($row = mysql_fetch_array($query))
{

  
$vars[$row['album']][] = $row[track_titel];

}

foreach (
$vars as $key => $value){
  echo
$key."<ul>";
  if (
is_array($value)){
    foreach (
$value as $value2){

      echo
"<li>".$value2."</li>";

    }
  }
  echo
"</ul>";
}
?>


niet getest overigens. ook niet gechecked op parse errors
As a rule, I never touch anything more sophisticated and delicate than myself.
  dinsdag 14 november 2006 @ 17:06:43 #191
135268 USAF
Sarcastisch als altijd
pi_43548221
Vraagje

Ik ben bezig met een systeem die per dag een aantal vragen weergeeft uit een database. In een textfield/textarea kunnen mensen deze vragen beantwoorden.

Nu wil ik dat de verschillende antwoorden (die in een andere tabel van de db staan) worden vergeleken met het ingevulde antwoord. Want als het goed is krijgt deze user een x-aantal punten.

Ik zat al te denken om de antwoorden in een array te zetten, maar hoe ik deze vervolgens vergelijk met het ingevulde antwoord....

Iemand een idee?
Commander of the Joint Chiefs
pi_43548461
if ($ingevoerde_waard == $waarde_uit_db)
{
user extra punten..
}
else
{
user krijgt niets..
}
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 17:24:29 #193
1972 Swetsenegger
Egocentrische Narcist
pi_43548849
quote:
Op dinsdag 14 november 2006 17:06 schreef USAF het volgende:
Vraagje

Ik ben bezig met een systeem die per dag een aantal vragen weergeeft uit een database. In een textfield/textarea kunnen mensen deze vragen beantwoorden.

Nu wil ik dat de verschillende antwoorden (die in een andere tabel van de db staan) worden vergeleken met het ingevulde antwoord. Want als het goed is krijgt deze user een x-aantal punten.

Ik zat al te denken om de antwoorden in een array te zetten, maar hoe ik deze vervolgens vergelijk met het ingevulde antwoord....

Iemand een idee?
Je wilt open vragen gaan vergelijken met antwoorden uit database?
pi_43550782
quote:
Op dinsdag 14 november 2006 17:24 schreef Swetsenegger het volgende:

[..]

Je wilt open vragen gaan vergelijken met antwoorden uit database?
Als hij ernaast een expertsysteem opzet is dat goed mogelijk.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  dinsdag 14 november 2006 @ 18:32:50 #195
12880 CraZaay
prettig gestoord
pi_43550945
quote:
Op dinsdag 14 november 2006 17:24 schreef Swetsenegger het volgende:

[..]

Je wilt open vragen gaan vergelijken met antwoorden uit database?
Moet te doen zijn, tot op zekere hoogte.
  dinsdag 14 november 2006 @ 18:33:34 #196
12880 CraZaay
prettig gestoord
pi_43550977
quote:
Op dinsdag 14 november 2006 09:16 schreef Desdinova het volgende:
ik weet niet of je er al uit bent, maar misschien is dit wat
[ code verwijderd ]

niet getest overigens. ook niet gechecked op parse errors
Zou een probleem op kunnen leveren wanneer je $vars[$row['album']] niet eerst declareert als array.
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 18:37:16 #197
1972 Swetsenegger
Egocentrische Narcist
pi_43551083
Ik zeg toch niet dat het niet gaat, ik wil allen duidelijkheid
Overigens zou IK niet weten hoe je dat technisch op moet lossen. Misschien met een soort thesaurus ofzo.
pi_43551227
quote:
Op dinsdag 14 november 2006 18:37 schreef Swetsenegger het volgende:
Ik zeg toch niet dat het niet gaat, ik wil allen duidelijkheid
Overigens zou IK niet weten hoe je dat technisch op moet lossen. Misschien met een soort thesaurus ofzo.
PHLIPS is een PHP extentie voor CLIPS, waarmee je expertsystemen kan bouwen.

Expertsystemen kunnen reageren op natuurlijke taal en daarmee zou je dan zoiets kunnen implementeren. Zo heb ik zelf eens een helpdesk gemaakt in CLIPS, die reageerde op vragen als: "Mijn XboX is stuk, wat moet ik doen?".

Deze vraag werd dan ingelezen door het systeem en gefilterd op bepaalde woorden. Er wordt gezocht naar een bekend onderwerp (XboX) en een probleem (stuk) en of er een negatie (bijv. niet) in voor komt. Aan de hand daarvan worden er dan in het programma bepaalde regels geactiveerd die een vervolgvraag stellen.

Overigens heb ik dat direct in CLIPS geschreven en geen gebruik gemaakt van PHLIPS, maar middels PHLIPS zou je dat dus ook aan PHP kunnen koppelen.
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 19:04:18 #199
1972 Swetsenegger
Egocentrische Narcist
pi_43552026
quote:
Op dinsdag 14 november 2006 18:41 schreef papernote het volgende:

[..]

PHLIPS is een PHP extentie voor CLIPS, waarmee je expertsystemen kan bouwen.

Expertsystemen kunnen reageren op natuurlijke taal en daarmee zou je dan zoiets kunnen implementeren. Zo heb ik zelf eens een helpdesk gemaakt in CLIPS, die reageerde op vragen als: "Mijn XboX is stuk, wat moet ik doen?".

Deze vraag werd dan ingelezen door het systeem en gefilterd op bepaalde woorden. Er wordt gezocht naar een bekend onderwerp (XboX) en een probleem (stuk) en of er een negatie (bijv. niet) in voor komt. Aan de hand daarvan worden er dan in het programma bepaalde regels geactiveerd die een vervolgvraag stellen.

Overigens heb ik dat direct in CLIPS geschreven en geen gebruik gemaakt van PHLIPS, maar middels PHLIPS zou je dat dus ook aan PHP kunnen koppelen.
Interessant
pi_43553545
Ja daar moet ik ook maar eens wat meer over lezen
The people who lost my respect will never get a capital letter for their name again.
Like trump...
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')