comparer des éléments d'une base

hervéh
Invité n'ayant pas de compte PHPfrance

22 janv. 2006, 19:22

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. :shock:

Mammouth du PHP | 19672 Messages

22 janv. 2006, 20:59

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hervéh
Invité n'ayant pas de compte PHPfrance

23 janv. 2006, 07:28

merci, je commence ça ce soir, :D

hervéh
Invité n'ayant pas de compte PHPfrance

05 févr. 2006, 12:24

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.

Mammouth du PHP | 19672 Messages

05 févr. 2006, 12:47

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);
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hervéh
Invité n'ayant pas de compte PHPfrance

05 févr. 2006, 12:55

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.

Mammouth du PHP | 19672 Messages

05 févr. 2006, 13:16

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 ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hervéh
Invité n'ayant pas de compte PHPfrance

05 févr. 2006, 13:32

c'est avec le POST qu'on rentre les variables, mais testé :

Code : Tout sélectionner

$_SESSION['id_machine'] = $_POST[$row['id_machine']];
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 ? :roll:

Mammouth du PHP | 19672 Messages

05 févr. 2006, 13:34

Ben non: là, tu initialises la variable de session $_SESSION['machine'], pas la variable $machine : donc :arrow: :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hervéh
Invité n'ayant pas de compte PHPfrance

05 févr. 2006, 14:00

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>

Mammouth du PHP | 19672 Messages

05 févr. 2006, 14:28

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

05 févr. 2006, 14:58

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' ";
:oops: marche pas.

Mammouth du PHP | 19672 Messages

05 févr. 2006, 17:38

"ç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 ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

hervéh
Invité n'ayant pas de compte PHPfrance

05 févr. 2006, 18:11

dans tout mes essais j'en suis arrivé au code qui suis, et quant je test sur la page il est afiché :Pas 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);
?>

Mammouth du PHP | 19672 Messages

05 févr. 2006, 21:49

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); 
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: