abonnement Unibet Coolblue Bitvavo
  zaterdag 30 juli 2005 @ 16:19:21 #102
76657 Maikey
This pik ik niet!
pi_29267843
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    $uploaddir  
= "/var/www/puzzlingworld.nl/v2/upload/";
    echo
$uploadfile  = $uploaddir . $_FILES['afbeelding']['name'];

    
$do_insert = true;
            
    if(!empty(
$_POST['afbeelding'])){
        if(
move_uploaded_file($_FILES['afbeelding']['tmp_name'], $uploadfile)) {
            
$do_insert = true;
        }
                else{
             echo
"";
            
$do_insert = false;
        }
    }
?>


Ik wil nu dmv een cms een bestand uploaden met de bovenstaande code. De code geeft verder geen fouten, het probleem is alleen dat het bestand niet wordt geupload :S
Alle mappen heb ik ge'CH-mod maar dat heeft niks uitgehaald. Ik vermoed zelf dat het fout gaat bij de $uploaddir, maar die heb ik uit phpinfo(); en die is volgens mij ook goed. Iemand ideeen?
Wat een onzin!
pi_29268161
Zet eens error_reporting(0) bovenin je script, dan weer je zeker dat je alle errors/warnings te zien krijgt.

Met is_dir($dir) kan je controleren of een directory bestaat.

Met is_writable($fullfilename) kan je controleren of je naar een file mag schrijven.

Staat er misschien een error in $_FILES['afbeelding']['error']? Doe eens een var_dump($_FILES).
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zaterdag 30 juli 2005 @ 16:36:38 #104
32768 DionysuZ
Respect my authority!
pi_29268204
ik weet niet zo snel uit mijn hoofd, maar als je een file doorpasst, is $_POST['afbeelding'] dan niet gewoon leeg? En moet je dat veranderen in $_FILES['afbeelding'] ?
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_29268266
quote:
Op zaterdag 30 juli 2005 16:36 schreef DionysuZ het volgende:
ik weet niet zo snel uit mijn hoofd, maar als je een file doorpasst, is $_POST['afbeelding'] dan niet gewoon leeg? En moet je dat veranderen in $_FILES['afbeelding'] ?
Haha, dat had ik niet eens gezien. Soms is 't zo simpel
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zaterdag 30 juli 2005 @ 16:49:59 #106
76657 Maikey
This pik ik niet!
pi_29268521
quote:
Op zaterdag 30 juli 2005 16:34 schreef SuperRembo het volgende:
Zet eens error_reporting(0) bovenin je script, dan weer je zeker dat je alle errors/warnings te zien krijgt.

Met is_dir($dir) kan je controleren of een directory bestaat.

Met is_writable($fullfilename) kan je controleren of je naar een file mag schrijven.

Staat er misschien een error in $_FILES['afbeelding']['error']? Doe eens een var_dump($_FILES).
Met error reporting op 0 geeft hij nog geen errors of warnings. Als ik is_dir gebruik geef deze functie 1 terug, dus de directory is goed. var_dump(); geeft de volgende array terug:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
array(1) {
[
"afbeelding"]=&gt;
  array(
5) {
    [
"name"]=&gt;
    
string(7) "006.jpg"
    
["type"]=&gt;
    
string(10) "image/jpeg"
    
["tmp_name"]=&gt;
    
string(14) "/tmp/phpK3payU"
    
["error"]=&gt;
    
int(0)
    [
"size"]=&gt;
    
int(62564)
  }
}
?>


Wat bedoel je precies met $_POST[afbeelding] die leeg is doordat hij wordt doorgespeeld? Ik gebruik die $_POST verder helemaal niet in m'n script.

[edit]Never mind, dankjewel[/edit]
Wat een onzin!
pi_29290397
Probleem met een forcedownload scriptje om te vorokomen dat er van ozne site word gestreamt:


Ik gebruik de onderstaande code, maar sommige van de filmpjes kunnen niet worden geopent na het downloaden.

Terwijl ze wel te openen zijn als ik ze van de ftp afhaal.

Waar zit de fout?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php

if($_SERVER[QUERY_STRING])

{

    $file = str_replace("../", "", $_SERVER[QUERY_STRING]);

    $filename = 'movie/'.htmlspecialchars(addslashes($file));

    $file_extension = strtolower(substr(strrchr($file,"."),1));


    if (! file_exists( $filename ) )

    {

        $error = '<b style="color:#ff0000">File does not exist!</b>';

    }

    else

    {

        switch( $file_extension )

        {

        case "avi": $ctype="application/avi"; break;

        case "wmv": $ctype="application/wmv"; break;

        case "mpeg": $ctype="application/mpeg"; break;

        default: $ctype="application/force-download";

        }

        header("Pragma: public"); // required

        header("Expires: 0");

        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

        header("Cache-Control: private",false); // required for certain browsers

        header("Content-Type: $ctype");

        header("Content-Disposition: attachment; filename=".basename($filename).";" );

        header("Content-Transfer-Encoding: binary");

        header("Content-Length: ".@filesize($filename));

        @readfile("$filename") or die("File not found.");

    }

}


?> 
  zondag 31 juli 2005 @ 13:34:03 #108
3677 SuperRembo
Sinds 1998
pi_29291087
Aan de code is niet zo veel te zien. Er horen quotes om QUERY_STRING.
Ik vind de controle van de filename wel wat vreemd (addslashes en htmlspecialchars?). Die controle zou ik doen met een combinatie van realpath() en pathinfo().

Heb je van zo'n filmpje dat niet werkt al gekeken wat het verschil is met het origineel? Misschien staan er php errors of warnings in.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_29293761
oke dat is idd raar, er komen geen warinings, je download het bestand steeds he.
Hij is gewoon niet te openen.
pi_29294019
quote:
Op zondag 31 juli 2005 14:58 schreef Darkomen het volgende:
oke dat is idd raar, er komen geen warinings, je download het bestand steeds he.
Hij is gewoon niet te openen.
en als je het gedownloade bestand opent in notepad..
krijg je dan php warnings ofzo (misschien leverd hij het filmpje niet goed aan??
  zondag 31 juli 2005 @ 15:16:34 #111
3677 SuperRembo
Sinds 1998
pi_29294315
Heb je een voorbeeld-link van zo'n filmpje dat niet werkt?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_29307262
Deze bijvoorbeeld, en hij staat echt goed op de ftpserver.http://www.peugeot405club.nl/video.php?Peugeot405-1.avi
  zondag 31 juli 2005 @ 22:53:13 #113
3677 SuperRembo
Sinds 1998
pi_29308349
quote:
Op zondag 31 juli 2005 22:25 schreef Darkomen het volgende:
Deze bijvoorbeeld, en hij staat echt goed op de ftpserver.http://www.peugeot405club.nl/video.php?Peugeot405-1.avi
Die avi begint met een lading html
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_29316098
Doh! zo simpel om even het bestand te openen met een texteditor om te kijken waar het fout gaat.

Je had gelijk en het klopt ook, er zat een include op de verkeerde plek.

Bedankt
  dinsdag 2 augustus 2005 @ 21:26:08 #115
74523 BaggerUser
ModderFokker!
pi_29371421
ik weet niet meer wie maar iemand had een scriptje hier geplaatst zodat je van een pagina kon opvragen hoeveel posts een user had enzo.

op deze manier:
1
2
3
4
5
6
7
8
9
10
<?php
$url = "http://forum.fok.nl/user/profile/74523";   //dit snap ik dit is vanaf welke url
$contents = file_get_contents($url); // hier vraagtie als het goed is alle content ? *alleen alle text?? *op

$contents = substr($contents, strpos($contents, 'posts:')+6); 
$contents = substr($contents, 0, strpos($contents, 'per dag')+7);

$contents = str_replace('(', 'posts, ', $contents);
echo 'Ik heb '.strip_tags($contents);  // hier echo't ie het
?>


maar ik snap even niet hoe die het voor melkaar krijgt om maar 1 bepaald regeltje te echo'en ik krijg elke keer de hele zooi erna ook (ik snap het wel ongeveer dat stukje er tussen maar niet 100%)

het lukt mij b.v. niet om alleen maar de username van iemand op te vragen.

iemand die het even goed kan uitleggen ?
De enige echte BaggerUser!
Riemen
fiets kopen
pi_29372771
Bij mij print dat scriptje netjes "Ik heb 6224 posts, gemiddeld 10 per dag"

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
<?php
// Lees pagina
$url = "http://forum.fok.nl/user/profile/74523";
$contents = file_get_contents($url); 
// $contents = '...Aantal posts:</span> </td><td class="msgbody2" width="65%">6224 (gemiddeld 10 per dag)</td>...'

// Verwijder begin
$contents = substr($contents, strpos($contents, 'posts:')+6);
// $contents = '</span> </td><td class="msgbody2" width="65%">6224 (gemiddeld 10 per dag)</td>...'

// Verwijder eind
$contents = substr($contents, 0, strpos($contents, 'per dag')+7);
// $contents = '</span> </td><td class="msgbody2" width="65%">6224 (gemiddeld 10 per dag'

// Vervang '(' door 'posts, '
$contents = str_replace('(', 'posts, ', $contents);
// $contents = '</span> </td><td class="msgbody2" width="65%">6224 posts gemiddeld 10 per dag'

// Verwijder html tags
$contents = strip_tags($contents);
// $contents = ' 6224 posts gemiddeld 10 per dag'

// Toon resultaat
echo 'Ik heb '.$contents; 
// Ik heb  6224 posts gemiddeld 10 per dag'
?>



1
2
3
4
5
6
7
8
9
10
<?php
$url = "http://forum.fok.nl/user/profile/74523";
$contents = file_get_contents($url);

$contents = substr($contents, strpos($contents, 'Username:')+9);
$contents = substr($contents, 0, strpos($contents, '</a>')+4);
$contents = trim(strip_tags($contents));

echo 'Ik ben '.$contents;
?>


Dit werkt, al zou ik 't zelf met een regexp doen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  dinsdag 2 augustus 2005 @ 22:08:29 #117
74523 BaggerUser
ModderFokker!
pi_29372906
quote:
Op dinsdag 2 augustus 2005 22:05 schreef SuperRembo het volgende:
Bij mij print dat scriptje netjes "Ik heb 6224 posts, gemiddeld 10 per dag"
[ code verwijderd ]


[ code verwijderd ]

Dit werkt, al zou ik 't zelf met een regexp doen.
hoe zou je het met regexp doen dan ?
De enige echte BaggerUser!
Riemen
fiets kopen
pi_29373493
Zoiets

1
2
3
4
5
6
7
8
9
10
11
<?php
$url = "http://forum.fok.nl/user/profile/3677";
$contents = file_get_contents($url);

if (preg_match('#Username:.*?<a.*?>(.*?)</a>#i', $contents, $matches)) {
   $username = $matches[1];
   echo "Ik ben $username.";
} else {
   echo "Ik weet niet wie ik ben ;)";
}
?>


Dit haalt de tekst op in de eerste link na 'Username:'.
Roönaän heeft dacht ik dat scriptje met substr() gemaakt. Hij zal over mijn scriptje wel beginnen over performance enzo
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  dinsdag 2 augustus 2005 @ 22:25:33 #119
74523 BaggerUser
ModderFokker!
pi_29373595
quote:
Op dinsdag 2 augustus 2005 22:23 schreef SuperRembo het volgende:
Zoiets
[ code verwijderd ]

Dit haalt de tekst op in de eerste link na 'Username:'.
Roönaän heeft dacht ik dat scriptje met substr() gemaakt. Hij zal over mijn scriptje wel beginnen over performance enzo
heb jij dezelfde manier je avatar gemaakt?
De enige echte BaggerUser!
Riemen
fiets kopen
pi_29374267
quote:
Op dinsdag 2 augustus 2005 22:25 schreef BaggerUser het volgende:

[..]

heb jij dezelfde manier je avatar gemaakt?
Nope, die gebruikt een SOAP (XML) source.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_29395951
Ik krijg een aantal foutmeldingen bij het onderstaande script. Ik heb met wat knip / plak werk + wat ik zelf wist geprobeerd een uploader te maken. Mensen die willen uploaden moeten wel op het forum geregistreerd zijn, vandaar de controle username / ww.

Bij het indrukken van mn upload knop krijg ik de volgende meldingen:
quote:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/home/jeroen/www/upload.php on line 8

Warning: move_uploaded_file(users/upload/Abstract.JPG): failed to open stream: Permission denied in /usr/home/jeroen/www/upload.php on line 18

Warning: move_uploaded_file(): Unable to move '/var/tmp/phpwHvoH7' to 'users/upload/Abstract.JPG' in /usr/home/jeroen/www/upload.php on line 18
Er is een fout opgetreden tijdens het uploaden
Dat gaat om de regels met de sterretjes ******* er voor (kan zijn dat de regelnrs niet helemaal meer kloppen..)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
if(!empty($_POST)){
include("pf.php");
$gebruiker = $_POST['gebruiker'];
$wachtwoord = md5($_POST['wachtwoord']);
$sql_query = "SELECT * FROM users WHERE naam='" . $_POST["gebruiker"]  ."' AND wachtwoord= md5('" . $_POST["wachtwoord"]  ."');";
$result = mysql_query($sql_query);

*******if(mysql_num_rows($result) > 0) {
$text = "Wachtwoord en/of gebruikersnaam onjuist. Probeer nogmaals.";
die($text);
}
else{
$bestnaam = $_POST['bestnaam'];
$uploaddir = "users/upload/";
$uploadfile = $uploaddir.basename($_FILES['foto']['name']);
         ******* if(move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile))
        {
            {
            die ("De afbeelding is geupload. Deze vindt je terug op http://www.pestforum.nl/users/upload/".$bestnaam."");
            }
        }
    else
        {
        die ("Er is een fout opgetreden tijdens het uploaden");
        }
}
    }
?>
<LINK HREF="white.css" TYPE="text/css" REL="stylesheet">
<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr>
    <td><h1> Pestforum.nl jpeg uploader.</h1><p>Je kan enkel jpeg (.jpg) afbeeldingen uploaden.</p></td>
</tr>
<tr>
    <td><p>Selecteer je bestand:</p></td><td><input type="file" name="foto"></td>
</tr>

<tr>
    <td><p>Gebruikersnaam:</p></td><td><input type="text" name="gebruiker"></td>
</tr>
<tr>
    <td><p>wachtwoord:</p></td><td><input type="password" name="wachtwoord"><p></td>
</tr>
<tr>
<td><input type="submit" value="Afbeelding uploaden"></td>
</table>
</form>


Wat doe ik verkeerd?
pi_29396226
quote:
$gebruiker = $_POST['gebruiker'];
$wachtwoord = md5($_POST['wachtwoord']);
$sql_query = "SELECT * FROM users WHERE naam='" . $_POST["gebruiker"] ."' AND wachtwoord= md5('" . $_POST["wachtwoord"] ."');";
waarom variablen defineren als jje ze niet gebruikt

en je query is ook niet helemaal lekker:
1"SELECT * FROM users WHERE naam='" .$gebruiker."' AND wachtwoord='". $wachtwoord
pi_29396258
quote:
Op woensdag 3 augustus 2005 16:39 schreef mschol het volgende:

[..]

waarom variablen defineren als jje ze niet gebruikt

voor de rest ziet het script er imo goed uit...
Maar hij doet et niet
pi_29396509
quote:
Op woensdag 3 augustus 2005 16:40 schreef LeeHarveyOswald het volgende:

[..]

Maar hij doet et niet
je query was in iedergeval niet goed zie boven..
quote:
$bestnaam = $_POST['bestnaam'];
$uploaddir = "users/upload/";
$uploadfile = $uploaddir.basename($_FILES['foto']['name']);
******* if(move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile))
moet denk ik worden:

$uploadfile = basename($_FILES['foto']['name']);

--eedit--

een move_uploaded_file() in een if.. dat kan denk ik niet
eerst moven pas daarna gaan checken of hij idd is geupload

[ Bericht 10% gewijzigd door mschol op 03-08-2005 16:58:26 ]
pi_29397011
Dus
if(move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile))
Moet
if(is_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile))
Worden?

Het werkte nu nl nog niet al een stuk minder foutmeldingen, maar hij roept nu:


Warning: Wrong parameter count for is_uploaded_file() in /usr/home/jeroen/www/upload.php on line 16
Er is een fout opgetreden tijdens het uploaden

En lijn 16 is zeg maar de gekopieerde lijn..
pi_29397134
quote:
Op woensdag 3 augustus 2005 17:01 schreef LeeHarveyOswald het volgende:
Dus
if(move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile))
Moet
if(is_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile))
Worden?

Het werkte nu nl nog niet al een stuk minder foutmeldingen, maar hij roept nu:


Warning: Wrong parameter count for is_uploaded_file() in /usr/home/jeroen/www/upload.php on line 16
Er is een fout opgetreden tijdens het uploaden

En lijn 16 is zeg maar de gekopieerde lijn..
als je even op php.net kijkt zie je dant bij is_uploaded_file maar 1 parameter hoort...
dat is toch niet zo moeilijk
pi_29397146
quote:
Op woensdag 3 augustus 2005 16:47 schreef mschol het volgende:


een move_uploaded_file() in een if.. dat kan denk ik niet
eerst moven pas daarna gaan checken of hij idd is geupload
Dus zoiets:

1
2
3
move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile)
          if(is_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile))
          {


dit werkt trws ook niet... maar ik weet niet hoe ik kan controlleren of het bestand daadwerkelijk is gekopieerd?
pi_29397253
quote:
Op woensdag 3 augustus 2005 17:05 schreef LeeHarveyOswald het volgende:

[..]

Dus zoiets:
[ code verwijderd ]

dit werkt trws ook niet... maar ik weet niet hoe ik kan controlleren of het bestand daadwerkelijk is gekopieerd?
als je e code zo hebt staan krijg je problemen zet een ; neer
aangezien ik de volgende melding zie:
Parse error: parse error, unexpected T_IF in /usr/home/jeroen/www/upload.php on line 17
pi_29397899
Thnx, ben al een stuk verder nu.. maar waar ik nu echt niet mee verder kom is de "er is een fout bij het uploaden" melding...
PHP code:
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
        <?php
        if(!empty($_POST)){
        include("pf.php");
        $gebruiker = $_POST['gebruiker'];
        $wachtwoord = md5($_POST['wachtwoord']);
        $sql_query = "SELECT * FROM ibf_members WHERE name='".$gebruiker."' AND password='".$wachtwoord."'";
        $result = mysql_query($sql_query);
         if(mysql_num_rows($result) < 0) {
        $text = "Wachtwoord en/of gebruikersnaam onjuist. Probeer nogmaals.";
        die($text);
         }
          else{
        $uploaddir = "users/upload/";
        $uploadfile = basename($_FILES['foto']['name']);
        move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile);
        if (is_uploaded_file(".$uploadfile."))
           {
           die ("De afbeelding is geupload. Deze vindt je terug op http://www.pestforum.nl/users/upload/".$uploadfile."");
           }
            else{
            die ("Er is een fout opgetreden tijdens het uploaden");
                }
          } 
          
          }
?>


en daaronder dus het formulier.
Ik weet iig heel zeker dat deze regel wel klopt: die ("Er is een fout opgetreden tijdens het uploaden");

Want die krijg ik nu steeds in beeld
pi_29398095
kleintikkeltje moet ie worden gewijzigd:
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
<?php
    php
        
if(!empty($_POST)){
        include(
"pf.php");
        
$gebruiker = $_POST['gebruiker'];
        
$wachtwoord = md5($_POST['wachtwoord']);
        
$sql_query = "SELECT * FROM ibf_members WHERE name='".$gebruiker."' AND password='".$wachtwoord."'";
        
$result = mysql_query($sql_query);
         if(
mysql_num_rows($result) &lt; 0) {
        
$text = "Wachtwoord en/of gebruikersnaam onjuist. Probeer nogmaals.";
         }
          else{
        
$uploaddir = "users/upload/";
        
$uploadfile = basename($_FILES['foto']['name']);
        if (
is_uploaded_file(".$_FILES['foto']['tmp_name']."))
           {
move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile);
echo(
"De afbeelding is geupload. Deze vindt je terug op www.pestforum.nl/users/upload/".$uploadfile."");
           }
            else{
            echo (
"Er is een fout opgetreden tijdens het uploaden");
                }
          }
          
          }
?>


ik denk dat dat em is...
eff je url ingekort anders ging ie flippen
  Lieve Belg woensdag 3 augustus 2005 @ 17:48:38 #131
86282 Jump
[Belg.] Jump (de ~ (m.))
pi_29398511
Ik heb de linkjes in de OP een schone titel gegeven, en dus ook de WIKI pagina aangepast
Op zondag 28 oktober 2007 01:07 schreef clumsy_clown het volgende:
Jump daarentegen, is wáy minder braaf en lief dan hij lijkt
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; «shmoop|dingen» jawel, jij bent Superjump
pi_29398512
Deze laatste versie gaf weer een foutmelding...
if (is_uploaded_file(".$_FILES['foto']['tmp_name']."))
verandert in
if (is_uploaded_file($_FILES['foto']['tmp_name']))

en toen riep het ding dat mn bestand was geupload!

ik blij, ik kijken... geen bestand.. (ook geen foutmelding...)
pi_29398667
Overigens werkt nu ook de password controle niet meer? ik kan gewoon A B en C intikken, en dan krijg ik de melding dat afbeelding A is geupload

edit: Nadere inspectie: De bestanden zijn wél geupload. Ze staan alleen niet in de goede map Gister nacht trouwens ook al, maar toen met de goede map in de bestandsnaam (\users\upload\bestandsnaam.jpg als bestandsnaam)....

Hij spoort niet echt...

[ Bericht 45% gewijzigd door LeeHarveyOswald op 03-08-2005 18:04:14 ]
pi_29399078
Wachtwoord was logisch, <0 resultaten gebeurt niet zo vaak
  woensdag 3 augustus 2005 @ 18:51:55 #135
24399 TechXP
www.biteback.be
pi_29400166
Vanuit: [PHP/MySQL] Aantallen weergeven van een tabel

@autocue
quote:
Maar hier heb je dus het aantal voorkomen pér merk, het aantal geretourneerde rijen is dan het aantal unieke merken.
Ja dat is zo. Dan moet je die rijen weer optellen. Een count van aantal moet volgens mij dan lukken.
pi_29400329
quote:
Op woensdag 3 augustus 2005 18:51 schreef TechXP het volgende:
Vanuit: [PHP/MySQL] Aantallen weergeven van een tabel

@autocue
[..]

Ja dat is zo. Dan moet je die rijen weer optellen. Een count van aantal moet volgens mij dan lukken.
Jup, dat zou moeten lukken

1SELECT COUNT(DISTINCT merk) FROM autonaam

Deze werkt overigens ook goed en snel, de enige tip die ik nog kan geven is gebruik te maken van database abstractie. Door een tabel merk te gebruiken met daarin een ID en een merknaam kan je eenvoudig het aantal merken tellen [ SELECT COUNT(*) FROM merken ] en typfouten corrigeren voor alle merknamen.
  woensdag 3 augustus 2005 @ 19:07:00 #137
24399 TechXP
www.biteback.be
pi_29400569
Het laatste wat je zegt autocue is idd beter. Zo kan je alles ook apart in tabellen houden. Is ook wel wat makkelijker om goed overzicht te houden.
pi_29400889
Uit dit topic dat gesloten werd: [PHP/MySQL] Aantallen weergeven van een tabel

Ik heb een MySQL tabel en wat ik dus graag wil is dat alles opgeteld word uit 1 veld. Ook als er iets dubbel instaat moet hij dat mee tellen. Mocht er dus bijv 2x Fok! in staan moet hij dat dus ook 2x tellen. Inmiddels ben ik al een eind op weg, maar ik krijg het alleen niet voor elkaar om de aantallen weer te geven.

Ik heb tot nu toe deze code:

1
2
3
4
5
6
7
8
9
<?php
$res = mysql_query("SELECT COUNT(merk) as aantal FROM tabel GROUP BY merk");
while ($obj = mysql_fetch_object($res)) {
 ("
Aantal:$obj->aantal
");
}
mysql_free_result($res);
?>


Ik vermoed het dat zodra ik met de regel while begin alles in de soep loopt..
Maar zoals ik al zei ben ik een n00b met php en mysql

En "tabel" heb ik al gewijzigd in de juiste tabel naam. Heb even snel weer tabel genomen omdat de code de layout misschien verneukt.. [EDIT] Dat doet ie dus ook.. En argh, ik zie net dat ze al voor me verder zijn gegaan hier, ik druk typen en typen
pi_29400940
zul je op een andere field moeten counten dan de gene waarbij je grouped.

select count(id) as aantal from tabel group by merk.

-r-
  woensdag 3 augustus 2005 @ 19:21:30 #140
24399 TechXP
www.biteback.be
pi_29401018
Ok, dus dan hoeft group by niet, omdat je van bijvoorleed:
merk x
merk x
merky
merky
merkz
dus niet wilt:
Aantal merken: 3 maar gewoon aantal in totaal: 5?

Dan kan group by gewoon weg. En dan moet je gewoon COUNT(*) doen.

Wat zegt de foutmelding?
pi_29401107
quote:
Op woensdag 3 augustus 2005 19:21 schreef TechXP het volgende:
Ok, dus dan hoeft group by niet, omdat je van bijvoorleed:
merk x
merk x
merky
merky
merkz
dus niet wilt:
Aantal merken: 3 maar gewoon aantal in totaal: 5?

Dan kan group by gewoon weg. En dan moet je gewoon COUNT(*) doen.

Wat zegt de foutmelding?
Hij moet inderdaad alles tellen, dus 5 zoals in jouw voorbeeld

En wat betreft de foutmelding: ik krijg gewoonweg niks te zien op m`n scherm.
  woensdag 3 augustus 2005 @ 19:32:49 #142
24399 TechXP
www.biteback.be
pi_29401325
quote:
Op woensdag 3 augustus 2005 19:24 schreef The_Cyberspace het volgende:
En wat betreft de foutmelding: ik krijg gewoonweg niks te zien op m`n scherm.
Heb je PHPmyAdmin ofzo. Als je daar de query uitvoert, wat geeft die dan aan?

En heb je de query zo: select count(*) as aantal from tabel
?
Is er wel een database verbinding tot stand gekomen?
En doe eens zonder die while loop. Dus alleen $obj = mysql_fetch_object($res);

en wat is dit precies:
quote:
("
Aantal:$obj->aantal
");
Zo lijk je me niks te printen op het scherm. Tenzij dit een methode is die ik nog nooit gebruikt heb is?
echo "Aantal:". $obj->aantal;

Misschien is dat gewoon het probleem
pi_29401552
quote:
Op woensdag 3 augustus 2005 19:32 schreef TechXP het volgende:

[..]

Heb je PHPmyAdmin ofzo. Als je daar de query uitvoert, wat geeft die dan aan?

En heb je de query zo: select count(*) as aantal from tabel
?
Is er wel een database verbinding tot stand gekomen?
En doe eens zonder die while loop. Dus alleen $obj = mysql_fetch_object($res);

en wat is dit precies:
[..]

Zo lijk je me niks te printen op het scherm. Tenzij dit een methode is die ik nog nooit gebruikt heb is?
echo "Aantal:". $obj->aantal;

Misschien is dat gewoon het probleem
PHPmyAdmin geeft de query zonder problemen weer..
En er is een verbinding met de database
En als ik de while loop verander naar wat jij aangaf krijg ik nog niks op m`n scherm..

En over dat laatste... Dit heb ik uit een andere code wat wel goed werkt. Ik heb geen idee of dit standaard zo word gebruikt. Ik vermoed nu van nie.. maar ik was van mening van wel maar ik kan het mis hebben natuurlijk
  woensdag 3 augustus 2005 @ 20:00:41 #144
24399 TechXP
www.biteback.be
pi_29402237
quote:
Op woensdag 3 augustus 2005 19:40 schreef The_Cyberspace het volgende:
En over dat laatste... Dit heb ik uit een andere code wat wel goed werkt. Ik heb geen idee of dit standaard zo word gebruikt. Ik vermoed nu van nie.. maar ik was van mening van wel maar ik kan het mis hebben natuurlijk
Probeer het op de andere manier eens Dus met
1echo "aantal: ".$obj->aantal;


Die notatie kende ik niet. Maar php heeft wel meer manieren van iets op het scherm drukken dus... misschien was het iets wat ik nog niet wist
Maar ik gok dat het fout is
pi_29404015
zie onder

[ Bericht 99% gewijzigd door LeeHarveyOswald op 04-08-2005 12:40:52 ]
pi_29404190
quote:
Op woensdag 3 augustus 2005 20:00 schreef TechXP het volgende:

[..]

Probeer het op de andere manier eens Dus met
[ code verwijderd ]

Die notatie kende ik niet. Maar php heeft wel meer manieren van iets op het scherm drukken dus... misschien was het iets wat ik nog niet wist
Maar ik gok dat het fout is
Ik heb inmiddels deze code:

1
2
3
4
5
<?php
$res = mysql_query("SELECT COUNT(*) as aantal FROM autonamenboek");
echo "Aantal:".$obj->aantal; {
}
?>


En ik krijg alleen Aantal: in beeld te zien...
pi_29404615
1
2
3
4
5
<?php
$res = mysql_query("SELECT COUNT(*) as aantal FROM autonamenboek");
$obj = mysql_fetch_object($res);
echo "Aantal:".$obj->aantal; 
?>

Dit werkt al beter denk ik...
pi_29404924
quote:
Op woensdag 3 augustus 2005 21:07 schreef ikke_ook het volgende:

[ code verwijderd ]

Dit werkt al beter denk ik...
JA! het werkt

$obj = mysql_fetch_object($res); <- had ik over het hoofd gezien... margoed, ik heb ook al tig verschillende dingen geprobeerd dus zie wel eens wat over het hoofd...
pi_29421485
quote:
Op woensdag 3 augustus 2005 17:54 schreef LeeHarveyOswald het volgende:
Overigens werkt nu ook de password controle niet meer? ik kan gewoon A B en C intikken, en dan krijg ik de melding dat afbeelding A is geupload

edit: Nadere inspectie: De bestanden zijn wél geupload. Ze staan alleen niet in de goede map Gister nacht trouwens ook al, maar toen met de goede map in de bestandsnaam (\users\upload\bestandsnaam.jpg als bestandsnaam)....

Hij spoort niet echt...
Nu doettie et weer niet :S ik krijg de volgende foutmelding:
quote:
Warning: move_uploaded_file(/users/upload/Abstract.JPG): failed to open stream: No such file or directory in /usr/home/jeroen/www/upload.php on line 17

Warning: move_uploaded_file(): Unable to move '/var/tmp/phplcb0K5' to '/users/upload/Abstract.JPG' in /usr/home/jeroen/www/upload.php on line 17
De afbeelding is geupload. Deze vindt je terug op http://www.pestforum.nl/users/upload//users/upload/Abstract.JPG
Deze code gebruik ik nu:

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
<?php
        php
        
if(!empty($_POST)){
        include(
"pf.php");
        
$gebruiker = $_POST['gebruiker'];
        
$wachtwoord = md5($_POST['wachtwoord']);
        
$sql_query = "SELECT * FROM ibf_members WHERE name='".$gebruiker."' AND password='".$wachtwoord."'";
        
$result = mysql_query($sql_query);
         if(
mysql_num_rows($result) &lt; 1) {
        
$text = "Wachtwoord en/of gebruikersnaam onjuist. Probeer nogmaals.";
        die(
$text);
         }
          else{
        
$uploaddir = "/users/upload/";
        
$uploadfile = $uploaddir.basename($_FILES['foto']['name']);
        if (
is_uploaded_file($_FILES['foto']['tmp_name']))
           {
           
move_uploaded_file($_FILES['foto']['tmp_name'],$uploadfile);
           die (
"De afbeelding is geupload. Deze vindt je terug op http://www.pestforum.nl/users/upload/" color="#007700">.
$uploadfile."");
           }
            else{
            die (
"Er is een fout opgetreden tijdens het uploaden");
                }
          }
          
          }
?>


Help!
pi_29427597
Klopt het pad wel waar je naar wil schrijven?
Je kunt met is_writable($uploadfile) controleren of je het bestand wel kan verplaatsen naar die nieuwe filename.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  donderdag 4 augustus 2005 @ 19:04:00 #151
32768 DionysuZ
Respect my authority!
pi_29427789
en heb je wel de goede rechten toegekend aan de dir? chmod wil soms nog wel es helpen
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_29431526
Hij kon zelfs in de root folder wegschrijven.. lijkt me dus van wel..
  vrijdag 5 augustus 2005 @ 11:18:13 #153
42000 HaKeeM
"Want zo is het ook."
pi_29441737
Ik wil graag op 1 pagina bewerkingen doen op twee databases (op dezelfde host). Met mijn connect_inc.php file waarin ik de database aanroep heb ik tot nu toe gewerkt met 1 database per keer. Ik wil dit nu graag met twee databases. Ik weet dat je in je query kan werken met
databasenaam.tabelnaam om het onderscheid in je query's aan te geven maar hoe open je een connectie met twee databases tegelijk.

Mijn single database connect_inc.php ziet er zo uit:

1
2
3
4
5
6
7
8
9
<?
$host = "hostip";
$Username = "username";
$Password = "WaChTwOoRd";
$Database = "databasenaam";

mysql_connect("$host","$Username","$Password") or die (mysql_error());
mysql_select_db("$Database") or die ("Database connection failed!");
?>
iMac G5 20"
2,1 GHz PowerPC G5
pi_29442703
Mijn broertje is op vakantie en ik heb totaal geen verstand van PHP.
Maar nu krijg ik op het forum van onze site het de volgende melding.

Notice: Only variables should be assigned by reference in /home/xxx.com/forum/Sources/Subs.php on line 232

Notice: Undefined index: is_admin in /home/xxx.com/forum/Sources/Security.php on line 556

Notice: Undefined index: permissions in /home/xxx.com/forum/Sources/Security.php on line 563

Warning: in_array(): Wrong datatype for second argument in /home/xxx.com/forum/Sources/Security.php on line 563
session_start(): Cannot send session cookie - headers already sent by (output started at /home/xxx.com/forum/Sources/Subs.php:232)


Wat moet ik veranderen? Of wat is er aan de hand?
Alvast bedankt
Leverancier van www.autogespot.nl
pi_29443597
Ik ben bang dat wij weinig kunnen met deze foutmeldingen. Heb je recentelijk iets veranderd? Of je broertje, voor hij weg ging?
pi_29444011
Nee helemaal nix

Ik ben vanochtend nog online geweest op het forum.

Maar goed boeie we zien wel verder
Leverancier van www.autogespot.nl
  vrijdag 5 augustus 2005 @ 14:52:31 #157
16228 Postman_Pat
I've got mail for U
pi_29444778
--------------------------------------------------------------------------------

Hallo..

ik heb onderstaand scriptje...

<?
$sSql = mysql_query("SELECT
ROUND(SUM(`Doelpunten`) / SUM('AanwezigWinst'),2) AS `gemiddeld`
FROM `speler2005` LIMIT 0,1") or die(mysql_error());
$sRow = mysql_fetch_assoc($sSql);
echo 'Gemiddeld aantal doelpunten per wedstrijd is '.$sRow['gemiddeld'].'.<br />';
?>

Aantal doelpunten is 4, en AanwezigWinst is 3. Gemiddeld is dat dus 1.33 per gespeelde wedstrijd.

Dit gaf de pagina de eerste paar keer wel aan, maar nu houdt de pagina op na "doelpunten per wedstrijd is "

Hoe kan dit?


En als ik

SUM('AanwezigWinst'+'AanwezigVerlies'+'AanwezigGelijk')

toevoeg, rekent ie alleen maar met AanwezigWinst (zolang het duurt/zichtbaar is op de pagina)
[url=http://www.wip-inn.nl]WIP-INN[/url] [url=http://www.dekanientjes.nl]De Kanientjes[/url]
  FOK!-Schrikkelbaas vrijdag 5 augustus 2005 @ 16:35:12 #158
1972 Swetsenegger
Egocentrische Narcist
pi_29446377
1
2
3
<?php
$text
=preg_replace('#<table>(.*?)</table>#i','',$originele_text);
?>


Doet dit wat ik denk dat het doet, namelijk alles vanaf <table> tot </table> weghalen?
pi_29448496
quote:
Op vrijdag 5 augustus 2005 11:18 schreef HaKeeM het volgende:
Ik weet dat je in je query kan werken met
databasenaam.tabelnaam om het onderscheid in je query's aan te geven
Dat kan niet in MySql. Je kan dus ook geen query maken die over meerdere databases gaan.
quote:
maar hoe open je een connectie met twee databases tegelijk.
Als je query's op meerdere databases uit wil voeren dan moet je per database een verbinding maken. Bij mysql_connect moet je de parameter new_link = true opgeven. Bij elke query die je uitvoert moet je opgeven welke verbinding gebruikt moet worden.

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
// Config
$db1 = array(
   'server' => 'localhost',
   'username' => 'sa',
   'password' => '******',
   'database' => 'test1'
);
$db2 = array(
   'server' => 'localhost',
   'username' => 'sa',
   'password' => '******',
   'database' => 'test2'
);

// Open connections
$conn1 = mysql_connect($db1['server'], $db1['username'], $db1['password'], true);
if (!$conn1) { die('Error: could not connect to server.'); }
mysql_selectdb($db1['database']);

$conn2 = mysql_connect($db2['server'], $db2['username'], $db2['password'], true);
if (!$conn2) { die('Error: could not connect to server.'); }
mysql_selectdb($db2['database']);

// Execute queries
$sql1 = 'SELECT * FROM table1';
$result1 = mysql_query($sql1, $conn1);
if (!$result1) { die('Error: could not execute query.'); }

$sql2 = 'SELECT * FROM table2';
$result2 = mysql_query($sql2, $conn2);
if (!$result2) { die('Error: could not execute query.'); }
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_29448619
quote:
Op vrijdag 5 augustus 2005 16:35 schreef Swetsenegger het volgende:

[ code verwijderd ]

Doet dit wat ik denk dat het doet, namelijk alles vanaf <table> tot </table> weghalen?
Als <table> en </table> op dezelfde regel staan. Anders even de s modifier toevoegen. Dan matcht de punt elk teken, inclusief een newline.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_29448735
quote:
Op vrijdag 5 augustus 2005 14:52 schreef Postman_Pat het volgende:
...
1SUM('AanwezigWinst')

moet zijn

1SUM(`AanwezigWinst`)


Zoek de verschillen
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas vrijdag 5 augustus 2005 @ 19:01:41 #162
1972 Swetsenegger
Egocentrische Narcist
pi_29448956
quote:
Op vrijdag 5 augustus 2005 18:41 schreef SuperRembo het volgende:

[..]

Als <table> en </table> op dezelfde regel staan. Anders even de s modifier toevoegen. Dan matcht de punt elk teken, inclusief een newline.
1
2
3
<?php
$text
=preg_replace('#<table>(.*?)</table>#is','',$originele_text);
?>


Ik had deze met een beetje nadenken kunnen herleiden aan de hand van jouw url parser (waarvoor nog steeds dank ). Maar.... wat doet de #? Ik vind die niet terug in tuts

[ Bericht 6% gewijzigd door Swetsenegger op 05-08-2005 19:15:26 ]
pi_29449765
De #jes zijn de scheidingstekens van de regexp. Standaard is het een /, maar je mag er allerlei tekens voor gebruiken: /foo/, #foo# en <foo> doen hetzelfde. Als je een scheidingsteken in het patroon zelf wil gebruiken dan moet je die wel escapen met een \.

1
2
3
4
#<table>(.*?)</table>#is
/<table>(.*?)<\/table>/is
<\<table\>(.*?)\</table\>>is
{<table>(.*?)</table>}is

Het hangt dus een beetje van het patroon af wat het handigste scheidingsteken is.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zaterdag 6 augustus 2005 @ 14:40:53 #164
1972 Swetsenegger
Egocentrische Narcist
pi_29466189
Het blijft me maar bezig houden...: OOP

Ik kom maar geen goede tutorial tegen welke me de fineses van OOP goed uitlegt. Tot op heden zie ik het meer als een uitgebreide functie, maar er zal best meer achter zitten .

Het kwartje wil dus maar niet vallen, en ik blijf op zoek naar goede heldere stap voor stap documentatie met duidelijke en nuttige voorbeelden. Dit mag bv ook een boek zijn (graag zelfs) welke OOP in PHP 4 en 5 helder beschrijft.

Iederen met tips voor nederlandstalig online tutorials of duidelijke boeken, ik hou me aanbevolen.
En nederlands omdat wanneer ik de techniek opzich niet begrijp, me ook nog niet druk wil maken of ik de vertaling wel juist interpreteer
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 16:47:57 #165
1972 Swetsenegger
Egocentrische Narcist
pi_29488036
Dan maar gewoon beginnen met OOP, al doende leert men

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class Database
{
    var $host;
    var $user;
    var $pass;
    var $database;

    // constructor
    function Database()
    {
        // initialiseer hier bepaalde gegevens
        $this->host = 'localhost';
        $this->user = 'mijnveelgebruikteusername';
        $this->pass = 'mijnveelgebruiktepassword';
    }

    // functie om de host te bepalen
    function Sethost($host)
    {
        $this->host = $host;
    }

    // functie om de user te bepalen
    function Setuser($user)
    {
        $this->user = $user;
    }

    // functie om de pass te bepalen
    function Setpass($pass)
    {
        $this->pass = $pass;
    }

    // functie om de database te bepalen
    function Setdatabase($database)
    {
        $this->database = $database;
    }
    
    // verbind met database
    function Connectdb()
    if($dbc=@mysql_connect($this->host,$this->user,$this->pass)){

                if(!@mysql_select_db($this->database)){
                die('<p>Database niet te selecteren omdat: '.mysql_error().'</p>');
                }

        }else{
        die('<p>Niet verbonden wegens '.mysql_error().'</p>');
        }
}


Volgens mij is dit een werkende klasse, correct?
En die kan ik zou aanroepen?

1
2
3
4
5
$db= new Database;
$db->Setuser ('newuser');
$db->Setpass ('newpass');
$db->Setdatabase ('newdb');
$db->Connectdb ();


Indien correct (:P), wat is dan nu het grote voordeel van een klasse boven een functie.
Ik kan natuurlijk ook gewoon dit doen:

1
2
3
4
5
6
7
<?php
function ConnectDB ($host,$user,$pass,$database){
//database connectie maken
}

ConnectDB('mijnhost','mijnuser','mijnpass','mijndatabase');
?>


Wanneer wordt die highlighter bug nu eens gefixed

[ Bericht 21% gewijzigd door Swetsenegger op 07-08-2005 16:57:38 ]
pi_29488155
Overigens doet mijn upload script het nu, stonden oa. wat slashes verkeerd.
Als iemand de code wilt hebben kan ik het hier wel posten.

Alleen wil ik nog 1 ding er aan toevoegen: Hoe kan ik controlleren of een bestand al bestaat? Anders worden bestanden gewoon overschreven
pi_29488306
quote:
Op zaterdag 6 augustus 2005 14:40 schreef Swetsenegger het volgende:
Het blijft me maar bezig houden...: OOP

Ik kom maar geen goede tutorial tegen welke me de fineses van OOP goed uitlegt. Tot op heden zie ik het meer als een uitgebreide functie, maar er zal best meer achter zitten .

Het kwartje wil dus maar niet vallen, en ik blijf op zoek naar goede heldere stap voor stap documentatie met duidelijke en nuttige voorbeelden. Dit mag bv ook een boek zijn (graag zelfs) welke OOP in PHP 4 en 5 helder beschrijft.

Iederen met tips voor nederlandstalig online tutorials of duidelijke boeken, ik hou me aanbevolen.
En nederlands omdat wanneer ik de techniek opzich niet begrijp, me ook nog niet druk wil maken of ik de vertaling wel juist interpreteer
ik ken dat probleem

maar OOP is , vind ik, eigenlijk een heel omslachtige manier om dingen te laten uitvoeren
volgens mij wilde ze gewoon iets hebben dat altijd een standaard opbouw had en hebben ze daarom OOP gekozen
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 17:16:14 #168
1972 Swetsenegger
Egocentrische Narcist
pi_29488450
quote:
Op zondag 7 augustus 2005 17:06 schreef mschol het volgende:

[..]

ik ken dat probleem

maar OOP is , vind ik, eigenlijk een heel omslachtige manier om dingen te laten uitvoeren
volgens mij wilde ze gewoon iets hebben dat altijd een standaard opbouw had en hebben ze daarom OOP gekozen
Ja, zoiets heb ik ook. Een klasse ziet eruit als een verzameling functies. Dan kan ik net zo goed... een verzameling functies aanleggen

Er MOET meer achter zitten
pi_29488637
Ik zie het gewoon als een logische verzameling functies. Met als leuk voordeel dat je in je code maar 1 naam gebruikt en alles daarachter verstopt zit. Je hebt bijvoorbeeld een variabele $db voor je database-klasse. En verschillende variabelen en functies die iets met een database te maken hebben. Zo heb je in die klasse een variabele "user". En ook in je code mag je gewoon "user" blijven gebruiken, zonder dat je conflicten krijgt
pi_29488901
quote:
Op zondag 7 augustus 2005 16:47 schreef Swetsenegger het volgende:
Dan maar gewoon beginnen met OOP, al doende leert men
[ code verwijderd ]

Volgens mij is dit een werkende klasse, correct?
En die kan ik zou aanroepen?
[ code verwijderd ]

Indien correct (:P), wat is dan nu het grote voordeel van een klasse boven een functie.
Ik kan natuurlijk ook gewoon dit doen:
[ code verwijderd ]
Je kunt het ook iets anders doen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Database
{
    var $host;
    var $user;
    var $database;

    // constructor
    function Database($host, $user, $pass, $database)
    {
        // initialiseer hier bepaalde gegevens
        $this->host = $host;
        $this->user = $user;
        $this->database = $database;

        if( @mysql_connect($this->host, $this->user, $pass) ) {
            if(! @mysql_select_db($this->database)) {
                die('<p>Database niet te selecteren omdat: '.mysql_error().'</p>');
            }
        } else {
            die('<p>Niet verbonden wegens '.mysql_error().'</p>');
        }
    }
}

Merk op dat ik $pass nergens opsla. Als je dan eens een print_r($db) gebruikt blijft het wachtwoord iig verborgen. En zo kun je in 1 keer verbinding maken:
1$db = new Database('mijnhost', 'mijnuser', 'mijnpass', 'mijndb');

Je kunt je Database-klasse ook meer laten doen dan alleen het maken van een verbinding. Denk aan het tellen van queries, en bijhouden hoe lang de queries duren. Dan heeft zo'n klasse echt meerwaarde boven de standaard mysql_ functies. En het zijn dingen die een query-functie er wel bij kan doen.
pi_29488997
Al die properties helemaal uitschrijven met setters en getters daar heb je in php4 niet zo veel aan. Je hebt geen onderscheid in private en public members.

Het voordeel van classes is dat je functies en variabelen bij elkaar houdt. Je maakt bijvoorbeeld een database class die zelf de connectie bevat. Je kan dan dezelfde class gebruiken om met verschillende databases te connecten zonder dat je connecties door elkaar raken.
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 7 augustus 2005 @ 19:11:58 #172
1972 Swetsenegger
Egocentrische Narcist
pi_29490027
quote:
Op zondag 7 augustus 2005 17:51 schreef Light het volgende:

[..]

Je kunt het ook iets anders doen
[ code verwijderd ]

Merk op dat ik $pass nergens opsla. Als je dan eens een print_r($db) gebruikt blijft het wachtwoord iig verborgen. En zo kun je in 1 keer verbinding maken:
[ code verwijderd ]

Je kunt je Database-klasse ook meer laten doen dan alleen het maken van een verbinding. Denk aan het tellen van queries, en bijhouden hoe lang de queries duren. Dan heeft zo'n klasse echt meerwaarde boven de standaard mysql_ functies. En het zijn dingen die een query-functie er wel bij kan doen.
Die is wel netjes inderdaad. Maar kan ik hier nu ook zorgen dat de host al gedeclareerd is naar localhost, en indien nodig ik deze kan overschrijven?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Database
{
    var $host;
    var $user;
    var $database;

    // constructor
    function Database($host, $user, $pass, $database)
    {
        // initialiseer hier bepaalde gegevens
        $this->host='localhost';
        $this->host = $host;
        $this->user = $user;
        $this->database = $database;

        if( @mysql_connect($this->host, $this->user, $pass) ) {
            if(! @mysql_select_db($this->database)) {
                die('<p>Database niet te selecteren omdat: '.mysql_error().'</p>');
            }
        } else {
            die('<p>Niet verbonden wegens '.mysql_error().'</p>');
        }
    }
}


en dan zo aanroepen

1$db= new Database('mijnuser','mijnpass','mijndb');


Het voordeel is dus behalve dat het misschien wat netter en overzichtelijker is, dat ik mijn variabelen bij de 'functie' hou. Geen risico op overschrijven zeg maar?
quote:
Al die properties helemaal uitschrijven met setters en getters daar heb je in php4 niet zo veel aan. Je hebt geen onderscheid in private en public members.
...members... tuurlijk.
pi_29490765
Je hebt dan ook OOP puur voor het gemak van objecten, of OOP als vorm van namespacing (oftewel, classes als functielibraries).

Het voordeel van OOP komt pas als je gaat overerven en echt met objecten aan de gang gaat.

De genoemde database class is bijvoorbeeld ietwat simplistisch. In de object attributen zou je bijvoorbeeld de link identifier moeten opslaan en deze consequent gebruiken bij alle methoden. Dan kan je namelijk op eenvoudige manier een connectie onderhouden met twee mysql servers, dmv twee verschillende db-objecten. Zoals het nu in elkaar zit kan dat niet, en is er geen meerwaarde tov een serie platte functies.
pi_29490802
quote:
Op zondag 7 augustus 2005 19:11 schreef Swetsenegger het volgende:

[..]

Die is wel netjes inderdaad. Maar kan ik hier nu ook zorgen dat de host al gedeclareerd is naar localhost, en indien nodig ik deze kan overschrijven?
Uiteraard kan dat
1function Database($user, $pass, $database, $host='localhost')

Let wel op de gewijzigde volgorde van de argumenten Als je localhost wilt gebruiken dan geef je gewoon maar 3 argumenten.
quote:
Het voordeel is dus behalve dat het misschien wat netter en overzichtelijker is, dat ik mijn variabelen bij de 'functie' hou. Geen risico op overschrijven zeg maar?
[..]
Dat vind ik iig een voordeel Zo'n klasse is in principe volledig los van de andere code te maken.
quote:
...members... tuurlijk.
Functies en variabelen. Talen die meer OO zijn kennen public en private members. Van private members is buiten de class het bestaan niet eens te zien. Dat kan in PHP niet, daar zijn alle functies en variabelen van buitenaf te zien en aan te spreken.
pi_29490818
members is de verkeerde naam voor attributen gok ik zo.
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 20:14:37 #176
1972 Swetsenegger
Egocentrische Narcist
pi_29490884
quote:
Op zondag 7 augustus 2005 20:09 schreef Light het volgende:

[..]

Uiteraard kan dat
[ code verwijderd ]

Let wel op de gewijzigde volgorde van de argumenten Als je localhost wilt gebruiken dan geef je gewoon maar 3 argumenten.
dus het voorbeeld wat ik gaf werkt niet?
pi_29490902
quote:
Op zondag 7 augustus 2005 20:10 schreef Roönaän het volgende:
members is de verkeerde naam voor attributen gok ik zo.
In java wordt de term members gebruikt. Hoe dat is in andere OO-talen weet ik niet.
pi_29490943
hmz. waarom ziet de textonlylayout er zo ongelovelijk brak uit
pi_29490967
quote:
Op zondag 7 augustus 2005 20:14 schreef Swetsenegger het volgende:

[..]

dus het voorbeeld wat ik gaf werkt niet?
Je gaat een variabele 2 keer toewijzen, resultaat is dat de eerste eigenlijk wel weg kan. Je kunt wel iets doen dat als je een lege string opgeeft voor $host, dat dan localhost gebruikt wordt. Als je een variabele wilt weglaten dan moet het de laatste zijn.
pi_29491010
quote:
Op zondag 7 augustus 2005 20:10 schreef Roönaän het volgende:
members is de verkeerde naam voor attributen gok ik zo.
Oh kut het is ook nooit goed.
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 7 augustus 2005 @ 20:43:47 #181
1972 Swetsenegger
Egocentrische Narcist
pi_29491317
quote:
Op zondag 7 augustus 2005 20:20 schreef Light het volgende:

[..]

Je gaat een variabele 2 keer toewijzen, resultaat is dat de eerste eigenlijk wel weg kan. Je kunt wel iets doen dat als je een lege string opgeeft voor $host, dat dan localhost gebruikt wordt. Als je een variabele wilt weglaten dan moet het de laatste zijn.
Ok, dan is wat jij zei een stuk mooier
Nu eens kijken wat ik allemaal in classes kan gaan proppen.
pi_29491388
Swets, kijk anders eens naar de PEAR libraries, dat zijn ook allemaal classes over het algemeen.

http://pear.php.net
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 21:08:00 #183
1972 Swetsenegger
Egocentrische Narcist
pi_29491631
quote:
Op zondag 7 augustus 2005 20:04 schreef Roönaän het volgende:
De genoemde database class is bijvoorbeeld ietwat simplistisch. In de object attributen zou je bijvoorbeeld de link identifier moeten opslaan en deze consequent gebruiken bij alle methoden. Dan kan je namelijk op eenvoudige manier een connectie onderhouden met twee mysql servers, dmv twee verschillende db-objecten.
Ok, maar hoe neem ik de link-identifier op in mijn object?
Die krijg je toch pas terug op het moment dat je een verbinding maakt?

Ik heb een database class gevonden, welke het wel doet. Ik moet 'm alleen ff goed bestuderen. (overigens wordt wel duidelijk dat de link identifier door de claas wordt terug gegeven, maar niet hoe ik 'm in mijn object opneem (heet dat een method trouwens?))

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
function Connect($sHost = '', $sDatabase = '', $sUser = '', $sPassword = '')
    {
        $this->sHost = $sHost;
        $this->sDatabase = $sDatabase;
        $this->sUser = $sUser;
        $this->sPassword = $sPassword;

        // Establish connection and select database.
        if (! $this->iConnectionID)
        {
            $this->iConnectionID = @mysql_connect($this->sHost, $this->sUser, $this->sPassword);

            if (!$this->iConnectionID)
            {
                $this->iErrorNr = @mysql_errno($this->iConnectionID);
                $this->sError = @mysql_error($this->iConnectionID);
                $this->Error("No connection with host: " . $this->sHost);
                return 0;
            }

            if (!@mysql_select_db($this->sDatabase,$this->iConnectionID))
            {
                $this->iErrorNr = @mysql_errno($this->iConnectionID);
                $this->sError = @mysql_error($this->iConnectionID);
                $this->Error("No connection with database: " . $this->sDatabase);
                $this->Disconnect();
                return 0;
            }
        }

        return $this->iConnectionID;
    }


[ Bericht 2% gewijzigd door Swetsenegger op 07-08-2005 21:17:20 ]
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 21:15:53 #184
1972 Swetsenegger
Egocentrische Narcist
pi_29491758
quote:
Op zondag 7 augustus 2005 20:49 schreef Roönaän het volgende:
Swets, kijk anders eens naar de PEAR libraries, dat zijn ook allemaal classes over het algemeen.

http://pear.php.net
Dat ga ik zeker doen (had al een en ander over PEAR gehoord, dacht eerst dat het een 'extra' pakket binnen php was, zoals GD2), maar ik wil het bergijpen zeg maar.

Daarna ga ik wel geoptimaliseerde code van anderen gebruiken welke het nog beter begrijpen dan mij
pi_29491832
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
class Database
{
    var $host;
    var $user;
    var $database;
    var $link;
    var $queries[];

    // constructor
    function Database($user, $pass, $database, $host='localhost')
    {
        // initialiseer hier bepaalde gegevens
        $this->host = $host;
        $this->user = $user;
        $this->database = $database;

        if( @mysql_connect($this->host, $this->user, $pass) ) {
            if(! ($this->link=mysql_select_db($this->database))) {
                die('<p>Database niet te selecteren omdat: '.mysql_error().'</p>');
            }
        } else {
            die('<p>Niet verbonden wegens '.mysql_error().'</p>');
        }
    }

    function query($query) {
        $this->queries[] = $query;
        $result = mysql_query($query, $this->link);
        return $result;
}

Zo is het nog steeds een hele simpele class, maar hij gebruikt wel de link identifier. Die wordt automatisch iedere keer door de functie query gebruikt. Uiteraard kan die functie nog veel meer doen tijdens voor en na het uitvoeren van de query. Vandaar ook dat ik $result gebruik als tussenstap
pi_29491838
Pear is zeg maar een soort giant include library.

Opgedeeld in categorien. in pear_auth zitten authorization libraries van verschillende soorten, pear_html bevat allemaal html ongein, pear_db bevat database abstraction stuff. Belangrijkste van de libs, is dat je "standaard" oplossingen gebruikt.
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 21:44:53 #187
1972 Swetsenegger
Egocentrische Narcist
pi_29492214
quote:
Op zondag 7 augustus 2005 21:21 schreef Light het volgende:

[ code verwijderd ]

Zo is het nog steeds een hele simpele class, maar hij gebruikt wel de link identifier. Die wordt automatisch iedere keer door de functie query gebruikt. Uiteraard kan die functie nog veel meer doen tijdens voor en na het uitvoeren van de query. Vandaar ook dat ik $result gebruik als tussenstap
stoer, ik was even vergeten dat je de link identifier optioneel kon meegeven met mysql_query (al mijn projecten hebben maar 1 DB. De hoster biedt er ook niet meer per pakket )
Alleen betekent dit wel dat ik met veel queries een enorme array $query krijg.

-edit- o nee, alleen als ik een nieuwe DB connectie maak

[ Bericht 6% gewijzigd door Swetsenegger op 07-08-2005 21:50:02 ]
pi_29492323
quote:
Op zondag 7 augustus 2005 21:44 schreef Swetsenegger het volgende:

[..]

stoer, ik was even vergeten dat je de link identifier optioneel kon meegeven met mysql_query.
Alleen betekent dit wel dat ik met veel queries een enorme array $query krijg.

-edit- o nee, alleen als ik een nieuwe DB connectie maak
Je krijgt een array die bijvoorbeeld via $db->queries[] te benaderen is. Die beval alle uitgevoerde queries. En je kunt er nog meer bijzetten, zoals de tijd die nodig was voor het uitvoeren en de mysql foutcode. Dan kun je ook nagaan waar je verder kunt optimaliseren, om eens een zijstraat te noemen.
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 21:52:56 #189
1972 Swetsenegger
Egocentrische Narcist
pi_29492334
Pas dit eigenlijk nog wel in PHP voor dummies?
En nog een side remark. Ondersteunt GD2 nu wel of niet .gif files?
  FOK!-Schrikkelbaas zondag 7 augustus 2005 @ 22:01:34 #190
1972 Swetsenegger
Egocentrische Narcist
pi_29492463
quote:
Op zondag 7 augustus 2005 21:52 schreef Light het volgende:

[..]

Je krijgt een array die bijvoorbeeld via $db->queries[] te benaderen is. Die beval alle uitgevoerde queries. En je kunt er nog meer bijzetten, zoals de tijd die nodig was voor het uitvoeren en de mysql foutcode. Dan kun je ook nagaan waar je verder kunt optimaliseren, om eens een zijstraat te noemen.
Ja, hij zet dus wel elke query in een array.
Hmz. Nou het begint een beetje te dagen. Toch ben ik nog steeds op zoek naar goede documentatie
pi_29498651
Om het netjes te houden zou je nog een getQueryHistory methode kunnen aanmaken die de queries array teruggeeft. Je zou dan zelfs kunnen filteren op query-type (insert/delete/update/select).
pi_29498875
quote:
Op zondag 7 augustus 2005 21:52 schreef Swetsenegger het volgende:
En nog een side remark. Ondersteunt GD2 nu wel of niet .gif files?
Het lezen van gifs is er nooit uit geweest. Het maken van gifs zit er sinds vorig jaar weer in
Je kunt alleen geen animated gifjes maken met imagegif().
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_29502596
Hey allemaal..

Ik ben bezig met een script dat een stuk tekst moet doorzoeken op bepaalde tekens... om deze te veranderen in iets anders.

Normaal zou ik dat doen met de functie str_replace, maar ik vraag mij af of het makkelijker kan.

Bijv:

$text = "Dit is een ===Titel=== en die titel kan ook minder ==groot==\nDit is een ===Titel=== en die titel kan ook minder ==groot==\n";

Stel ik wil alles tussen de === tekens vervangen door een <h1> en een </h1> en alles tussen een == vervangen door <h2> en </h2>.

Hoe zouden jullie het zo effectief mogelijk in elkaar zetten?
www.piccas.nl duizenden foto's van bekende celebs en de mogelijkheid om zelf over ze te schrijven!!!
***Get famous - Describe the famous***
pi_29503854
quote:
Dat geeft inderdaad 1 deel(het makkelijkste) van het vraagstuk weer.. maar nu nog hoe je de ene keer de ene en de andere keer een andere vervanging moet doen... zoals bijv in:


1 ABC 2 ABC 3 ABC 4 ABC

wordt

1 <B> 2 </B> 3 <B> 4 </B>
www.piccas.nl duizenden foto's van bekende celebs en de mogelijkheid om zelf over ze te schrijven!!!
***Get famous - Describe the famous***
pi_29504995
1
2
3
4
5
6
$text = "=== groot === ==kleiner== =nog kleiner= normaal";
$text = ereg_replace('===(.*)===','<h1>\\1</h1>',$text);   
$text = ereg_replace('==(.*)==','<h2>\\1</h2>',$text);   
$text = ereg_replace('=(.*)=','<h3>\\1</h3>',$text);   

echo $text;


Dat lijkt wel te werken

-edit- regexp zijn niet mijn ding
-edit2- okay, dit werkt niet. als er meer dan 1x een match inzit fropt het. wie verbetert het even?

[ Bericht 11% gewijzigd door Nevermind op 08-08-2005 18:11:26 ]
pi_29505053
Ik zou voor reguliere expressies toch de code-tag gebruiken en niet de php-tag. Voor de leesbaarheid enzo
pi_29505918
quote:
Op maandag 8 augustus 2005 18:00 schreef Nevermind het volgende:

[ code verwijderd ]
-edit2- okay, dit werkt niet. als er meer dan 1x een match inzit fropt het. wie verbetert het even?
Dat komt doordat ereg_replace "greedy" is. Met preg_replace kan je het "greedy" gedrag van het * veranderen in "non-greedy" door er een ? achter te zetten:

1
2
3
4
5
$text = "=== groot === ==kleiner== ==kleiner== =nog kleiner= normaal";
$text = preg_replace('/===(.*?)===/', '<h1>\\1</h1>', $text);   
$text = preg_replace('/==(.*?)==/', '<h2>\\1</h2>', $text);   
$text = preg_replace('/=(.*?)=/', '<h3>\\1</h3>', $text);   
echo $text;
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas maandag 8 augustus 2005 @ 19:01:46 #199
1972 Swetsenegger
Egocentrische Narcist
pi_29505921
1
2
3
4
5
6
7
8
<?php
$text
= "===groot=== ==kleiner== =nog kleiner= normaal";
$text = preg_replace('#[=]{3}(.*)[=]{3}#','<h1>\\1</h1>',$text);
$text = preg_replace('#[=]{2}(.*)[=]{2}#','<h2>\\1</h2>',$text);
$text = preg_replace('#[=]{1}(.*)[=]{1}#','<h3>\\1</h3>',$text);

echo
$text;
?>
  FOK!-Schrikkelbaas maandag 8 augustus 2005 @ 19:05:24 #200
1972 Swetsenegger
Egocentrische Narcist
pi_29505980
quote:
Op maandag 8 augustus 2005 19:01 schreef SuperRembo het volgende:

[..]

Dat komt doordat ereg_replace "greedy" is. Met preg_replace kan je het "greedy" gedrag van het * veranderen in "non-greedy" door er een ? achter te zetten:
[ code verwijderd ]

Die zocht ik, die van mij was ook nog greedy
  FOK!-Schrikkelbaas maandag 8 augustus 2005 @ 21:29:07 #201
1972 Swetsenegger
Egocentrische Narcist
pi_29506530
1
2
3
4
5
6
7
<?php
$text
= "=nog kleiner= normaal ==kleiner== ===groot=== ==kleiner== =nog kleiner= normaal ===groot=== ====groot====";
$text = preg_replace('/===([^=<].*?)===/', '<h1>\\1</h1>', $text);
$text = preg_replace('/==([^=<].+?)=={1}/', '<h2>\\1</h2>', $text);
$text = preg_replace('/=([^=<].+?)=/', '<h3>\\1</h3>', $text);
echo
$text;
?>
pi_29507069
Zo dan
Matched wel =een=, ==twee== en ===drie===, maar niet =eentwee==, ====vier==== of ====.

1
2
3
$text = preg_replace('/(?<!=)===([^=]+?)===(?!=)/', '<h1>$1</h1>', $text);
$text = preg_replace('/(?<!=)==([^=]+?)==(?!=)/', '<h2>$1</h2>', $text);
$text = preg_replace('/(?<!=)=([^=]+?)=(?!=)/', '<h3>$1</h3>', $text);
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')