Problemen met count

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mark Zendman

Mark Zendman

31/08/2011 20:34:03
Quote Anchor link
Hallo allemaal,

Ik zit met een probleem waar ik niet uit kom. Ik wil als iemand een winkel toevoegd dat een beheerder de winkel moet verifieren en dan aan zetten. Maar ze geven allebij het zelfde aan terwijl er meerdere in de wacht zitten. Hier de code:

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$con
= mysql_connect($server, $user, $pw);
  if (!$con){
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("shop", $con);
$sql = mysql_query("SELECT count(*) FROM winkels") or die(mysql_error());
$count = mysql_result($sql, "0");

$con1 = mysql_connect($server, $user, $pw);
  if (!$con){
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("shop", $con);
$sql1 = mysql_query("SELECT count(*) FROM winkels WHERE Aan='1'") or die(mysql_error());
$count1 = mysql_result($sql, "0");
?>


Er zijn <b>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $count; ?>
</b> winkels in de database waarvan <b>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $count1; ?>
</b> in de map.


Alvast heel erg bedankt,
Mark.
 
PHP hulp

PHP hulp

11/03/2025 06:13:34
 
Noppes Homeland

Noppes Homeland

31/08/2011 20:39:08
Quote Anchor link
Hoevaak denk jij dat een _connect en _select_db nodig is!!

De enige goede manier van fetchen is _fetch_assoc
Geen je count een alias


Je legt je met deze queries ook jezelf in de luren!!
de 1ste is een count over alle records in de tabel
de 2de is een count waarbij geldt Aan=1

Dus in feite staan bij gelijke uitkomst alle record in de tabel waarbij Aan = 1!
 
Mark Zendman

Mark Zendman

31/08/2011 20:46:58
Quote Anchor link
Noppes Homeland op 31/08/2011 20:39:08:
Hoevaak denk jij dat een _connect en _select_db nodig is!!

De enige goede manier van fetchen is _fetch_assoc
Geen je count een alias


Je legt je met deze queries ook jezelf in de luren!!
de 1ste is een count over alle records in de tabel
de 2de is een count waarbij geldt Aan=1

Dus in feite staan bij gelijke uitkomst alle record in de tabel waarbij Aan = 1!


Ik weet dat het niet handig is hoe ik het op dit moment doe. De WHERE is toch dat alleen de tabellen worden weergegeven waar in het tabel Aan 1 is? Of heb ik het helemaal mis?:p
 
Noppes Homeland

Noppes Homeland

31/08/2011 21:00:25
Quote Anchor link
Als je weet dat het niet handig is, waarom doe je het dan toch op deze manier?!

En de rest van je geschrift: daarmee pis je zover naast de pot, dat je je eerst maar eens moet gaan verdiepen in de "database" termonoligie
 
Mark Zendman

Mark Zendman

31/08/2011 21:04:16
Quote Anchor link
Dankjewel. Dit lost dus echt niet mijn probleem op. Mijn vraag was toch niet hoe slecht ik php kan programmeren? Ik weet dat ik niet goed ben in php. Het is niet mijn sterkste kant. Maar ik wil weten hoe ik het zou kunnen oplossen.

Zou je dat kunnen doen? :D
 
Jasper DS

Jasper DS

31/08/2011 21:05:32
Quote Anchor link
Start met dit, noppes heeft gelijk.
 
Mark Zendman

Mark Zendman

31/08/2011 21:25:51
Quote Anchor link
Ik heb het al opgelost. Ik was vergeten achter de 2e $sql een 1 te zetten. Heb het script ook een stuk kleiner gemaakt door de overbodige stukken eruit te halen (waar noppes over klaagde).
 
Jasper DS

Jasper DS

31/08/2011 21:31:50
Quote Anchor link
Die is geen foutafhandeling. maak een nette foutafhandeling. Gebruik heen wildcard (*).
Gewijzigd op 31/08/2011 21:32:16 door Jasper DS
 
Mark Zendman

Mark Zendman

31/08/2011 21:49:19
Quote Anchor link
PHP Jasper op 31/08/2011 21:31:50:
Die is geen foutafhandeling. maak een nette foutafhandeling. Gebruik heen wildcard (*).


???
 
Jasper DS

Jasper DS

31/08/2011 22:01:19
Quote Anchor link
- foutafhandeling

Karl Karl:
'or die' is toch zo dom iets. Ik heb hier op phphulp.nl de volgende uitleg geïntroduceerd:
Als je iets fout doet, dan val jezelf toch ook niet dood?
(Uitzonderingen daargelaten.)
Waarom moet het script dan wel doodvallen. Je krijgt gewoon netjes een bepaalde waarde terug van de mysql_query functie, die kun je gebruiken in een if statement en klaar ben je.
En nog belangrijk: Toon nooit de php / sql fout aan de gebruikers!


Bij SQL moet je alles typen wat je doet, ook voor de snelheid is een wildcard (*) gebruiken niet goed!
Gewijzigd op 31/08/2011 22:04:17 door Jasper DS
 
Wouter J

Wouter J

31/08/2011 23:17:46
Quote Anchor link
Mark Zendman op 31/08/2011 21:04:16:
Dankjewel. Dit lost dus echt niet mijn probleem op. Mijn vraag was toch niet hoe slecht ik php kan programmeren? Ik weet dat ik niet goed ben in php. Het is niet mijn sterkste kant. Maar ik wil weten hoe ik het zou kunnen oplossen.

Ach ja. Als ik vraag hoe ik een dakkapel op mijn zelfgemaakte huis zet en iemand wijst me erop dat ik de fundering onder het huis ben vergeten ga ik ook gewoon door met het dakkapel. Het huis staat er immers toch nog?
Dat er na een paar dagen (wanneer het regent) niks meer van mijn huis over is maakt me niet uit...

Altijd eerst de basis goed voordat je verder gaat. Jou basis is niet goed, dus ga niet verder.
En 'het is niet mijn sterkste kant' dan moet je het niet doen. Met slechte PHP scripts kun je veel vernielen (de hele server, database, enz.) en laat je hackers vrij hun gang gaan. Nee, als je het niet helemaal onder de knie hebt moet je PHP echt door vakmannen laten doen.
 
Mark Zendman

Mark Zendman

01/09/2011 04:52:54
Quote Anchor link
Waarom wordt er toch zo moeilijk gedaan over een snel opzetje van 5 minuten. Ik kan het op een gegeven moment toch gaan verkleinen. Hackers kunnen er ook niet zomaar in tenzij ze al de beveiligingen hebben gehackt omdat de server lokaal is en de poorten staan niet eens open. Bovendien zit het in een map. De bovenliggende map heeft een index.php dus ze zouden de inhoud ook niet kunnen zien van de map. Omdat jullie zeiden dat het niet veilig was heb ik ook nog even gekeken naar sql injecties, deze waren er totaal niet. Doordat ik dubbel ging inloggen moest er meer data worden verzonden en ontvangen waardoor het alleen iets langer gaat laden, maar het heeft absoluut geen invloed op de veiligheid van de site (tenzij je vanuit de server zelf pakketten gaat snifferen). Het is een project waar ik nog lang niet klaar mee ben. Ik vindt het nou weer jammer dat er zo moeilijk wordt gedaan omdat ik een dubbele connectie maak. Ik zal even het nieuwe stukje code er neerzetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$con
= mysql_connect($server, $user, $pw);
  if (!$con){
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("shop", $con);
$sql = mysql_query("SELECT count(*) FROM winkels") or die(mysql_error());
$count = mysql_result($sql, "0");
$sql1 = mysql_query("SELECT count(*) FROM winkels WHERE Aan='1'") or die(mysql_error());
$count1 = mysql_result($sql1, "0");

echo "Er zijn <b> $count </b> winkels in de database waarvan <b> $count1 </b> in de map"; ?>


Dit is even een stukje waar de dubbele connecties weg zijn en de fouten zijn verbeterd. De foutenafhandeling heb ik nog niet gedaan. Die kan ik later nog wel even doen.

Toevoeging op 01/09/2011 05:01:32:

PHP Jasper op 31/08/2011 22:01:19:
- foutafhandeling

Karl Karl:
'or die' is toch zo dom iets. Ik heb hier op phphulp.nl de volgende uitleg geïntroduceerd:
Als je iets fout doet, dan val jezelf toch ook niet dood?
(Uitzonderingen daargelaten.)
Waarom moet het script dan wel doodvallen. Je krijgt gewoon netjes een bepaalde waarde terug van de mysql_query functie, die kun je gebruiken in een if statement en klaar ben je.
En nog belangrijk: Toon nooit de php / sql fout aan de gebruikers!


Bij SQL moet je alles typen wat je doet, ook voor de snelheid is een wildcard (*) gebruiken niet goed!


Dankje voor de quote. Ik snap het helemaal. Ik ga het nog aanpassen. Mooi dat je het nog even voor me hebt opgezocht :)
Gewijzigd op 01/09/2011 04:58:31 door Mark Zendman
 
Jasper DS

Jasper DS

01/09/2011 08:21:52
Quote Anchor link
Mark Zendman op 01/09/2011 04:52:54:
Dit is even een stukje waar de dubbele connecties weg zijn en de fouten zijn verbeterd. De foutenafhandeling heb ik nog niet gedaan. Die kan ik later nog wel even doen.


En dat is probleem bij veel van de "beginnende" PHPers. De foutafhandeling helpt je net bij het ontwikkelen en debuggen van je code. Probeer voor jezelf eerst even de logica op te schrijven in woorden en maak er dan een scriptje van.
Voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
# Ik schrijf de sql

#Ik voer de sql uit en kijk of het is gelukt
{
    # Het is niet gelukt, ik geef voor mezelf een error
}
else
{
    # het is wel gelukt ik ga verder met mijn code
}


- Haal je var buiten quotes. echo 'Hallo '. $var .' test';
Gewijzigd op 01/09/2011 08:23:29 door Jasper DS
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.