Joindre 2 fichiers php en un seul

Petit nouveau ! | 1 Messages

29 mai 2011, 01:15

Bonjour,

je suis en train de me créer un site e-commerce, mais c'est un peu laborieux, puisque je ne connais pas très bien l'univers php. Mais bon, je fais ce que je peux!

Voici mon problème:

Je suis en train de créer un site web axé sur la vente de végétaux et de semences. Le catalogue des items à vendre est donc séparé en deux parties. La première pour la vente des végétaux à proprement parler (une page php pour cela) et la seconde pour la vente de semences (une autre page php pour cette dernière).

La page de végétaux marche selon le format de l'arbre acheté, tandis que la page de semences marche selon le poids des semences achetées.

Une table nommée specs, permet d'afficher les différents formats (végétaux).

Une table nommée poids, permet d'afficher les différents poids (semences).

Les fichiers cart1.php et cart01.php sollicitent la table poids, tandis que les fichiers cart2.php et cart02.php sollicitent la table specs. Ces fichiers fonctionnent correctement, mais ne permettent pas de faire marcher le catalogue des végétaux et le catalogue des semences simultanément, puisque j'ai créé la page panier.php pour qu'elle ne sollicite qu'un seul des fichiers cart.php et qu'un seul des fichiers cart0.php... Je voudrais donc fusionner les deux fichiers cart.php (que j'ai appelés cart1.php et cart2.php pour les distinguer), ainsi que les deux fichiers cart0.php (que j'ai appelés cart01.php et cart02.php pour les distinguer eux aussi). J'ai essayé 5 méthodes différentes, mais rien n'a marché... Bref, je ne sais pas comment faire pour fusionner ces deux paires de fichiers... Pouvez-vous m'aider s'il-vous-plaît?

Voici les scripts des 4 fichier concernés:

cart1.php

<?php session_start();

//* ouverture de session
//* insertion d'un fichier-master de fonctions
//* création d`un objet-connection

include("lib/lna.php");

$topdb = new topdb();
$topdb->connect();


$client = session_id();

$quantite = intval( $_REQUEST['quantite'] );
$a_poids = split( "\@", $_REQUEST['poids'] );
$poids = trim( $a_poids[0] );
$prix = doubleval( $a_poids[1] );


//foreach ( $_REQUEST AS $Key => $Val ) { echo $Key .'=>'. $Val . '<br>'; }
//* Requête envoyée sur la table panier
//* pour supprimer les commandes non finalisées depuis plus de 24 heures

$sql = "DELETE FROM panier WHERE status <> 'finalise' AND (TO_DAYS(lnacode) - TO_DAYS(CURRENT_DATE()) < 0)";
$topdb->execute($sql);

/////////////////////////////////////////////////////////////

$i_poids = eregi_replace("\*", '"', $poids);

$sql = "SELECT * FROM poids WHERE isbn='$_REQUEST[isbn]' AND poids='$i_poids' LIMIT 1";
$topdb->execute($sql);
$t_inventaire = intval( $topdb->data[0]['quantite'] );
unset( $topdb->data );

if( $quantite > $t_inventaire ) {

print <<<eof
<script language="javascript">
alert("Désolé... $t_inventaire en inventaire")
</script>
eof;

exit();

}

/////////////////////////////////////////////////////////////

//* Requête-sql de type UPDATE pour tenter de mettre à jour la table panier en fonction des
//* arguments envoyés par l'hyperlien dynamique.
//* Si $topdb->rows retourne une valeur égale à 0, une autre requête
//* de type INSERT cette fois, prend en charge l'insertion à la table panier.


$sql = "UPDATE panier SET quantite = $quantite WHERE client='$client' AND isbn='$_REQUEST[isbn]' AND poids='$poids'";
$topdb->execute($sql);
$total = $topdb->rows;


if( $total <= 0 ) {

$sql = "INSERT INTO panier(client, isbn, titre, poids, prix, quantite) VALUES('$client', '$_REQUEST[isbn]', '$_REQUEST[titre]', '$poids', $prix, $quantite)";
$topdb->execute($sql);

}



//* Ajout (écriture) d'un petit script javascript commandant l'écriture de - ajout au panier
//* sur acceuil à côté du produit commandé

print <<<eol
<script language="javascript">
<!--
alert("Ajout au panier")
//-->
</script>
eol;


//* fermeture de l`objet-connection
//* destruction de l`objet-connection

$topdb->disconnect();
unset($topdb);

cart2.php

<?php session_start();

//* ouverture de session
//* insertion d'un fichier-master de fonctions
//* création d`un objet-connection

include("lib/lna.php");

$topdb = new topdb();
$topdb->connect();


$client = session_id();

$quantite = intval( $_REQUEST['quantite'] );
$a_specs = split( "\@", $_REQUEST['format'] );
$format = trim( $a_specs[0] );
$prix = doubleval( $a_specs[1] );


//foreach ( $_REQUEST AS $Key => $Val ) { echo $Key .'=>'. $Val . '<br>'; }
//* Requête envoyée sur la table panier
//* pour supprimer les commandes non finalisées depuis plus de 24 heures

$sql = "DELETE FROM panier WHERE status <> 'finalise' AND (TO_DAYS(lnacode) - TO_DAYS(CURRENT_DATE()) < 0)";
$topdb->execute($sql);

/////////////////////////////////////////////////////////////

$i_format = eregi_replace("\*", '"', $format);

$sql = "SELECT * FROM specs WHERE isbn='$_REQUEST[isbn]' AND format='$i_format' LIMIT 1";
$topdb->execute($sql);
$t_inventaire = intval( $topdb->data[0]['quantite'] );
unset( $topdb->data );

if( $quantite > $t_inventaire ) {

print <<<eof
<script language="javascript">
alert("Désolé... $t_inventaire en inventaire")
</script>
eof;

exit();

}

/////////////////////////////////////////////////////////////

//* Requête-sql de type UPDATE pour tenter de mettre à jour la table panier en fonction des
//* arguments envoyés par l'hyperlien dynamique.
//* Si $topdb->rows retourne une valeur égale à 0, une autre requête
//* de type INSERT cette fois, prend en charge l'insertion à la table panier.


$sql = "UPDATE panier SET quantite = $quantite WHERE client='$client' AND isbn='$_REQUEST[isbn]' AND format='$format'";
$topdb->execute($sql);
$total = $topdb->rows;


if( $total <= 0 ) {

$sql = "INSERT INTO panier(client, isbn, titre, format, prix, quantite) VALUES('$client', '$_REQUEST[isbn]', '$_REQUEST[titre]', '$format', $prix, $quantite)";
$topdb->execute($sql);

}



//* Ajout (écriture) d'un petit script javascript commandant l'écriture de - ajout au panier
//* sur acceuil à côté du produit commandé

print <<<eol
<script language="javascript">
<!--
alert("Ajout au panier")
//-->
</script>
eol;


//* fermeture de l`objet-connection
//* destruction de l`objet-connection

$topdb->disconnect();
unset($topdb);

cart01.php

<?php session_start();

//* ouverture de session
//* insertion d'un fichier-master de fonctions
//* création d`un objet-connection

include("lib/lna.php");

$topdb = new topDB();
$topdb->connect();

$client = session_id();

//////////////////////////////////////////////////////////////////
//* Itération à travers les petits text-box qui contiennent les quantités et dont les valeurs
//* ont été envoyés par POST et requête de MISE À JOUR sur les lignes ou il
//* apparaît que la quantité a été modifiée, après vérification que la quantité
//* demandée est disponible sur la table - inventaire.

foreach ( $_POST AS $Key => $Val ) {

$t_string = base64_decode($Key);
$item = split( "\|\|", $t_string );

$itemID = $item[1];
$isbn = $item[2];
$poids = $item[3];
$i_poids = eregi_replace("\*", '"', $poids);
$Val = intval($Val);

$sql = "SELECT * FROM poids WHERE isbn='$isbn' AND poids='$i_poids' LIMIT 1";
$topdb->execute($sql);
$t_inventaire = intval( $topdb->data[0]['quantite'] );
unset( $topdb->data );

if( $Val > $t_inventaire ) { continue; }

$sql = "UPDATE panier SET quantite = $Val WHERE client='$client' AND itemID=$itemID";
$topdb->execute($sql);

}


print <<<eof
<script language="JavaScript">
<!--
location.replace("panier.php")
//-->
</script>
eof;


//////////////////////////////////////////////////////////////////


$topdb->disconnect();
unset($topdb);

cart02.php

<?php session_start();

//* ouverture de session
//* insertion d'un fichier-master de fonctions
//* création d`un objet-connection

include("lib/lna.php");

$topdb = new topDB();
$topdb->connect();

$client = session_id();

//////////////////////////////////////////////////////////////////
//* Itération à travers les petits text-box qui contiennent les quantités et dont les valeurs
//* ont été envoyés par POST et requête de MISE À JOUR sur les lignes ou il
//* apparaît que la quantité a été modifiée, après vérification que la quantité
//* demandée est disponible sur la table - inventaire.

foreach ( $_POST AS $Key => $Val ) {

$t_string = base64_decode($Key);
$item = split( "\|\|", $t_string );

$itemID = $item[1];
$isbn = $item[2];
$format = $item[3];
$i_format = eregi_replace("\*", '"', $format);
$Val = intval($Val);

$sql = "SELECT * FROM specs WHERE isbn='$isbn' AND format='$i_format' LIMIT 1";
$topdb->execute($sql);
$t_inventaire = intval( $topdb->data[0]['quantite'] );
unset( $topdb->data );

if( $Val > $t_inventaire ) { continue; }

$sql = "UPDATE panier SET quantite = $Val WHERE client='$client' AND itemID=$itemID";
$topdb->execute($sql);

}


print <<<eof
<script language="JavaScript">
<!--
location.replace("panier.php")
//-->
</script>
eof;


//////////////////////////////////////////////////////////////////


$topdb->disconnect();
unset($topdb);

Eléphant du PHP | 80 Messages

30 mai 2011, 10:48

Donc il y a une table pour semence et une pour vegetaux ? Et je suppose une pour le client ? (Plus poids et formats que tu peux mettre en relation avec Vegetaux et semance)
Et si tu créais une table VENTE, avec trois clés primaires IdPlante, IdSemance et IdClients, qui recenserait donc les 3 id, le client, la plante qu'il veut, et la semence qu'il veut, et vu que elle sera à 3 clés, il pourra y avoir un client, pour plusieurs plantes, et plusieurs semences, ou plusieurs plantes pour un seul client et une seule semence, etc.
(Exemple: P1 pour id de la plante 1, S1 pour id de la semence 2, et C1 pour id du client n°1, donnerait P1, S1, C1, et/ou P2, S1, CI, et/ou P2, S2, C1, etc)
Et via les enregistrements ainsi créées et tes relations, tu peux récupérer les poids et formats en passant de table en table (Ou inversement, partir du poids et arriver aux ventes ...)
Le tout sans contradiction dans ta bdd.

Je suis pas sûr que ce soit très clair, mais tu comprends le principe ?
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.