Avatar billede crabber Nybegynder
09. august 2007 - 09:26 Der er 19 kommentarer

Fra PHP4 til PHP5 problem?

Jeg har fået et problem med noget kode. Det skal lige siges at det ikke er mig selv der har lavet det, men jeg har prøve at lave det om til php5 fordi det var skrevet i php4.

Problemer er ikke så stort, men det er der. På selve siden er der en knap hvor man kan kopiere det produkt man har lavet, hvor den så vil lave en kopi i dben. Til et produkt hører også nogle tekst og pdf linier, der vil den kun copier den første linjie af både tekst og pdf, men den skal kopiere alle linjer også i dben.

Koden som skulle kopier produktet, tekst og pdf linjierne:

  /* Copy procuct */
  $sql = false;
  $emnerResult = mysql_query("SELECT `overskrift`, `produkt_img_id`, `nyhed`, `gid` FROM `produkter` WHERE id = '$_GET[id]'") or die(mysql_error());
  $e = mysql_fetch_array($emnerResult);
  foreach($e as $a => $b) if(!is_numeric($a)) $sql .= (($sql) ? ", " : "")."`$a` = '".(($a == 'overskrift') ? "(KOPI) " : "")."$b'";
  $insertResult = mysql_query("INSERT INTO `produkter` SET $sql") or die(mysql_error());
 
  /*  Get new product id */
  $idResult = mysql_query("SELECT `id` FROM `produkter` ORDER BY `id` DESC limit 0,1") or die(mysql_error());
  $i = mysql_fetch_array($idResult);

  /* Copy pdf */
  $sql = false;
  $pdfResult = mysql_query("SELECT `beskrivelse_id`, `pdf_id` FROM `produkt_pdf` WHERE `pro_id` = '".$_GET['id']."'") or die(mysql_error());
  $p = mysql_fetch_array($pdfResult);
  if(is_array($p))
  {
    foreach($p as $a => $b) if(!is_numeric($a)) $sql .= (($sql) ? ", " : "")."`$a` = '$b'";
    $insertResult = mysql_query("INSERT INTO `produkt_pdf` SET $sql, `pro_id` = '".$i['id']."'") or die(mysql_error());
  }

  /* Copy tekst */
  $sql = false;
  $textResult = mysql_query("SELECT `beskrivelse_id`, `tekst` FROM `produkt_tekst` WHERE `pro_id` = '".$_GET['id']."'") or die(mysql_error());
  $t = mysql_fetch_array($textResult);
  if(is_array($t))
  {
    foreach($t as $a => $b) if(!is_numeric($a)) $sql .= (($sql) ? ", " : "")."`$a` = '$b'";
    $insertResult = mysql_query("INSERT INTO `produkt_tekst` SET $sql, `pro_id` = '".$i['id']."'") or die(mysql_error());
  }

Jeg håber der er nogen som kan hjælpe mig.
Avatar billede brinck10 Nybegynder
09. august 2007 - 09:35 #1
Hey.. et problem jeg ser, som du har ordnet mange steder, har du glemt at rette øverst.

  $emnerResult = mysql_query("SELECT `overskrift`, `produkt_img_id`, `nyhed`, `gid` FROM `produkter` WHERE id = '$_GET[id]'") or die(mysql_error());

Der har du glemt at sætte id rigtigt; det skal være sådan:

  $emnerResult = mysql_query("SELECT `overskrift`, `produkt_img_id`, `nyhed`, `gid` FROM `produkter` WHERE id = '".$_GET[id]."'") or die(mysql_error());

Vh. Brinck
Avatar billede crabber Nybegynder
09. august 2007 - 09:56 #2
ja det kan jeg se, men det er nu ikke den fejl. Problemer er at den skal kopier alle antal rækker, men den kopier kun den øverste.
Avatar billede jakobdo Ekspert
09. august 2007 - 10:45 #3
ID kan nu godt sættes dom du gjorde tidligere.

Variabler mellem " og " findes automatisk af PHP
Det gør det dog ikke i mellem ' og '

Hvad er problemet ellers?
Virker det slet ikke?
Virker det halvt eller?
Avatar billede crabber Nybegynder
09. august 2007 - 10:49 #4
Okay, Det virker kun halvt. Den vil gerne kopiere produktet og den linjie af både tekst og pdf. Men den skal kopiere flere linjier. Til et produkt hører der nogle tekst og pdf linjier som er relateret til et produkt. Så når jeg trykker på kopiere produkt skal den kopiere produktet og de tilhørerne tekst og pdf linijer som er i dben.
Avatar billede crabber Nybegynder
09. august 2007 - 11:07 #5
Jeg har somsagt lavet koden om fra php4 til php5.
Avatar billede jakobdo Ekspert
09. august 2007 - 11:42 #6
Men det kode du viser der, er der ikke meget PHP4 vs PHP5 over.
Det er jo mere eller mindre ren SQL.
Avatar billede crabber Nybegynder
09. august 2007 - 11:59 #7
ja det ved jeg. Men det burde jo være den kode som kopiere rækkerne. og det gør den jo ikke helt. Jeg har kigget lidt på den foreach løkker som skulle oprette de nye rækker i dben, men jeg kan ikke se om det er dem den skulle være galt med.
Avatar billede jakobdo Ekspert
09. august 2007 - 12:21 #8
Du har jo tjekket:
if(is_array($p))
på en af linier.
Hvad med at smide det på dem alle?

Og evt. lave:

if(is_array($p))
{
echo 'Vi kom så langt her...';
//KODE
}
else
{
echo 'Ej et array';
}
Avatar billede crabber Nybegynder
09. august 2007 - 14:02 #9
Jeg tror problemet ligge i selve foreach løkken for den kopiere kun første linje af både tekst og pdf.
Avatar billede jakobdo Ekspert
09. august 2007 - 14:21 #10
Hvor kommer det tekst og PDF du snakker om?
Avatar billede crabber Nybegynder
09. august 2007 - 21:10 #11
Det kommer fra dben. Først bliver produktet kopieret, derefter bliver alle de tekst og pdf række som passer til det kopieret produkt trukket ud fra dben og skal derefter kopieres også så vi for et produkt som er fuldstændig ens. Min problem er at den kun kopiere en række fra mit produkt og ikke eks 7 rækker som der er det dette produkt.
Avatar billede jakobdo Ekspert
09. august 2007 - 21:17 #12
Prøv at print $i efter denne linie:

$i = mysql_fetch_array($idResult);

echo '<pre>';
print_r($i);
echo '</pre>';
Avatar billede crabber Nybegynder
10. august 2007 - 08:47 #13
Den udskriver bare array og hvis jeg printer $t eller $p skriver den også bare array. Og den udskriver det kun 1 gang.
Avatar billede jakobdo Ekspert
10. august 2007 - 09:32 #14
Hvad indeholder $i ?
Avatar billede crabber Nybegynder
10. august 2007 - 11:52 #15
$i indeholder det nye id som er lavet til det kopiret produkt. Og $t og $p skulle indholde alle de rækker af både tekst og pdf rækker som har et relateret pro_id som passer til det gamle produkt alså ikke det kopieret. Og når jeg så kopirer rækkerne tager jeg $i, alså det nye produkt og sætter ind i pro_id så jeg for et fulstændigt kopieret produkt.
Avatar billede crabber Nybegynder
10. august 2007 - 11:53 #16
Jeg vil lige sige at jeg er rigtigt glad for du gider hjælpe mig...
Avatar billede jakobdo Ekspert
10. august 2007 - 19:17 #17
Prøv at test alle dine sql'er og se om de giver flere resultater eller giver det resultat som er forventet?
Avatar billede crabber Nybegynder
13. august 2007 - 09:24 #18
Jeg har prøvet at teste forskellige ting nu og det gir nogle underlige resultater. Hvis jeg eks. prøver at udskrive id'et i en echo lige efter foreach løkken ud udskriver den 78 hvor id'et hedder 74. og den udskriver det 5 gange, men id'et finde kun 4 gange. Jeg tænkte på om du(jakobdo) måske ville kigge på det hvis du fik filen og min db?
Avatar billede jakobdo Ekspert
13. august 2007 - 17:30 #19
Du må da gerne prøve at sende det ja!
Kan du ikke starte med at fange mig på msn?
jakobdo /@\ hotmail \dot/ com
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester