Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wrzucanie danych do tabeli
Forum PHP.pl > Forum > PHP
soccerleague
Siema, poprzez formularz wrzucam dane do tabeli, do konkretnych kolumn. Jak w załączniku https://www.easypaste.org/file/cusxkGyD/licz.jpg?lang=pl. Przypisuje konkretnej kolumnie konkretną wartość z formularza. W tym prostym przypadku są to liczby "3". Kłopot jednak w tym, że chciałbym uniknąć pustych pól. Np w kolumnie Chelsea wysłana "trójka" powinna pojawić się pod id =3 a tymczasem wbiło mi ją pod id=4. I podobnie jest z kolumną mcity. Kolejną "trójkę" wysłałem do kolumny mcity ale weszła pod id=5, zamiast id=4. Czy możliwe jest takie upakowanie danych aby wpisywało wartości w kolumnach jedną po drugą, a nie łączyłoby ich z kolejnym wolnym id?
nospor
No bo jak za kazdym razem masz INSERT to co sie dziwisz?

SPrawdzaj wpierw pierwszy wolny rekord i tam wkladaj
viking
Te puste pola są naturalną rzeczą i tylko początkujący nie lubią "dziur". Dzięki temu dane są unikalne.
soccerleague
Dobra, to może inaczej. Dane niech sobie będą jak są, tylko trzeba odpowiednio skonstruować zapytanie? np
  1. SELECT mcity FROM tabela where mcity is NOT NULL , DESC
ale to nie działa sad.gif
viking
A dlaczego miałoby działać jak sam wymyślasz składnię? https://dev.mysql.com/doc/refman/5.7/en/select.html
http://sqlfiddle.com wrzuć przykładowe dane i napisz co chcesz tym selectem osiągnąć bo ciężko cię zrozumieć.
soccerleague
Uszczegóławiam smile.gif
Widok tabeli w bzie danych
tabela

zapytanie
<table class='mato'> <tr>
<td class='rest'> id </td>
<td class='rest'> mcity </td>
<td class='team'>chelsea</td>
<?php
include 'zeta.php';
$sqlASD = mysql_query("SELECT id,mcity, chelsea FROM traffic LIMIT 12");
while ($row = mysql_fetch_array($sqlASD)){;
$mcity= $row['mcity']; $chelsea= $row['chelsea']; $id= $row['id'];
{
echo"
</tr>
<td class='rest'> $id </td>
<td class='rest'> $mcity </td>
<td class='team'> $chelsea</td>
";}}?> </tr></table>


Efekt zapytania
efekt
Jak widać jest to zwykłe odzwierciedlenie danych zapisanych w tabeli. Teraz muszę dodać warunki, bo chcę otrzymać zwarty efekt wyświetlania, bez tzw. "dziur" jak ktoś to już tu nazwał, czyli bez pustych id. A zatem zapodaje warunek "where"
("SELECT id,mcity, chelsea FROM traffic WHERE mcity is NOT NULL LIMIT 12");
nie działa sad.gif
daje inny
("SELECT id,mcity, chelsea FROM traffic WHERE mcity between 0 and 4 LIMIT 12");
lipa sad.gif

no i nie za bardzo wiem, jak skonstruować taki warunek wyświetlania wyników bez pustych id dla każdej kolumny z osobna (będzie dużo kolumn) i ograniczenie LIMIT do 4
nospor
Cytat
bez tzw. "dziur" jak ktoś to już tu nazwał, czyli bez pustych id.
Nigdzie nie masz zadnych pustych id...
Jedyne co masz puste to raz jedna kolumne a raz druga. Juz ci mowilem co masz zrobic.
soccerleague
Nospor, trochę mówisz do mnie za naukowo. Nie wiem czy o to ci chodziło, ale osiągnąłem zamierzony efekt poprzez ("SELECT id,mcity, chelsea FROM traffic WHERE mcity !='' LIMIT 12");

efekt o który dokładnie chodzi
efekt

ale poza warunkiem potrzebny mi jest jeszcze jakiś operator na zasadzie or, and ... bo przecież kolumn jest więcej i nie za bardzo to mogę teraz ugryźć
...WHERE mcity !='' AND chelsea!='' AND arsenal !='' nie działa. Zresztą bez sensu jest wpisywanie w ten sposób 20 drużyn. Czy możliwy jest jakiś prostszy sposób?
viking
Drużyny powinny być w oddzielnej tabeli np id,nazwa_druzyny . Mecze w oddzielnej: id, data_meczu, id_goscia, id_gospodarza . Id_gościa i gospadarza to klucze obce do id z tabeli drużyn. Później poczytaj o złączeniach.

I wszystkie funkcje mysql_ są dawno przestarzałe i nie ma ich w PHP7. Używaj rozszerzenia PDO albo mysqli.
soccerleague
viking ... to nie może być tak skomplikowane jak mówisz. Mam 7 lig każda po prawie 20 drużyn, czyli ponad setka, tworzenie do każdej drużyny osobnych dodatkowych tabel przekracza moje możliwości, przede wszystkim czasowe. Zresztą strona nie jest sesnu stricte kto z kim grał, kiedy i jaki był wynik. Zresztą proszę nie traktować tego linka jako reklamy tylko jako prezentację problemu do rozwiązania Unified European Leagues in Football.

Zapytania działają w oparciu o konstrukcję SELECT * FROM ligafrancuska UNION ALL SELECT * FROM ligahiszpanska UNION ALL SELECT * FROM ligawloska UNION ALL ... itd. i do tego potrzebna mi jest tzw. tabela formy dla każdej drużyn. Dlatego kombinuję z dodatkowym rozwiązaniem. Bazuje na najprostszych rozwiązaniach, bo nie znam się na php ani sql. Nauczyłem się tylko tego czego musiałem smile.gif)) Dlatego nie obrażę się jak ktoś z was wykombinuje to za mnie i po prostu poda cenę. smile.gif Jeśli nie, no to będę kombinował dalej.
viking
Ale tak to się robi. W uproszczeniu:
ligi
id| nazwa
1 | Włoska
2 | Francuska

drużyny
id | id_ligi | nazwa
1 | 2 | Paris Saint Germain
2 | 2 | AS Monaco
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.