abonnement Unibet Coolblue Bitvavo
pi_33108699
ff een apache-vraagje...

Mijn server geeft diverse bestanden niet weer. html-bestanden (geen ramp aangezien ik het alleen als php-server gebruik) maar ook geen afbeeldingen, en dat is een groter probleem... Enige afbeeldingsoort wat hij weergeeft is png...tenminste nog iets...

Kan het zijn dat mijn php.ini verkeerd is afgesteld? Het is apache op win xp.
pi_33108920
quote:
Op donderdag 15 december 2005 16:43 schreef IbeBen het volgende:


Ik begin maar met de meest kneuzige vraag,
Wat is het gemiddelde aantal factuurregels in 2004?

Ik heb (onder andere) de tabel Factuurregel dus daar zal het antwoord wel vandaan moeten komen.
Factuurregel
Factuurnummer
Artikelcode
verkoopaantal
verkoopprijs

Volgens mij moet ik dus gewoon de factuurnummer optellen en dan delen door het aantal "gecounte" factuurnummers.
Zelf kwam ik tot

SELECT factuurnummer/COUNT(factuurnummer)
FROM factuurnummer;

IbeBen[/]

moet je voor het gemiddelde aantal factuur regels niet eerst alle factuurregels bij elkeer optellen (de aantallen wat in de tabel staan) en dan delen door het aantal factuurnummers.

hoe dat in sql precies moet weet k niet zo 123 (moet het in 1 query trouwens of mag je er ook meerdere achter elkaar uitvoeren?)
Klopt, dat is inderdaad wel de manier. Ik weet ookdat het totaal aantal factuurnummers 59 is en als ik Count(factuurnummer) doe dat het dan 16 is. Oftewel het antwoord moet 59/16 = 3.6875 zijn. Het probleem alleen is nu hoe ik het in SQL neerzet.

Het moet wel in een query, een subquery is wel toegestaan maar niet 2 afzonderlijke om tot het antwoord te komen.
pi_33110065
quote:
Op donderdag 15 december 2005 18:32 schreef the_disheaver het volgende:
ff een apache-vraagje...

Mijn server geeft diverse bestanden niet weer. html-bestanden (geen ramp aangezien ik het alleen als php-server gebruik) maar ook geen afbeeldingen, en dat is een groter probleem... Enige afbeeldingsoort wat hij weergeeft is png...tenminste nog iets...

Kan het zijn dat mijn php.ini verkeerd is afgesteld? Het is apache op win xp.
PHP heeft als het goed is weinig te maken met de verwerking van bestanden door de webserver. Wat bedoel je met 'hij geeft het niet weer', krijg je een foutmelding of doet de browser iets verkeerds? Zo ja, wat doet ie dan verkeerd? Dat kan ik niet opmaken uit je post.

Ook kan een firewall van invloed zijn, heb je die draaien?
  FOK!-Schrikkelbaas donderdag 15 december 2005 @ 19:21:31 #5
1972 Swetsenegger
Egocentrische Narcist
pi_33110095
Join vraagje.

Ik heb bv een tabel users met user_id als auto increment.
En dan heb ik een tabel order, waarbij ik de user id opneem zodat ik weet wie de bestelling heeft gedaan.

Maar de laatste keer dat ik zo'n constructie had, kreeg ik het niet voor elkaar om te joinen van user tabel en order tabel op basis van INNER JOIN tabelnaam ON(user_id= user_id). Ik heb toen uiteindelijk in de order tabel user_id id_user genoemd. Maar dit moet toch gewoon kunnen? Ik moet zeker alleen aliassen?

En kan iemand een heldere uitleg geven over Joins misschien

-edit- Ik vergat nog een kort vraagje. Een kolom unique maken. Wat heeft dat voor consequenties als er onverhoopt een niet unieke waarde wordt gesubmit? Foutmelding en geen data in de rij neem ik aan?
pi_33110792
Even een leuk scriptje geschreven om wat makkelijker de laatste resultaten uit de error.log van Apache te lezen, zonder hem telkens te moeten openen, dit script haalt de laatste 10 resultaten uit de error.log

1
2
3
4
5
6
7
8
9
10
<?php
$lines
= file('path/naar/je/error.log ');

$max = count($lines);
echo
"<p><b>Dit zijn de laatste tien lijnen, beginnend van lijn:</b>" . $max . "</p>";

for (
$i = ($max - 1); $i &gt; ($max - 11); $i--) {
    echo
"<p>" . $lines[$i] . "</p>";
}
?>

Misschien als het je het nog aanvult met een header refresh, of meta refresh ofzo hoef je zelfs niet eens f5 te drukken. En natuurlijk kan je hem nog aankleden met CSS.

tvp
Let's make life easy
Typo's are the demon spawn from hell !
pi_33111283
quote:
Op donderdag 15 december 2005 19:21 schreef Swetsenegger het volgende:
Join vraagje.

Ik heb bv een tabel users met user_id als auto increment.
En dan heb ik een tabel order, waarbij ik de user id opneem zodat ik weet wie de bestelling heeft gedaan.

Maar de laatste keer dat ik zo'n constructie had, kreeg ik het niet voor elkaar om te joinen van user tabel en order tabel op basis van INNER JOIN tabelnaam ON(user_id= user_id). Ik heb toen uiteindelijk in de order tabel user_id id_user genoemd. Maar dit moet toch gewoon kunnen? Ik moet zeker alleen aliassen?

En kan iemand een heldere uitleg geven over Joins misschien
Je moet de ene tabel met de andere joinen. Zoiets als dit:

SELECT *
FROM orders AS o //dit is je eerste tabel die links staat
LEFT JOIN users AS u //dit is je tweede tabel die daar rechts van staat
ON o.user_id = u.user_id //je koppelt de tabellen op de user_id kolom.
WHERE etc

Overigens is dit een 'normale' constructie voor de kolommen:

ON o.userid = u.id

De ene tabel heeft een 'id'-kolom, en de ander verwijst naar de naam van de eerste tabel + 'id' om aan te geven dat we die kolom uit de andere tabel willen hebben. Maar dat ligt vooral aan jezelf, hoe je het wilt hebben
quote:
-edit- Ik vergat nog een kort vraagje. Een kolom unique maken. Wat heeft dat voor consequenties als er onverhoopt een niet unieke waarde wordt gesubmit? Foutmelding en geen data in de rij neem ik aan?
Klopt. Je krijgt een foutmelding en er wordt niets geinsert wel opletten als je meerdere INSERTs achter elkaar doet die samenhangend zijn dus.
pi_33111331
quote:
Op donderdag 15 december 2005 19:20 schreef JeRa het volgende:

[..]


Ook kan een firewall van invloed zijn, heb je die draaien?
Hij geeft een lege pagina (bij een afbeelding laat hij alleen een kader zien.

Maar na het uitschakelen van mn firewall doet hij het

FF kijken wat er met ZoneAlarm mankeert Dank iig
pi_33111428
quote:
Op donderdag 15 december 2005 19:59 schreef the_disheaver het volgende:

[..]

Hij geeft een lege pagina (bij een afbeelding laat hij alleen een kader zien.

Maar na het uitschakelen van mn firewall doet hij het

FF kijken wat er met ZoneAlarm mankeert Dank iig
ZoneAlarm is op z'n lichtjes gezegd gewoon zwaar kut in combinatie met dit soort zaken het is iig een bekend fenomeen dat bijv. Apache en ZoneAlarm gewoon niet willen samenwerken.
pi_33111520
Ik heb een tabel newsmet columnamen Year, Month en Day

ik voer de volgende query uit:

$query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";

Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_33111710
quote:
Op donderdag 15 december 2005 20:03 schreef JeRa het volgende:

[..]

ZoneAlarm is op z'n lichtjes gezegd gewoon zwaar kut in combinatie met dit soort zaken het is iig een bekend fenomeen dat bijv. Apache en ZoneAlarm gewoon niet willen samenwerken.
Ow joepie... Ff proberen het werkend te krijgen , en anders een andere firewall

edit:
localhost ipv mijn ip doet het wel... ;S
  FOK!-Schrikkelbaas donderdag 15 december 2005 @ 20:14:37 #12
1972 Swetsenegger
Egocentrische Narcist
pi_33111744
quote:
Op donderdag 15 december 2005 19:58 schreef JeRa het volgende:
[heldere uitleg]

Klopt. Je krijgt een foutmelding en er wordt niets geinsert wel opletten als je meerdere INSERTs achter elkaar doet die samenhangend zijn dus.
Hoe kan je een sql foutmelding afvangen? Je kan natuurlijk zeggen

if(mysql_query($query)){
// doe wat
}else{
//insert nog een keer
}

Maar dan controleer je niet op een specifieke SQL fout.
pi_33111766
quote:
Op donderdag 15 december 2005 20:07 schreef Desdinova het volgende:
Ik heb een tabel newsmet columnamen Year, Month en Day

ik voer de volgende query uit:

$query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";

Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
Je moet voor elke kolom aangeven hoe je wilt sorteren.

ORDER BY Year DESC, Month DESC, Day DESC

Anders neemt ie voor Year en Month standaard ASC aan
  FOK!-Schrikkelbaas donderdag 15 december 2005 @ 20:15:10 #14
1972 Swetsenegger
Egocentrische Narcist
pi_33111774
quote:
Op donderdag 15 december 2005 20:07 schreef Desdinova het volgende:
Ik heb een tabel newsmet columnamen Year, Month en Day

ik voer de volgende query uit:

$query = "SELECT * FROM news WHERE Item_offline = '0' ORDER BY Year, Month, Day DESC";

Hij ordered hem niet goed. Ik wil de nieuwste datum als eerste item. Sorteren per ID kan niet want de invoer van de datum is handmatig.
Waarom geef je je records geen DATE of DATETIME mee in sql?
pi_33111812
quote:
Op donderdag 15 december 2005 20:14 schreef Swetsenegger het volgende:

[..]

Hoe kan je een sql foutmelding afvangen? Je kan natuurlijk zeggen

if(mysql_query($query)){
// doe wat
}else{
//insert nog een keer
}

Maar dan controleer je niet op een specifieke SQL fout.
De meeste mensen doen zoiets:

1
2
3
4
5
$result = mysql_query($query);
if (!$result) {
    echo mysql_errno() . ': ' . mysql_error();
    exit;
}


Met mysql_errno() kun je bepalen wat voor fout er opgetreden is
  FOK!-Schrikkelbaas donderdag 15 december 2005 @ 20:54:26 #16
1972 Swetsenegger
Egocentrische Narcist
pi_33113133
quote:
Op donderdag 15 december 2005 20:16 schreef JeRa het volgende:

[..]

De meeste mensen doen zoiets:
[ code verwijderd ]

Met mysql_errno() kun je bepalen wat voor fout er opgetreden is
Ok, ik neem aan dat op mysql.org een lijstje is met nummers en hun specifieke betekenis.
pi_33113380
quote:
Op donderdag 15 december 2005 19:58 schreef JeRa het volgende:

[..]

Je moet de ene tabel met de andere joinen. Zoiets als dit:

SELECT *
FROM orders AS o //dit is je eerste tabel die links staat
LEFT JOIN users AS u //dit is je tweede tabel die daar rechts van staat
ON o.user_id = u.user_id //je koppelt de tabellen op de user_id kolom.
WHERE etc
Of, een iets andere schrijfwijze maar met hetzelfde resultaat

SELECT *
FROM orders AS o //dit is je eerste tabel die links staat
LEFT JOIN users AS u //dit is je tweede tabel die daar rechts van staat
USING(user_id) //je koppelt de tabellen op de user_id kolom.
WHERE etc
pi_33113437
quote:
Op donderdag 15 december 2005 20:54 schreef Swetsenegger het volgende:

[..]

Ok, ik neem aan dat op mysql.org een lijstje is met nummers en hun specifieke betekenis.
mysql.com ook goed? Er staat een lijstje.
  FOK!-Schrikkelbaas donderdag 15 december 2005 @ 22:56:17 #19
1972 Swetsenegger
Egocentrische Narcist
pi_33118137
quote:
Op donderdag 15 december 2005 21:02 schreef Light het volgende:

[..]

mysql.com ook goed? Er staat een lijstje.
Ik had 'm al gevonden

Annder probleempje.
Hieronder een stukje code van 2 array's welke een relatie hebben.

In dit geval is de value van $_SESSION['giftwrap'][GW_1]==2;
Het getal in [GW_1] heeft een relatie met $_SESSION['cart']

1
2
3
4
5
6
7
<?php
foreach($_SESSION['cart'] as $k =&gt; $v){
        if(
array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
            
$giftwrap=$_SESSION['giftwrap']['GW_'.$k];
        }
}
?>


In de eerste run van de foreach, wordt giftwrap keurig 2. Echter wordt $_SESSION['giftwrap'] in zijn geheel 2 ...geen keys meer, geen values. Na de eerste loop geeft print_r($_SESSION['giftwrap']); '2' terug. en niet (bv) Array ( [GW_1] => 2 [GW_4] => 1 )

Iemand enig idee waarom? Ow, de array_key_exists werkt prima. ik heb dat getest met een echo welke keurig de juiste waardes terug geeft. Pas wanneer ik deze gebruik $giftwrap=$_SESSION['giftwrap']['GW_'.$k]; gaat het mis.
pi_33119262
Heel apart. Is er ergens nog andere code die met $giftwrap en $_SESSION['giftwrap'] te maken heeft?

Zoiets zou jouw probleem kunnen verklaren:

$giftwrap=&$_SESSION['giftwrap'];

Hierdoor wordt $giftwrap verwezen naar het giftwrap-element uit de $_SESSION array, waarna hij door de regel

$giftwarp = ....;

wordt overschreven, en hiermee meteen de waarde in $_SESSION. Zo in jouw code kan ik niets zien dat fout is.

edit: oeh, staat register_globals trouwens aan? Als dat zo is, dan is misschien $giftwrap gelijk gesteld aan de variabele $_SESSION['giftwrap'].
pi_33121186
Is het eigenlijk verkeerd om dit soort notice te krijgen? (bv door een if fucntie of een bepaalde variable gelijk is aan een bepaalde waarde)

Notice: Undefined index: afdeling_id in

Het is geen fatal error oid, maar is het nadelig? dwv dat het langzamer duurt (0.0001 seconde...)

Je kunt dit (meestal) eenvoudig oplossen door eerst te bekijken of de variable bestaat. Maar met if(isset()) duurt het script ook enkele millisecondes langer. Welke van die 2 duurt langer?

Natuurlijk is het wel gewoon beter om een script te maken zonder warnings, errors of notice...
pi_33121685
quote:
Op vrijdag 16 december 2005 00:20 schreef the_disheaver het volgende:
Is het eigenlijk verkeerd om dit soort notice te krijgen? (bv door een if fucntie of een bepaalde variable gelijk is aan een bepaalde waarde)

Notice: Undefined index: afdeling_id in

Het is geen fatal error oid, maar is het nadelig? dwv dat het langzamer duurt (0.0001 seconde...)

Je kunt dit (meestal) eenvoudig oplossen door eerst te bekijken of de variable bestaat. Maar met if(isset()) duurt het script ook enkele millisecondes langer. Welke van die 2 duurt langer?

Natuurlijk is het wel gewoon beter om een script te maken zonder warnings, errors of notice...
Die notice slaat op het idee dat je niet zomaar een index van een array mag opvragen die niet bestaat. In Java zou je een IndexOutOfBounds exception krijgen, in C++ wordt zoiets een segmentation fault. Over het algemeen geen goede praktijk dus, en als je ooit verder wilt gaan in programmeren is het handig om eraan te wennen het op de goede manier te doen.

Ik weet niet om wat voor array het gaat, maar kun je er niet voor zorgen dat de index van de array sowieso bestaat?
pi_33123831
[beetje offtopic]heb zonealarm de deur uitgegooid, en mijn apache werkt weer volledig (tenminste, zo te zien)[/offtopcic]
  FOK!-Schrikkelbaas vrijdag 16 december 2005 @ 09:08:53 #24
1972 Swetsenegger
Egocentrische Narcist
pi_33125197
quote:
Op donderdag 15 december 2005 23:24 schreef JeRa het volgende:
Heel apart. Is er ergens nog andere code die met $giftwrap en $_SESSION['giftwrap'] te maken heeft?

Zoiets zou jouw probleem kunnen verklaren:

$giftwrap=&$_SESSION['giftwrap'];

Hierdoor wordt $giftwrap verwezen naar het giftwrap-element uit de $_SESSION array, waarna hij door de regel

$giftwarp = ....;

wordt overschreven, en hiermee meteen de waarde in $_SESSION. Zo in jouw code kan ik niets zien dat fout is.
In cart.php wordt de array cart en giftwarp gevuld.
Vervolgens ga je naar order_1.php, waar je kan inloggen of op 'volgende' kan klikken om een nieuwe gebruiker aan te maken.
order_2.php logt je in, of maakt een nieuwe gebruiker aan en logt deze direkt in.
Order_3.php is deze code, welke de inhoud van de sessions naar database schrijven. Dus nee, in deze pagina gebeurt verder niets meer met deze sessions
quote:
edit: oeh, staat register_globals trouwens aan? Als dat zo is, dan is misschien $giftwrap gelijk gesteld aan de variabele $_SESSION['giftwrap'].
Het is ook de bedoeling dat $giftwrap gelijk wordt aan var $_SESSION['giftwrap'][specifieke key]
Maar, ik wilde al 'Nee natuurlijk niet' tikken, maar even gecheked met phpinfo.php:

1register_globals On On 


Zou het zo kunnen zijn dat de sessie dan gelijk gesteld wordt aan de string?
Ik zal de code eens controleren op m'n lokale servertje

-edit-
Begrijp er geen moer van, deze code functioneert prima op mijn lokale server, waar register_globals OOK op on staat

1
2
3
4
5
6
7
8
9
10
11
<?
    $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3);
    $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3);
    foreach($_SESSION['cart'] as $k => $v){
        if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
            $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
            echo $giftwrap."\r\n";
            print_r($_SESSION['cart']);
            print_r($_SESSION['giftwrap']);
        }}
?>

-edit- Hmz, op de live server ook.
Dan moet er dus wat vreemds in mijn sessies zitten in de 'echte' code.

-edit 2-
Begrijp er werkelijk geen moer van.
Dit geeft print_r terug van mijn sessies welke door cart.php gevuld zijn.

1Array ( [1] => 3 [7] => 2 [6] => 1 ) Array ( [GW_1] => 2 [GW_7] => 1 )

Mijn arrays zijn dus prima.

Vervolgens draai ik de foreach, welke het met de testcode hierboven prima werkt en dan geeft print_r het volgende terug
1Array ( [1] => 3 [7] => 2 [6] => 1 ) 2




[ Bericht 10% gewijzigd door Swetsenegger op 16-12-2005 10:07:27 ]
  FOK!-Schrikkelbaas vrijdag 16 december 2005 @ 10:26:29 #25
1972 Swetsenegger
Egocentrische Narcist
pi_33126655
Het wordt steeds gekker

test.php
1
2
3
4
5
6
<?
session_start();
    $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3);
    $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3);
    header("location:test2.php");
?>


test2.php
1
2
3
4
5
6
7
8
9
10
<?
session_start();
    foreach($_SESSION['cart'] as $k => $v){
        if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
            $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
            echo $giftwrap."\r\n";
            print_r($_SESSION['cart']);
            print_r($_SESSION['giftwrap']);
        }}
?>


uitkomst
1
2
3
4
1 Array ( [1] => 2 [4] => 1 [7] => 3 ) 1
Warning: array_key_exists(): The second argument should be either an array or an object in c:\appserv\www\test2.php on line 4

Warning: array_key_exists(): The second argument should be either an array or an object in c:\appserv\www\test2.php on line 


Zelfde probleem dus. Maar DIT werkt WEL

1
2
3
4
5
6
7
8
9
10
11
<?
    $_SESSION['cart']=array(1 => 2, 4 => 1, 7 => 3);
    $_SESSION['giftwrap']=array(GW_1 => 1, GW_7 => 3);
    foreach($_SESSION['cart'] as $k => $v){
        if(array_key_exists("GW_".$k,$_SESSION['giftwrap'])){
            $giftwrap=$_SESSION['giftwrap']['GW_'.$k];
            echo $giftwrap."\r\n";
            print_r($_SESSION['cart']);
            print_r($_SESSION['giftwrap']);
        }}
?>


Kan iemand dit bevestigen?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')