Page 1 sur 3
comparer des éléments d'une base
Posté : 22 janv. 2006, 19:22
par hervéh
bonsoir, je cherche à faire comparatif d'élément d'une base de donnée comme par exemple sur le site de la fnac ou on peut comperer des téléviseur sentre eux.
quelqu'un connait il une adresse web ou trouver un exemple de ce genre de scripte.

Posté : 22 janv. 2006, 20:59
par Cyrano
Le principe est simple : il te faut utiliser une variable de session où tu stockes les identifiants des éléments sélectionnée de façon à pouvoir faire une requête juste sur ces éléments-là.
Je ne connais pas de script tout fait pour ça, mais ce n'est pas ce qu'il y aurait de plus compliqué à développer.
Posté : 23 janv. 2006, 07:28
par hervéh
merci, je commence ça ce soir,

Posté : 05 févr. 2006, 12:24
par hervéh
bonjour, j'ai encore besion d'un petit peut d'aide car ça fait plusieurs jours que j'avance plus.
J'ai créer mes pages mais je galère maintenant pour enregistrer mes variables dans ma cession
voici mon code 1ere page:
<? session_start(); ?>
<?php
$_SESSION['id_machine'] = $_POST['id_machine'];
session_register('machine');
?>
<?php require_once('admin/connect.php'); ?>
<?
$sql=" SELECT * FROM machine ";
$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
if(!mysql_query($sql,$db)){
print "erreur $sql <br>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php
$nb_resultat=mysql_num_rows ($result);
if ($nb_resultat == 0)
echo "Pas résultats pour cette recherche<br>";
else
{
echo '<form id="form1" name="form1" method="post" action="resultat_comparatif_twinhorn.php">';
echo '<table cellspacing="3" >'."\n";
echo '<tr>';
echo '<th class="thead">id_machine</th>';
echo '<th class="thead">model</th>';
echo '<th class="thead">course</th>';
echo '<th class="thead">Select comparatif</th>';
echo '</tr>'."\n";
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td>'.$row['id_machine'].'</td>';
echo '<td>'.$row['model'].'</td>';
echo '<td>'.$row['course'].'</td>';
echo '<td><label><input type="checkbox" name="'.$row['id_machine'].'" value="'.$row['id_machine'].'" /></label></td>';
}
echo '<tr>';
echo '</table>'."\n";
echo '<label>';
echo '<input type="submit" name="Submit" value="Envoyer" />';
echo '</label>';
echo '</form>';
}
?>
</body>
</html>
et la page de resultat:
<? session_start(); ?>
<?php
$_SESSION['id_machine'] = $_POST['id_annee'];
session_register('machine');
?>
<?php require_once('admin/connect.php'); ?>
<?
$sql=" SELECT * FROM machine WHERE id_machine = '". $id_machine ."' ";
$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
if(!mysql_query($sql,$db)){
print "erreur $sql <br>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php
$nb_resultat=mysql_num_rows ($result);
if ($nb_resultat == 0)
echo "Pas selection<br>";
else
{
echo '<table cellspacing="3" >'."\n";
echo '';
echo '<tr>';
echo '<th class="thead">id_machine</th>';
echo '<th class="thead">model</th>';
echo '<th class="thead">course</th>';
echo '</tr>'."\n";
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td>'.$row['id_machine'].'</td>';
echo '<td>'.$row['model'].'</td>';
echo '<td>'.$row['course'].'</td>';
echo '<tr>';
echo '</table>'."\n";
}
?>
</body>
</html>
<? mysql_close($db); ?>
je pense que j'ai 2 problème en fait l'enregistrement des mes variables mais aussi dans le trie (WHERE) de la page résultat.
Posté : 05 févr. 2006, 12:47
par Cyrano
On va commencer par corriger ce code qui contient des erreurs, avec un peu d'optimisation au passage: refait le test et reviens ensuite avec le résultat :
Première page :
<?php
session_start();
$_SESSION['id_machine'] = $_POST['id_machine'];
session_register('machine'); // A QUOI SERT CETTE LIGNE ???
require_once('admin/connect.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php
$sql=" SELECT * FROM machine ";
$result = mysql_query($sql) or die('Erreur SQL !<br />\n'.$sql.'<br />\n'.mysql_error());
if(!mysql_query($sql,$db))
{
print "erreur ". $sql ."<br />\n";
}
$nb_resultat=mysql_num_rows ($result);
if ($nb_resultat == 0)
{
?>
<p>Pas résultats pour cette recherche</p>
<?php
}
else
{
?>
<form id="form1" name="form1" method="post" action="resultat_comparatif_twinhorn.php">
<table cellspacing="3" >
<tr>
<th class="thead">id_machine</th>
<th class="thead">model</th>
<th class="thead">course</th>
<th class="thead">Select comparatif</th>
</tr>
<?php
while($row = mysql_fetch_array($result))
{
?>
<tr>
<td><?php echo($row['id_machine']); ?></td>
<td><?php echo($row['model']); ?></td>
<td><?php echo($row['course']); ?></td>
<td><label><input type="checkbox" name="<?php echo($row['id_machine']); ?>" value="<?php echo($row['id_machine']); ?>" /></label></td>
</tr>
<?php
}
?>
</table>
<label><input type="submit" name="Submit" value="Envoyer" /></label>
</form>
<?php
}
?>
</body>
</html>
Page de resultat:
<?php
session_start();
$_SESSION['id_machine'] = $_POST['id_annee'];
session_register('machine'); // A QUOI SERT CETTE LIGNE ???
require_once('admin/connect.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php
$sql=" SELECT * FROM machine WHERE id_machine = '". $id_machine ."' ";
$result = mysql_query($sql) or die('Erreur SQL !<br />\n'.$sql.'<br />\n'.mysql_error());
if(!mysql_query($sql,$db))
{
print "erreur ". $sql ."<br />\n";
}
$nb_resultat = mysql_num_rows($result);
if ($nb_resultat == 0)
{
?>
<p>Pas de selection</p>
<?php
}
else
{
?>
<table cellspacing="3">
<tr>
<th class="thead">id_machine</th>
<th class="thead">model</th>
<th class="thead">course</th>
</tr>
<?php
while($row = mysql_fetch_array($result))
{
?>
<tr>
<td><?php echo($row['id_machine']); ?></td>
<td><?php echo($row['model']); ?></td>
<td><?php echo($row['course']); ?></td>
</tr>
<?php
}
?>
</table>
<?php
}
?>
</body>
</html>
<?
mysql_close($db);
?>
Posté : 05 févr. 2006, 12:55
par hervéh
merci pour l'aide, voilà j'ai fait l'essai maintenant il me dit "pas de selection" pour le test j'ai coché les deux 1ere ligne.
Posté : 05 févr. 2006, 13:16
par Cyrano
Observe le code de plus près :
$sql=" SELECT * FROM machine WHERE id_machine = '". $id_machine ."' ";
Où est donc initialisée la variable $id_machine ? Si tu arrives à répondre à cette question, tu auras résolu ton problème. Je préfère te laisser chercher un petit peu, tu auras beaucoup moins de chances d'oublier ce détail à l'avenir que si je te donne la réponse tout de suite

Posté : 05 févr. 2006, 13:32
par hervéh
c'est avec le POST qu'on rentre les variables, mais testé :
mais ça marche pas.
je suis pas sur de faire rentrer mes variable en session. peut être j'ai une erreur d'écriture de code ?
je suis sur le bonne voix ?

Posté : 05 févr. 2006, 13:34
par Cyrano
Ben non: là, tu initialises la variable de session $_SESSION['machine'], pas la variable $machine : donc

Posté : 05 févr. 2006, 14:00
par hervéh
comprend pas, je vois pas à quel endroit je rentre mes valeurs, le seule endroit pour moi c'est value peut être mais je sèche.
Code : Tout sélectionner
<td><label><input type="checkbox" name="<?php echo($row['id_machine']); ?>" value="<?php echo($id_machine=$row['id_machine']); ?>" /></label></td>
Posté : 05 févr. 2006, 14:28
par Cyrano
Ok, je vais essayer de te faire voir la chose différemment : juste après la ligne où tu définis ta requête, ajoute une ligne de débogage:
echo($sql);
Affiche ensuite ta page et regarde de quoi ça a l'air : est-ce que tout a l'air normal ?
Posté : 05 févr. 2006, 14:58
par Invité
mon erreur se trouve donc dans le where ou j'ai aucun résultat.
j'ai essaye de nombreuse solution du genre :
Code : Tout sélectionner
$sql=" SELECT * FROM machine WHERE id_machine = '".$row['id_machine']."' ";
ou
Code : Tout sélectionner
$sql=" SELECT * FROM machine WHERE id_machine = '$id_machine' ";

marche pas.
Posté : 05 févr. 2006, 17:38
par Cyrano
"ça ne marche pas" est la phrase bateau caractéristique dont on ne peut strictement rien faire: on ne voit pas ton ordinateur, on ne voit pas ce que ça affiche ou n'affiche pas, on ne sait pas s'il y a ou non des messages d'erreurs et comme on a pas accès au code ni à la base éventuellement, on ne peut rien tester.
En clair, étoffe un peu ton argumentaire, on a pas de boule de cristal

Posté : 05 févr. 2006, 18:11
par hervéh
dans tout mes essais j'en suis arrivé au code qui suis, et quant je test sur la page il est afiché

as de selection.
en fait ma requete est vide, et je sais pas comment faire controler qu'il y a effectivement des valeurs en mémoire dans ma session.
<?php
session_start();
$_SESSION['id_machine'] = $_POST['id_machine'];
require_once('admin/connect.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php
$sql=" SELECT * FROM machine WHERE id_machine = '".$row['id_machine']."' ";
echo($sql);
$result = mysql_query($sql) or die('Erreur SQL !<br />\n'.$sql.'<br />\n'.mysql_error());
if(!mysql_query($sql,$db))
{
print "erreur ". $sql ."<br />\n";
}
$nb_resultat = mysql_num_rows($result);
if ($nb_resultat == 0)
{
?>
<p>Pas de selection</p>
<?php
}
else
{
?>
<table cellspacing="3">
<tr>
<th class="thead">id_machine</th>
<th class="thead">model</th>
<th class="thead">course</th>
</tr>
<?php
while($row = mysql_fetch_array($result))
{
?>
<tr>
<td><?php echo($row['id_machine']); ?></td>
<td><?php echo($row['model']); ?></td>
<td><?php echo($row['course']); ?></td>
</tr>
<?php
}
?>
</table>
<?php
}
?>
</body>
</html>
<?
mysql_close($db);
?>
Posté : 05 févr. 2006, 21:49
par Cyrano
Mouais, en fin de compte, tu n'as pas répondu à la question. Essaye la chose suivante:
$sql=" SELECT * FROM machine WHERE id_machine = '".$_SESSION['id_machine']."' ";
echo($sql);