ordine poze... [REZOLVAT]

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

ordine poze... [REZOLVAT]

Mesajde sebyku » Mar Feb 03, 2009 2:51 pm

salut... am si eu o mica problema in legatura cu introducerea ordinei pozelor in baza de date... la upload poza as avea ceva de genu asta

Cod: Selectaţi tot

$query = "INSERT INTO `poze` (id_user, nume_poza, ordine) VALUES ('{$iduser}', 'nume poza', '{$ordine}');
in care id user e id de pe care se uploadeaza poza...numele pozei si ordinea...de exemplu 1 sa fie mereu poza princpiala si restul sa fie poze secundare... si afisarea o fac cu

Cod: Selectaţi tot

select * from poze where id_user = '{$iduser}' and ordine = 1
problema la mine e ca nu reusesc sa fac sa introduca ordinele in tabel 1 2 3 4 5 si asa mai departe...imi puteti da va rog o idee?
Ultima oară modificat Mar Feb 17, 2009 6:17 pm de către sebyku, modificat 1 dată în total.



Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mar Feb 03, 2009 3:09 pm

pai inainte de insert ar trebui sa citesti intai din baza de date care e ultimul nr de ordine pentru acel id

SELECT * FROM tabel WHERE userid = $userid ORDER BY ordine DESC LIMIT 1

apoi vezi ce iti returneaza (ar trebui sa iti returneze nr de ordine cel mai mare sau 0 daca nu exista poze la acel id)

si apoi setezi $ordine = $row['ordine'] + 1;

si apoi faci insert-ul tau avand deja $ordine setat
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Mar Feb 03, 2009 3:13 pm

pai u nu intelegi ce vreau sa zic nu stiu cum sa fac sa apara ordinea pozelor.... cel putin nu am reusit nu stiu cum sa ma exprim mai bine...o sa ma gand ce sa arat ca sa par clar..

Avatar utilizator
keepwalking
Average Member
Mesaje: 131
Membru din: Joi Dec 07, 2006 8:35 pm
Localitate: Ploiesti

Mesajde keepwalking » Mie Feb 04, 2009 6:55 pm

Cel mai bine, mai introduci un camp de time datetime in db, si introduci si data (foloseste functia now() pentru introducere)

Dupa aia ordenezi mereu in ordine descrescatoare respectiva tabela, si mereu primul rezultat va fi si ultima poza introdusa, sau poti face mereu update la ordinea pozelor in functie de data.

Cod: Selectaţi tot

set @num = 0;
UPDATE `poze` SET ordine = (SELECT @num := (@num+1) FROM DUAL) ORDER BY `data` DESC

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 05, 2009 1:20 am

in sfarsit am mai scapat de un examen...:D si sa revin la problema mea.... am incercat ceva de genu....

Cod: Selectaţi tot

<?
session_start();
require_once('config.php');

$cerereSQL = "SELECT * FROM tabel WHERE userid = $userid ORDER BY ordine DESC LIMIT 1 ";
$rezultat = mysql_query($cerereSQL);
{
if ($_FILES["fisier"]["error"] > 0)
{
  echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
}
else
{
  if (file_exists("vot/" . $_FILES["fisier"]["name"]))  // verificam daca fisierul exista deja pe server
  {
    echo "Fisierul pe care incerci sa-l uploadezi exista deja";
  }
  else
  {
    $query = "INSERT INTO `poze` (id_user, nume_poza, ordine) VALUES ('{$iduser}', 'nume poza', '{$ordine}');
    mysql_query($query) or die(mysql_error() . '<br />' . $query);
    move_uploaded_file($_FILES["fisier"]["tmp_name"], "vot/".$_FILES["fisier"]["name"]);  // se muta fisierul din directorul temporar al serverului in directorul final
   
    {
      echo "Succes! Poza a fost adaugata in baza de date.";
     
    }

  }
}
?>   
dar ceva imi scapa:|...ce am omis imi puteti zice?

Avatar utilizator
keepwalking
Average Member
Mesaje: 131
Membru din: Joi Dec 07, 2006 8:35 pm
Localitate: Ploiesti

Mesajde keepwalking » Joi Feb 05, 2009 9:25 am

eu nu imi dau seama de o chestie, la insertul respectiv {$ordine} ce valoare ia ?

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: :)

Mesajde Birkoff » Joi Feb 05, 2009 10:53 am

sebyku scrie:$cerereSQL = "SELECT * FROM tabel WHERE userid = $userid ORDER BY ordine DESC LIMIT 1 ";
$rezultat = mysql_query($cerereSQL);


da, are dreptate keepwalking tu faci query-ul de mai sus dar nu preiei si rezultatele returnate ca sa setezi valoarea lui $ordine ci mergi mai departe cu alte verificari...
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
keepwalking
Average Member
Mesaje: 131
Membru din: Joi Dec 07, 2006 8:35 pm
Localitate: Ploiesti

Mesajde keepwalking » Joi Feb 05, 2009 11:01 am

Chestia e ca tu daca ultima poza vrei sa ia valoarea 1, tu trebuie sa modifici si id-ul celorlalte poze. oricum nu sunt convins inca de ce nu folosesti o cheia unica si primara pentru inserarea pozelor si ordonezi mereu descrescator dupa ea.

Cheia respectiva are automat increment asa ca isi va lua automat valoare de +1 la fiecare inserare.

Dupa parerea mea te complici f tare.

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 05, 2009 11:03 am

mda asta ziceam si mai sus si lui borkof pe celalalt forum nu stiu ce valoare sa pun sa o ia {ordine} ca nu am mai folosit adica trebuie sa le ia la rand? cand sterge cineva o poza sa se scada cu 1 sau cum?

Avatar utilizator
keepwalking
Average Member
Mesaje: 131
Membru din: Joi Dec 07, 2006 8:35 pm
Localitate: Ploiesti

Mesajde keepwalking » Joi Feb 05, 2009 11:09 am

Deci fi atent cum faci.

Baga o cheie unica:

Cod: Selectaţi tot

ALTER TABLE `poze`  ADD COLUMN `cheie` int(11) NOT NULL AUTO_INCREMENT,
  ADD PRIMARY KEY (`cheie`);



Cand bagi poza baga ceva de genu

Cod: Selectaţi tot

INSERT INTO `poze` (id_user, nume_poza, ordine) VALUES ('{$iduser}', 'nume poza', '{$ordine}', NULL);


Iar dupa fiecare poza adaugata executa query-urile astea (separat)

Cod: Selectaţi tot

set @num = 0;
UPDATE `poze` SET ordine = (SELECT @num := (@num+1) FROM DUAL) ORDER BY `cheie` DESC


[/code]

dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Joi Feb 05, 2009 11:16 am

Cod: Selectaţi tot

$nrpoza=nrmaxpoze($iduser, "poze");
$query = "INSERT INTO `poze` (id_user, nume_poza, ordine) VALUES ('{$iduser}', 'nume poza', '{$nrpoza}');
mysql_query($query) or die(mysql_error() . '<br />' . $query);

......

function nrmaxpoze($userid, $tabel)
{
   $q="select max(ordine) as nrmaxf from ".$tabel. " where id_user={$userid}";
   $r=mysql_query($q);
   $row=mysql_fetch_array($r);

   $nrf=$row['nrmaxf']+1;
   return $nrf;
}   


Nu am verificat codul dar cred ca e ok!

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 05, 2009 3:02 pm

am incercat varianta ta dant acuma si primesc

Cod: Selectaţi tot

Fatal error: Call to undefined function: nrmaxpoze() in /home/hosting/forum17/test/upload.php on line 463
... iam adaugat functia care o cere iar apoi nu mai afiseaza nimic... uite am lasat codul cam cum ai zis u:)

Cod: Selectaţi tot

<?
session_start();
require_once('config.php');

{
if ($_FILES["fisier"]["error"] > 0)
{
  echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
}
else
{
  if (file_exists("vot/" . $_FILES["fisier"]["name"]))  // verificam daca fisierul exista deja pe server
  {
    echo "Fisierul pe care incerci sa-l uploadezi exista deja";
  }
  else
  {
     $nrpoza=nrmaxpoze($iduser, "poze");
    $query = "INSERT INTO `poze` (id_user, nume_poza, ordine) VALUES ('{$iduser}', 'nume poza', '{$nrpoza}')";
    mysql_query($query) or die(mysql_error() . '<br />' . $query);
    move_uploaded_file($_FILES["fisier"]["tmp_name"], "vot/".$_FILES["fisier"]["name"]);  // se muta fisierul din directorul temporar al serverului in directorul final
   
    {
      echo "Succes! Poza a fost adaugata in baza de date.";
     
    }

function nrmaxpoze($userid, $tabel)
{
   $q="select max(ordine) as nrmaxf from ".$tabel. " where id_user={$userid}";
   $r=mysql_query($q);
   $row=mysql_fetch_array($r);

   $nrf=$row['nrmaxf']+1;
   return $nrf;
}   
}   
  }
}
?>   

SI keepwalking la partea ta tot primesc o eroare in legatura cu @ ala nu stiu ce nu folosesc bine... oricum mam tampit nu mai nteleg nimic o sa mai incerc diferite variante a si ziceai keepwalking k vreau sa ramana ultima mereu numar 1 deci eu incercam sa fac cum a zis birkoff adica citez
o varianta mai optima ar fi ca sa renunti la poza principala din tabelul de useri si sa tii toate pozele userilor in tabelul pentru poze, la care sa mai adaugi inca un camp pentru ordinea de afisare (1,2,3 etc unde 1 sa fie poza principala) astfel sa poata modifica ordinea daca vrea userul direct, fara sa mai uploadeze alte poze... (cumva sa ii apara toate pozele si sa aiba fiecare un link de genul, seteaza aceasta poza ca poza principala, sau cam asa ceva)
am citat cum a zis el si am zis ca pe varianta asta incerc:) noroc

dant_71
Average Member
Mesaje: 83
Membru din: Sâm Ian 27, 2007 1:04 am

Mesajde dant_71 » Joi Feb 05, 2009 5:40 pm

incearca asa:

Cod: Selectaţi tot

<?php
session_start();
require_once('config.php');
{
if ($_FILES["fisier"]["error"] > 0)
{
  echo "A intervenit o eroare: " . $_FILES["fisier"]["error"] . "<br />";
}
else
{
  if (file_exists("vot/" . $_FILES["fisier"]["name"]))  // verificam daca fisierul exista deja pe server
  {
    echo "Fisierul pe care incerci sa-l uploadezi exista deja";
  }
  else
  {
    $nrpoza=nrmaxpoze($iduser, "poze");
    $query = "INSERT INTO `poze` (id_user, nume_poza, ordine) VALUES ('{$iduser}', 'nume poza', '{$nrpoza}')";
    mysql_query($query) or die(mysql_error() . '<br />' . $query);
    move_uploaded_file($_FILES["fisier"]["tmp_name"], "vot/".$_FILES["fisier"]["name"]);  // se muta fisierul din directorul temporar al serverului in directorul final
   
    {
      echo "Succes! Poza a fost adaugata in baza de date.";
     
    }


}   
  }
}

?>

<?php
function nrmaxpoze($userid, $tabel)
{
   $q="select max(ordine) as nrmaxf from ".$tabel. " where id_user={$userid}";
   $r=mysql_query($q);
   $row=mysql_fetch_array($r);

   $nrf=$row['nrmaxf']+1;
   return $nrf;
}   
?> 


ideea e sa pui functia chiar la sfarsitul scriptului. eu am verificat codul si merge.
eventual da un echo la $query sa vezi cum arata si lanseaza-l din phpmyadmin.

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 05, 2009 11:20 pm

merci dant mult incerc imediat apropo nu stii de ce daca dau echo la $iduser numi afiseaza nimic? doar daca dau la rand id imi afiseaza:|

sebyku
Senior Member
Mesaje: 638
Membru din: Mar Ian 13, 2009 6:52 pm
Localitate: Suceava
Contact:

:)

Mesajde sebyku » Joi Feb 05, 2009 11:58 pm

pfff man merge imi uploadeaza poza acuma am incercat numai ca in baza de date la ficare poza la ordine are cifra 1... iar la id user de fiecare data e 0... daca reusesc sa vad undei duma postez ce am rezolvat:) noroc:)

EDIT: la id user am rezolvat nu mai apare 0 apare corect cu id care ma loghez:)

EDIT: ce sandala-s merge gata dupa c am rezolvat cu id auotmat sa facut si ordinea se autoaranjeaza:X dupa id:) acu ma apuc sa fac afisarea:D


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 18 vizitatori