Bonjour,
Je cherche un moyen de réaliser plusieurs requêtes SQL en une seule fois (avec deux tables différentes).
Contexte actuel :
1. Un utilisateur scanne un barcode et valide
2. La requête va rechercher si le code barre existe déjà ou pas en base
3. Si le code barre n'existe pas, le script insère le code barre + d'autres infos d'une table1 vers la table2
> jusque la tout va bien
Le script qui fait ça en PDO :
4. l'utilisateur doit ensuite aller sur une page, rescanner le même barre code que précédemment (car maintenant il existe en base table2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 <?php //Connections try { $handler = new PDO('mysql:host=localhost:3307;dbname=basededonnees','root', 'password'); $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e){ exit($e->getMessage()); } $codebar = isset($_POST['barcode']) ? $_POST['barcode'] : NULL; //Verification if(!isset($error)){ //no error $sthandler = $handler->prepare("SELECT * FROM table2 WHERE quantite = 0 AND barcode=:barcode"); $sthandler->bindParam(':barcode', $codebar); $sthandler->execute(); if($sthandler->rowCount() > 0){ echo "<center><span style=background:#FFFFFF><font color=red><b>!! Code déjà scanné !!</b></font></span><br />"; header("Refresh: 3; URL=index.php"); } else { //insert into database $sql = 'insert into table2 (barcode_table2, quantity_table1, date, datafix1, datafix2) SELECT distinct barcode_table1, quantity_table1, now(), "donnéefixe1", "donnéefixe2" from table1 where barcode_table1 = :barcode'; $query = $handler->prepare($sql); $query->execute(array(':barcode' => $codebar)); echo "<center><FONT SIZE=4 FACE=Arial><b>OK<font color='red'>enregistrement en base...</font></font></center>"; header("Refresh: 2; URL=index.php"); } }else{ echo "erreur d'insertion, réessayez ".$error; exit(); } ?>
5. un formulaire s'affiche avec les infos qu'il peut modifier (une quantité dans mon cas)
6. l'utilisateur modifie ou non la quantité selon et ensuite le script fait un update en base table2
> jusque ici aussi tout va bien je dois juste adapter de mysql vers PDO (je suis oqp de tout migrer mes scripts en PDO).
Ce que je souhaiterai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 <html> <?php @mysql_connect('localhost', 'root', 'password') or die(mysql_error()); @mysql_select_db("base") or die(mysql_error()); $barcode = $_GET['barcode']; $query = @mysql_query("SELECT * FROM table2 WHERE barcod_table2 = '$barcode'") or die(mysql_error()); if(mysql_num_rows($query)>=1){ while($row = mysql_fetch_array($query)) { $barcode = $row['barcod_table2']; $quantity = $row['quantity_table2']; $newquantity = $row['newquantity_table2']; $id = $row['id']; } ?> <body> <center> <font color="black">RETOUR</b><br /> <b> CONSO L1 </b></font><br /> <form action="update.php" method="post"> <input type="hidden" name="ID" value="<?=$id;?>"> <p> <label for="barcode"><b><font color="Black">Code Barre</font></b></label> <input type="text" name="barcode" value="<?=$barcode?>" readonly><br /></p> <p><label for="quantity"><b><font color="black">Quantité de départ</font></b></label> <input type="text" name="quantity" value="<?=$quantity?>" readonly><br /></p> <p> <label for="newquantity"><b><font color="black">Quantité restante</font></b></label> <input type="text" name="newquantity" value="<?=$newquantity?>" required><br /></p> </center> <div class="row"> <center> <p><button type="submit">VALIDER</button></p> </center> </div> </form> </div> <?php }else{ echo "<p><center>($barcode)</center><p>"; echo '<center><FONT SIZE=4 FACE=Arial><font color="red">Code barre inconnu. </font><br /><p><a href="javascript:history.back()">RETOUR</a></p></center>'; } ?> </body> </html>
1. l'utilisateur scanne le code barre
2. mon script ajoute le code barre de la table 1 + les infos de table 1 (quantité etc...) vers la table 2 (c'est mon premier script PDO)
3. le script m'affiche AUSSITÔT un formulaire modifiable avec les datas fraichement insérées dans la table 2
4. je modifie sur le formulaire et je fais un update de ma base via un bouton valider
Est-ce faisable ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $query="UPDATE table2 SET table2_quantite = '$newquantity' , process ='R' WHERE table2_barcod ='$barcode'";
La où je bloque c'est comment insérer les datas mais directement ensuite afficher ces datas dans un formulaire modifiable.
Merci bcp
Partager