Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dwa różne zapytania MySQL na jednej stronie
Forum PHP.pl > Forum > Przedszkole
Delleg
Na sam początek podam kod źródłowy

  1. <?php
  2.  
  3.  
  4. error_reporting( ~E_DEPRECATED & ~E_NOTICE );
  5.  
  6.  
  7. define('DBHOST', 'ukrylemwposcie.home.pl');
  8. define('DBUSER', 'ukrylemwposcie_komunikator');
  9. define('DBPASS', 'ukrylemwposcie');
  10. define('DBNAME', 'ukrylemwposcie_komunikator');
  11.  
  12. $conn = mysql_connect(DBHOST,DBUSER,DBPASS);
  13. $dbcon = mysql_select_db(DBNAME);
  14.  
  15. if ( !$conn ) {
  16. die("Connection failed : " . mysql_error());
  17. }
  18.  
  19. if ( !$dbcon ) {
  20. die("Database Connection failed : " . mysql_error());
  21. }
  1. <?php
  2. require_once 'dbconnect.php';
  3.  
  4.  
  5. if( !isset($_SESSION['user']) ) {
  6. header("Location: index.php");
  7. }
  8. $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
  9. $message=mysql_query("SELECT * FROM `posts` ORDER BY `idm` DESC");
  10.  
  11.  
  12. $userRow=mysql_fetch_array($res);
  13.  
  14. ?>
  15. <!DOCTYPE html>
  16. <html>
  17. <head>
  18. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  19. <title>Witaj - <?php echo $userRow['userName']; ?></title>
  20. <link rel="stylesheet" href="assets/css/bootstrap.min.css" type="text/css" />
  21. <link rel="stylesheet" href="style.css" type="text/css" />
  22. </head>
  23. <body>
  24.  
  25. <nav class="navbar navbar-default navbar-fixed-top">
  26. <div class="container">
  27. <div class="navbar-header">
  28. <a class="navbar-brand" href=""><?php echo $userRow['userName']; ?></a>
  29. </div>
  30. <div id="navbar" class="navbar-collapse collapse">
  31. <ul class="nav navbar-nav">
  32. <ul class="nav navbar-nav navbar-right">
  33. <li><a href="logout.php?logout"><span class="glyphicon glyphicon-log-out"></span>&nbsp;Wyloguj się</a></li>
  34. </ul>
  35. </ul>
  36. </div>
  37. </div>
  38. </nav>
  39.  
  40. <div id="wrapper">
  41.  
  42. <div class="container">
  43. <?php while ($messageRow=mysql_fetch_array($message))
  44. {?>
  45. <table class="table table-striped">
  46. <thead>
  47. <tr>
  48. <th><? echo $messageRow["userEmail"] ?></th>
  49. <th>Czas</th>
  50. </tr>
  51. </thead>
  52. <tbody>
  53. <tr>
  54. <td><? echo $messageRow["message"] ?></td>
  55. <td><? echo $messageRow["time"] ?></td>
  56. </tr>
  57. </tbody>
  58. </table>
  59. <?php }
  60.  
  61. ;?>
  62. <?php $add=mysqli_query("INSERT INTO post (message, userEmail) VALUES ('$_POST[message]', '{$_SESSION['userEmail']}')") ; ?>
  63. <div class="container">
  64. <form action="home.php" method="POST" class="form-inline">
  65. <div class="form-group">
  66. <input type="text" class="form-control" name="message">
  67. </div>
  68. <button type="submit" class="btn btn-primary">Wyślij</button>
  69. </form>
  70. </div>
  71. </div>
  72.  
  73. </div>
  74.  
  75. <script src="assets/jquery-1.11.3-jquery.min.js"></script>
  76. <script src="assets/js/bootstrap.min.js"></script>
  77.  
  78. </body>
  79. </html>
  80. <?php ob_end_flush(); ?>


tabele w bazie
  1. CREATE TABLE `posts` (
  2. `idm` INT(11) NOT NULL,
  3. `message` LONGTEXT NOT NULL,
  4. `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  5. `userEmail` TINYTEXT NOT NULL,
  6. PRIMARY KEY (`idm`)
  7. )
  8. COLLATE='utf8_general_ci'
  9. ENGINE=InnoDB
  10. ;

  1. CREATE TABLE `users` (
  2. `userId` INT(11) NOT NULL AUTO_INCREMENT,
  3. `userName` VARCHAR(30) NOT NULL,
  4. `userEmail` VARCHAR(60) NOT NULL,
  5. `userPass` VARCHAR(255) NOT NULL,
  6. PRIMARY KEY (`userId`),
  7. UNIQUE INDEX `userEmail` (`userEmail`)
  8. )
  9. COLLATE='utf8_general_ci'
  10. ENGINE=InnoDB
  11. AUTO_INCREMENT=26
  12. ;


Po zalogowaniu skrypt przenosi użytkownika do home.php, gdzie w tabeli bootstrapa pokazuje wszystkie posty użytkowników w kolejności od najwcześniejszego.
Jako początkujący w php nie rozumiem w jaki sposób stworzyć kolejną kwerendę INSERT wywołaną przyciskiem Wyślij.
Wszystkie przykłady pokazują zawsze tylko jedno połączenie z bazą i jedną kwerend na plik *.php,
w jaki sposób tworzy się kilka "mysql_query" w jednym skupcie. Z jednej strony w tym przykładzie mam koło siebie dwie linijki
  1. $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
  2. $message=mysql_query("SELECT * FROM `posts` ORDER BY `idm` DESC");

które funkcjonują poprawnie, pierwsza podaje login zalogowanego użytkownika, druga wypełnia zawartość tabelki postami z tabeli posts
natomiast w linii 66 znajduje się wspomniana kwerenda INSERT, niestety dostaje błąd Warning: mysqli_query() expects at least 2 parameters, 1 given in /komunikator/home.php on line 66 kompletnie nie rozumiem dlaczego
kapslokk
Jeśli wszędzie używasz mysql_query to czemu nagle Ci sie zachciało mysqli_query() ? Albo jedno albo drugie. Najlepiej by było, gdybyś przepisał wszystko na PDO tongue.gif
nospor
Procz uwagi poprzednika, jeszcze jedna uwaga ode mnie. Tabela posts zamiast userEmail powinna miec user_id.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.