PHP en MYSQL SELECT

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sven Thijssen

Sven Thijssen

05/11/2013 19:49:51
Quote Anchor link
Hoi allemaal

Momenteel ben ik aan een script bezig (zie hieronder). Ik ben een beginner en heb vaak problemen met het uitschrijven van de codes, vooral bij meerdere SELECTs.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "SELECT (SELECT SUM (thumb_value) AS total FROM love_it INNER JOIN posts ON post_id), SELECT * FROM posts, user WHERE posts.email=user.email ORDER BY posts.post_id DESC LIMIT 0,80";
?>


Met dit script wil ik de totale score berekenen van thumb_value (ofwel +1 ofwel -1). Deze score is voor elke post apart. In het tweede deel wou ik de informatie van de persoon die heeft gepost, weergeven.

Wanneer ik dit echter toepas, krijg ik volgende error:
mysqli_error() expects parameter 1 to be mysqli, boolean given

Alvast bedankt!

Graag volgende keren alle codes tussen de code-tags zetten. (of tussen de php-tags)[/modedit]
Gewijzigd op 05/11/2013 20:46:13 door Nick Dijkstra
 
PHP hulp

PHP hulp

17/05/2024 04:43:02
 
Pipo Clown

Pipo Clown

05/11/2013 20:00:08
Quote Anchor link
Ik heb zo maar het gevoel dat je probleem niet in de code zit welke je hierboven geplaatst hebt.
 
Sven Thijssen

Sven Thijssen

05/11/2013 20:04:39
Quote Anchor link
Bedankt voor de reactie. Voordien had ik enkel het tweede deel van de code. Die werkte immers wel. Zou het iets te maken kunnen hebben met het soort JOIN dat gehanteerd wordt?
 
Pipo Clown

Pipo Clown

05/11/2013 20:07:46
Quote Anchor link
Ik zie alleen de query, de fout komt uit de uitvoering van de query waar verkeerde parameters worden gebruikt.

Aangezien de code van de uitvoering van de query niet gegeven is zal niemand hier verder iets over kunnen zeggen.
 
Sven Thijssen

Sven Thijssen

05/11/2013 20:10:54
Quote Anchor link
Dit is de volledige code die ik gebruik (behalve database namen). Hierboven had ik posts in de plaats gezet van bloopp, omdat dit misschien verwarring zou kunnen brengen. Een replace heb ik eruit gelaten, anders zou dit een te lange code worden, maar deze werkte voordien ook.
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
18
19
20
<?php
  $link
= mysqli_connect($db_hostname, $db_username, $db_password, $db_database) or die("Error " . mysqli_error($link));

  $sql="SELECT (SELECT SUM (thumb_value) AS total FROM love_it INNER JOIN bloopp ON bloopp_id), SELECT * FROM bloopp, user WHERE bloopp.email=user.email ORDER BY bloopp.bloopp_id DESC LIMIT 0,80";

  $result = mysqli_query($link, $sql) or die("Error " . mysqli_error($result));

  while($row = mysqli_fetch_array($result))
  {

  $user_id = $row['user_id'];
  $first_name = $row['first_name'];
  $last_name = $row['last_name'];
  $bloopp_id = $row['bloopp_id'];
  $bloopp = $row['bloopp'];
  $send_time = $row['send_time'];
  $email_friend = $row['email'];
  $total = $row['total'];
   echo "<div class='nametext' style='display:inline'>$first_name $last_name</div> <div class='note' style='display:inline'>$send_time</div><div class='text'>$bloopp</div><form action='loveform.php' method='post'><button class='lovebutton' name='bloopp_id' value='" . $bloopp_id . "'><input type='hidden' name='thumb_value' value='1'><img src='/images/thumb_up.png' style='width:20; height: 20;'/> Like-it</button> <button class='lovebutton' name='bloopp_id' value='" . $bloopp_id . "'><input type='hidden' name='thumb_value' value='-1'><img src='/images/thumb_down.png' style='width:20; height: 20;'/> Dislike-it</button></form>$total<br>";
  }

?>

Graag volgende keren alle codes tussen de code]-tags zetten. (of tussen de php-tags)[/modedit]
Gewijzigd op 05/11/2013 20:46:00 door Nick Dijkstra
 
Erwin H

Erwin H

05/11/2013 22:03:31
Quote Anchor link
Pipo Clown op 05/11/2013 20:07:46:
Aangezien de code van de uitvoering van de query niet gegeven is zal niemand hier verder iets over kunnen zeggen.

Het tegendeel is waar. Door de sql fout gaat de query fout en dus is er geen resource waar php de resultaten uit kan halen.

En de sql fout:
SELECT (bla bla), SELECT * FROM

zo'n dubbele select bestaat niet in SQL.
 
Sven Thijssen

Sven Thijssen

06/11/2013 19:15:33
Quote Anchor link
Bedankt voor het bekijken van mijn vraag. Weet U hoe ik dit kan oplossen?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

06/11/2013 20:47:52
Quote Anchor link
Laten we je vraag eens anders stellen:

Welke gegevens wil je nu uit de database halen?

dus welke records van welke tabel (of tabellen) en aan welke voorwaarden moeten die records voldoen?
 
Sven Thijssen

Sven Thijssen

06/11/2013 21:57:55
Quote Anchor link
Ik zou graag volgende gegevens uit de database halen:

Table user:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
  $user_id = $row['user_id'];
  $first_name = $row['first_name'];
  $last_name = $row['last_name'];
  $email = $row['email'];
  


Table bloopp:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
  $bloopp_id = $row['bloopp_id'];
  $bloopp = $row['bloopp'];
  $send_time = $row['send_time'];
  $email= $row['email'];
  


Table love_it:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
  $bloopp_id = $row['bloopp_id'];
  $thumb_value = $row['bloopp_value'];
  


Table user en bloopp hebben
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
'$email'
gemeenschappelijk en bloopp en love_it
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
'bloopp_id'
.

Bedankt!
 
- SanThe -

- SanThe -

07/11/2013 10:03:51
Quote Anchor link
mysqli_error($result) moet zijn: mysqli_error($link)
 
Sven Thijssen

Sven Thijssen

08/11/2013 17:19:52
Quote Anchor link
Oké, bedankt! :)
 
Erwin H

Erwin H

09/11/2013 15:49:17
Quote Anchor link
Begin met het ophalen van de user(s), join de bloopp tabel en dan join de love_it tabel. Dan krijg je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
  a.user_id, a.first_name, a.last_name, a.email,
  b.bloopp_id, b.bloopp, b.send_time,
  SUM(c.thumb_value) AS total
FROM user a
LEFT JOIN bloopp b ON a.email = b.email
LEFT JOIN love_it c ON b.bloopp_id = c.bloopp_id
GROUP BY
  a.user_id, a.first_name, a.last_name, a.email,
  b.bloopp_id, b.bloopp, b.send_time

Door het gebruik van een LEFT JOIN krijg je altijd de user te zien, zelfs als er geen overeenkomstig record te vinden is in de bloopp en/of love_it tabel. Als je een INNER JOIN gebruikt dan krijg je alleen de users die ook records hebben in de andere tabellen. Aan jou om te bepalen welke nodig zijn.
 
Sven Thijssen

Sven Thijssen

09/11/2013 18:38:50
Quote Anchor link
Beste Erwin

Het is ongelooflijk! Ik weet niet hoe ik U moet bedanken, maar het werkt perfect! Ik had er nooit op kunnen komen om dit te kunnen schrijven. Het is exact hoe ik het voor ogen had!

Ik ben U erg dankbaar!

Met vriendelijke groeten
Sven
 



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.