Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Pare pytan
Forum PHP.pl > Forum > Przedszkole
Green-sc
Mam pare pytan dotyczacych mysql w php.
1. chce uzyc funcji "function" po to by uniknac kazdorazowego wpisywania mysql_connect.. itd. , tyleze cos mi tutaj bledy wyskakuje. Pewnie cos zle robie. Wszelkie namiary sa pobierane z pliku config.php Tutaj macie ten kawalek kodu:

  1. <?php
  2. function db_connect ($host, $login, $haslo, $baza)
  3. {
  4. mysql_connect("'$host','$login','$haslo'");
  5. mysql_select_db ("'$baza'");
  6. }
  7. ?>

domyslam sie ze to trzeba jeszcze uzyc funkcji echo/print ale wtedy juz nie mam pojecia jak to bedzie musialo wszystko wygladac.
2.
  1. <table>
  2. <?
  3. //polaczenie z baza danych oraz wybieranie wyniku
  4. print"<tr><td id=1>".$db['nazwa']."</td><td id=2>".$db['wynik']."</td>
  5. </tr>";
  6. ?>

Chce by w powyzszym fragmencie kodu przy wyswietleniu wyniku komorka o id=1 raz miala kolor bialy a raz siwy a komorka o id=2 najpierw miala siwy a potem bialy. Da sie cos takigo zrobic przy wypisywaniu wyniku czy trzeba jakos innaczej kmbinowac (np. przez tlo do calej tabeli) ?
Łukasz O.
  1. <?php
  2. function db_connect($host,$login,$haslo,$baza){
  3. mysql_connect($host,$login,$haslo);
  4. }
  5.  
  6. $wynik=mysql_query('twoje zapytanie');
  7. if(!$wynik){
  8. print 'Nie można uruchomić zapytania: ' . mysql_error();
  9. }else{
  10. print '<table>';
  11. while($a=mysql_fetch_row($wynik)){
  12. print '<tr><td class="'.($i%2==0?'bialy':'siwy').'">'.$a['nazwa'].'</td><td class="'.($i%2!=0?'siwy':'bialy').'">'.$a['wynik'].'</td></tr>';
  13. }
  14. print '</table>';
  15. }
  16. ?>

pisane z palca mogą być błędy - ale zasada chyba jasna
Green-sc
aha spoko:
Tylko tego nie rozumiem ($i%2==0?'bialy':'siwy'). Co oznacza $i%2==0 ?

A i chyba nie dales tego zapytania o fukncje.
strife
Cytat(Green-sc @ 30.04.2007, 02:16:41 ) *
aha spoko:
Tylko tego nie rozumiem ($i%2==0?'bialy':'siwy'). Co oznacza $i%2==0 ?

A i chyba nie dales tego zapytania o fukncje.


Prosta nakładka na funkcje mysql_query" title="Zobacz w manualu PHP" target="_manual, może wyglądać w ten sposób:

  1. <?php
  2. function query( $query )
  3. {
  4. return mysql_query( $query );
  5. }
  6. // $i = query("SELECT * FROM tabela");
  7. ?>



Cytat
Tylko tego nie rozumiem ($i%2==0?'bialy':'siwy').


http://pl.php.net/manual/pl/language.expressions.php

Cytat
o oznacza $i%2==0


To jest modulo. http://pl.php.net/manual/pl/language.opera....arithmetic.php
Green-sc
  1. <?php
  2. //index.php
  3. include"baza.php";
  4. db_connect ($nazwa_hosta, $db_login, $db_password, $db_name);
  5. db_query (news);
  6. while ($rekord = mysql_fetch_array ($wynik))
  7. {
  8. $a = $rekord['temat'];
  9. }
  10. ?>

  1. <?php
  2. //baza.php
  3. function db_connect ($nazwa_hosta, $db_login, $db_password, $db_name)
  4. {
  5. mysql_connect($nazwa_hosta,$db_login,$db_password);
  6. mysql_select_db($db_name);
  7. }
  8.  
  9. function db_query ($db)
  10. {
  11. $wynik = mysql_query("SELECT * FROM $db"); //bez nawiasow tutaj wogole nie rusza
  12. }
  13. ?>

A wynik na stronce
Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\apache\httpd\html\new\index.php on line 225
mike
Na listingu pierwszym w linii 6 korzystasz ze zmiennej $wynik.
Skąd ją masz? Przeciez ona nie istnieje, dlatego jest komunikat: "Przekazany argument nie jest poprawnym zasobem MySQL'a".

Podpowiedź: Zmienna $wynik z funkcji db_query() nie jest widoczna.
Zwróć wynik tej funkcji i przypisz go do zmiennej $wynik na listingu 1.
Green-sc
A mozesz napisac jak ma wygladac dokladnie skrypt? Bo jak patrze na ten kod to wszystko jest dla mnie wporzadku.
strife
Cytat(Green-sc @ 30.04.2007, 16:24:37 ) *
A mozesz napisac jak ma wygladac dokladnie skrypt? Bo jak patrze na ten kod to wszystko jest dla mnie wporzadku.


Przecież mike_mech dokładnie napisał Ci co masz zrobić, pozwolę sobie zacytować:

Cytat
Podpowiedź: Zmienna $wynik z funkcji db_query() nie jest widoczna.
Zwróć wynik tej funkcji i przypisz go do zmiennej $wynik na listingu 1.


Jak zwrócić wynik jakieś funkcji ? Zobacz w manualu rozdział o funkcjach winksmiley.jpg ( jakby nie było w podanym przeze mnie przykładzie jest zwracany wynik ).

Pozdrawiam.
Green-sc
Kurde nic mi nie wychodzi:/ A dokladniej nie rozumiem co znaczy:
Cytat
Podpowiedź: Zmienna $wynik z funkcji db_query() nie jest widoczna.
Zwróć wynik tej funkcji i przypisz go do zmiennej $wynik na listingu 1.
strife
Czytanie ze zrozumieniem się kłania ?

Cytat
Na listingu pierwszym w linii 6 korzystasz ze zmiennej $wynik.
Skąd ją masz? Przeciez ona nie istnieje, dlatego jest komunikat: "Przekazany argument nie jest poprawnym zasobem MySQL'a".


Czyli automatycznie nasuwa się myśl, że nie powinniśmy z tej zmiennej korzystać, że nie jest ona w dobrym miejscu itp. itd. Analizujemy kod:

  1. <?php
  2. //index.php
  3. include"baza.php";
  4. db_connect ($nazwa_hosta, $db_login, $db_password, $db_name);
  5. db_query (news);
  6. while ($rekord = mysql_fetch_array ($wynik))
  7. {
  8. $a = $rekord['temat'];
  9. }
  10. ?>


Widać tutaj zadeklarowaną zmienną $wynik ? Nie ma jej, no to logicznie myśląć, trzeba by ją dopisać prawda ? No to dopisujemy.

  1. <?php
  2. //index.php
  3. include"baza.php";
  4. db_connect ($nazwa_hosta, $db_login, $db_password, $db_name);
  5. $wynik = db_query (news);
  6. while ($rekord = mysql_fetch_array ($wynik))
  7. {
  8. $a = $rekord['temat'];
  9. }
  10. ?>


Ale co to znowu mamy błąd, dlaczego? Czytamy dalej:

Cytat
Podpowiedź: Zmienna $wynik z funkcji db_query() nie jest widoczna.
Zwróć wynik tej funkcji i przypisz go do zmiennej $wynik na listingu 1.


Jeśli ta zmienna nie jest widoczna to co zrobić, aby była ? Tutaj również masz odpowiedź jak na tacy.

Cytat
Zwróć wynik tej funkcji i przypisz go do zmiennej $wynik na listingu 1


Jak się zwraca zmienne ?

Cytat
Jak zwrócić wynik jakieś funkcji ? Zobacz w manualu rozdział o funkcjach ( jakby nie było w podanym przeze mnie przykładzie jest zwracany wynik ).


  1. <?php
  2. function query( $query )
  3. {
  4. return mysql_query( $query );
  5. }
  6. // $i = query("SELECT * FROM tabela");
  7. ?>


Wszystko Ci napisaliśmy, wystarczyło tylko pomyśleć i przeanalizować. smile.gif

Pozdrawiam, i mam nadzieję, że teraz już wszystko jest dla Ciebie jasne.
Green-sc
Dziwne to troche ale dziala. Musze to jeszcze raz dokladnie przeanalizowac. THX.

Mam jeszcze jedno pytanie. chce zrobic zapytanie ktore by bralo rekordy w 2 baz i wyswietlalo je wg daty. Jak powinien wygladac kod w takim przypadku?
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.