Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php, mysql] Dlaczego tworzy dwa rekordy?
david069
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 2.03.2008

Ostrzeżenie: (0%)
-----


Mógłby mi ktoś wytłumaczyć fenomen tego że za każdym razem tworzy dwa rekordy w bazie (jeden poprawny (z poprawnymi danymi) i drugi zupełnie pusty) podczas jednego zapytania.
Kod
if($ev=='dodaj')
   {
   echo pl('<form action="index.php?p=admin&ev=dodane" method="post">
       Data:<input type="text" name="data">
      Url obrazka:<input type="text" name="image">
      Tekst:<input type="text" name="tekst">
     <input type="submit" value="Dodaj"></form>');
   }
  
   if($ev=='dodane')
   {
   $data=$_POST['data'];
   $image=$_POST['image'];
   $tekst=$_POST['tekst'];
   //echo $data.$image.$tekst;
  
   $sql=mysql_query("INSERT INTO `events` (`data`, `image`, `tekst`) VALUES ('$data', '$image', '$tekst')");
  
   if(!$sql)
   echo pl('Bład podczas dodawania eventu');
   else
   echo('<b>Event został dodany poprawnie</b>');
   }

Kod
id int(11) auto_increment
   data varchar(40)
   image varchar(200)
   tekst varchar(200)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A $ev skąd się bierze? snitch.gif

PS. Do php jest dostępny odpowiedni bbcode.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
david069
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 2.03.2008

Ostrzeżenie: (0%)
-----


Stąd:
$ev=$_GET['ev'];
Jakby nie spełniało warunku ev to by nie dodawało do bazy w ogólne rekordu... A dodaje poprawny tylko że dwa na raz (drugi pusty) mógłbym go zawsze automatycznie zaraz usunąć no ale nie w tym rzecz...
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
(jeden poprawny (z poprawnymi danymi) i drugi zupełnie pusty) podczas jednego zapytania.

Cytat
A dodaje poprawny tylko że dwa na raz (drugi pusty)

W takiej kolejności, czy na odwrót?

Nie include" title="Zobacz w manualu PHP" target="_manual'ujesz tego pliku gdzieś drugi raz? Czy to jest cały skrypt?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
damian.1923
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 18.08.2008

Ostrzeżenie: (0%)
-----


witam

proponuję zmienić kolejność i zastosować "else if"

Kod
</P><P>if ($ev==$_GET['dodane'])</P><P>{</P><P>// polecenia SQL</P><P>}</P><P>else if($ev=='dodaj') // lub samo else</P><P>{</P><P>// teraz dopiero formularz</P><P>}</P><P>




pozdrawiam.



sorry, jeszcze raz:

if ($ev==$_GET['dodane'])

{

// polecenia SQL

}

else if($ev=='dodaj') // lub samo else

{

// teraz dopiero formularz

}
Go to the top of the page
+Quote Post
david069
post
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 2.03.2008

Ostrzeżenie: (0%)
-----


Cytat(erix @ 13.02.2009, 23:06:39 ) *
W takiej kolejności, czy na odwrót?

Nie include" title="Zobacz w manualu PHP" target="_manual'ujesz tego pliku gdzieś drugi raz? Czy to jest cały skrypt?

Nie nie cały index.php ma ponad 1000 linijek to są tylko eventsy które jako jedyne nie działają, ponieważ na tym samym sposobie są newsy, strony, linki itd. z samego admin.php:
$o=$_GET['o'];
$lm=$_GET['lm'];
$li=$_GET['li'];
$id=$_GET['id'];
$ps=$_GET['ps'];
$ap=$_GET['ap'];
$ev=$_GET['ev'];
ale tylko tutaj dodaje podwójnie, nie mam pojęcia dlaczego, kopiowany jest ten sam kod co przy innych, zmienione jak zawsze to samo ale tylko tutaj tworzy dwa rekordy na raz.
Co do kolejności to tak, najpierw dodaje ten z uzupełnionymi polami a potem z pustymi.
No i wyszukiwałem właśnie czy nie zdublowałem gdzieś ale zrobiłem chyba najprostszy i najskuteczniejszy test zamieniłem linjkę:
Kod
$sql=mysql_query("INSERT INTO `events` (`data`, `image`, `tekst`) VALUES ('$data', '$image', '$tekst')");

na:
Kod
//$sql=mysql_query("INSERT INTO `events` (`data`, `image`, `tekst`) VALUES ('$data', '$image', '$tekst')");

i nie dodaje nic (ani jednego rekordu (czyli tak jak powinno)). Wystarczy że usunę slashe i przy tych samych danych przy tym samym formluarzu i reszcie dodaje automatycznie 2 rekordy.

damian.1923 mam właśnie w takiej kolejności
najpierw mam
if($li=='usuniete')
sql
if($li=='zmienione')
sql
if($ev=='dodane')
sql
...
if($li=='usun')
if($li=='edytuj')
if($ev=='dodaj')
...
no i tu formularze

W takiej kolejności właśnie wszystko jest no i wszystko działa, tylko właśnie przy tym tak sie dzieje, no i mówię dam w komentarz, 0 rekordów utworzy, usunę komentarz od razu 2 rekordy.
Dziś już nie mam czasu ale jutro jeszcze muszę spróbować takie rzeczy jak usunąć całkiem tą tabele i stworzyć nową pozmieniać nazwy zmiennych itp, może gdzieś się coś zdublowało bo nie dzielę tego na pliki żeby dużo nie otwierać i prawie 700 linijek mam w admin.php więc można coś przeoczyć.

Omg sciana.gif
Dopiero teraz zauważyłem że dodaje w każdej opcji w newsach, linkach itd i winą nie jest nic z panelu a tylko i wyłącznie wyświetlanie tych eventsów, co też ciekawe dlaczego, nie wiem co tu jest takiego niezwykłego:
Kod
/*
            $sqlev=mysql_query("SELECT `data`, `image`, `tekst` FROM `events`");
                
                $it=0;
                while($event=mysql_fetch_row($sqlev))
                    {
                    if($it)
                    echo('*****************<br><br>');
                    echo('<b>'.$event[0].'</b><br><br>
                    <img src="'.$event[1].'"><br><br>
                    '.$event[2].'<br><br>');
                    $it++;
                    } */


Przepraszam za ten temat no ale jak go zakładałem byłem w 100% przekonany że dzieje się tak tylko przy dodawaniu eventsów!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 05:20