Problème: une base de données et deux tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème: une base de données et deux tables

par Cyrano » 11 juin 2005, 10:29

...je me demande encore comment tu as pu voir ' au lieu de ` :?:
C'est une question de méthode de travail: j'ai des habitudes de codage systématiques tant au niveau de l'écriture elle-même que de la présentation. En général quand je corrige un code, la première chose que je fais avant même d'essayer de comprendre quoique ce soit, c'est de remettre le code en forme "lisible", c'est à dire que je fais les retours à la ligne, l'ajout au besoin des accolades manquantes (même quand elles ne sont pas obligatoires) et une indentation de l'ensemble du code. Après, je regarde si mon éditeur (Zend Studio) détecte des erreurs de syntaxe. Enfin, je cherche le raisonnement suivi par le codeur et je compare par rapport au résultat recherché pour comprendre s'il y a des chances d'arriver au but.

Après, c'est de l'habitude, mais ce qui précède représente déjà 90% du travail à mon avis.

par PhilFree » 11 juin 2005, 10:21

Un couple très pratique: des yeux agiles et un cerveau fonctionnel
C'est le seul logiciel qui n'est pas en download sur le Net si je comprends bien.
(je me demande encore comment tu as pu voir ' au lieu de ` :?: )

Heureusement qu'il y a PHP France et surtout Cyrano.

Merci encore Cyrano.

Post RESOLU

par Cyrano » 11 juin 2005, 10:15

Un couple très pratique: des yeux agiles et un cerveau fonctionnel, sinon, un bon outil d'édition en PHP avec une coloration syntaxique personalisable et un système d'indentation automatique, le tout couplé avec une grande rigueur et de la discipline pour écrire du code proprement et l'habitude de commenter son code :)

par PhilFree » 11 juin 2005, 09:54

Cyrano,

Chapeau bas ! =D>

Monsieur, vous êtes le Phénix des hôtes du PHP.

un grand MERCI

Question subsidiaire, existe-t-il un correcteur syntaxique pour PHP ?
:idea:

par Cyrano » 11 juin 2005, 09:45

Ok, j'avais pas vu un détail, tu fais un SELECT non sur un champ mais sur une valeur:
$query2 = "SELECT 'picture' FROM models WHERE `model` = '" . $_POST['nom'] .  "'";
Devrait être:
$query2 = "SELECT picture FROM models WHERE `model` = '" . $_POST['nom'] .  "'";
Ou encore
$query2 = "SELECT `picture` FROM models WHERE `model` = '" . $_POST['nom'] .  "'";
l'apostrophe est un délimiteur de chaine de caractère en SQL, donc soit tu ne mets rien au tour du nom du champ, soit tu utilises l'accent grave `

par PhilFree » 11 juin 2005, 09:42

Structure de la table models:

model - varchar(20) clé primaire
picture - varchar(30)

La requête est dans mon post, mais je répète:
$query   = "SELECT * FROM dl WHERE `nom` LIKE '".$_POST['nom']."%' AND `langue` LIKE '".$_POST['langue']."' ORDER BY 'nom' ASC";
$result  = mysql_query($query);
$nbrfich = mysql_numrows($result);

$query2 = "SELECT 'picture' FROM models WHERE `model` = '" . $_POST['nom'] .  "'";
$result2= mysql_query($query2);                                     
$val2   = mysql_fetch_array($result2);
$image  = $val2["picture"]; 

if(mysql_num_rows($result2) > 0)
{
    $i = 1;
    while($val2    = mysql_fetch_array($result2))
    {
        echo "<br>image: " . $val2['picture'] . " " . $i;
        $i++;
    }
}
Résultat:

voir ici: http://www.gomaro.ch/asp/fichier2tables.php

Tu peux choisir 1107 comme Modèle :arrow:

par Cyrano » 11 juin 2005, 09:18

if(mysql_num_rows($result2) > 0)
{
    $i = 1;
    while($val2    = mysql_fetch_array($result2))
    {
        echo "<br>image: " . $val2['picture'] . " " . $i;
        $i++;
    }
}
Affiche:

image: picture 1

alors que ça devrait afficher:

image: th_1107.gif 1

Est-ce que ça te serait utile de voir la page en fonction ?
Ce serait intéressant de voir d'une part la structure de la table et à coté la requête que tu fais : ce n'est pas tout à fait normal comme sortie ce que tu nous montres.

par PhilFree » 11 juin 2005, 09:02

Si vous avez une idée concernant mon problème, je suis preneur.

Je ne sais vraiment plus quoi faire :?: :?: :?:

par PhilFree » 10 juin 2005, 22:30

Salut pjl et PRoGRaFLaSH !

Si ça vous intéresse, vous pouvez essayer la page ici:


Je pense que ça peut vous aider à comprendre mon problème.

.

par DocType » 10 juin 2005, 22:24

Pourquoi ne pas faire dans ce cas:
- id_gen
- id_lang_1 (nombre ou 0 si pas dans cette langue)
- id_lang_2 (nombre ou 0 si pas dans cette langue)
- id_lang_3 (nombre ou 0 si pas dans cette langue)

et une autre avec:
- id_article
- description
- article
Et si demain, il bosse avec 4 langues ?
Il est obligé de revoir tout son code ?

Perso, je ne ferais pas celà mais :
- une table langue avec un id_langue
- une table article avec les éléments communs indépendant de la langue (image, etc) avec un id_article
- une table description avec comme clef la combinaison id_langue-id_article et les élèment spécifique à la langue(description, etc).
SOrry :oops:
J'avais pas grillé ca :roll:
Je soutiens aussi ta méthode :wink:

par PhilFree » 10 juin 2005, 21:45

if(mysql_num_rows($result2) > 0)
{
    $i = 1;
    while($val2    = mysql_fetch_array($result2))
    {
        echo "<br>image: " . $val2['picture'] . " " . $i;
        $i++;
    }
}
Affiche:

image: picture 1

alors que ça devrait afficher:

image: th_1107.gif 1

Est-ce que ça te serait utile de voir la page en fonction ?

par Cyrano » 10 juin 2005, 21:15

Alors fais comme ça
if(mysql_num_rows($result2) > 0)
{
    $i = 1;
    while($val2    = mysql_fetch_array($result2))
    {
        echo "<br>image: " . $val2['picture'] . " " . $i;
        $i++;
    }
}

par PhilFree » 10 juin 2005, 21:07

Je vais essayer, mais il y a unicité de l'image pour un produit donné.

Donc je dois toujours avoir

mysql_numrows($result2) qui vaut 1 ou zéro si l'image n'existe pas.

par Cyrano » 10 juin 2005, 21:00

Remplace donc ceci:
$val2	= mysql_fetch_array($result2);
$image	= $val2["picture"];
echo "<br>image: " . $image . " " . mysql_numrows($result2);
Par celà:
$i = 1;
while($val2    = mysql_fetch_array($result2))
{
    echo "<br>image: " . $val2['picture'] . " " . $i;
    $i++;
}
En plus, si tu as plusieurs images correspondant à la requête, elles seront toutes affichées.

par PhilFree » 10 juin 2005, 20:54

J'aimerais que ça affiche:

image: th_1107.gif 1

Voici le code:
$query   = "SELECT * FROM dl WHERE `nom` LIKE '".$_POST['nom']."%' AND `langue` LIKE '".$_POST['langue']."' ORDER BY 'nom' ASC";
$result  = mysql_query($query);
$nbrfich = mysql_numrows($result);

$query2	= "SELECT 'picture' FROM models WHERE `model` = '" . $_POST['nom'] .  "'";
$result2= mysql_query($query2);			 						
$val2	= mysql_fetch_array($result2);
$image	= $val2["picture"];
echo "<br>image: " . $image . " " . mysql_numrows($result2);